ClsRuby 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. data/LICENSE +26 -0
  2. data/README +55 -0
  3. data/THANKS +0 -0
  4. data/docs/base_formatting_methods +89 -0
  5. data/docs/base_parsing_methods +79 -0
  6. data/docs/constructor_params +131 -0
  7. data/docs/examples/log_single_line_format +3 -0
  8. data/docs/examples/service_description +3 -0
  9. data/docs/examples/sms-hist +3 -0
  10. data/docs/examples/tag_any +3 -0
  11. data/docs/fragments/custom_tag_field.rb +20 -0
  12. data/docs/fragments/custom_tag_include.rb +21 -0
  13. data/docs/fragments/field.cls +2 -0
  14. data/docs/fragments/include.cls +4 -0
  15. data/docs/fragments/inherit_tag_params.rb +21 -0
  16. data/docs/fragments/message.cls +6 -0
  17. data/docs/fragments/tag_field.rb +24 -0
  18. data/docs/fragments/tag_message.rb +74 -0
  19. data/docs/fragments/tags_order.rb +41 -0
  20. data/docs/principles +402 -0
  21. data/docs/std_tags_short_description +278 -0
  22. data/docs/syntax +227 -0
  23. data/docs/why_cls +178 -0
  24. data/examples/hex_stream.txt +1 -0
  25. data/examples/log_single_line_formatter.rb +79 -0
  26. data/examples/service_description.day_time.cfg +11 -0
  27. data/examples/service_description.rb +119 -0
  28. data/examples/sms-hist.rb +164 -0
  29. data/examples/space_concat.txt +3 -0
  30. data/examples/tag_any.rb +28 -0
  31. data/lib/cls-ruby/basic_scalars.rb +270 -0
  32. data/lib/cls-ruby/constraints/one_of.rb +36 -0
  33. data/lib/cls-ruby/default_formatter.rb +50 -0
  34. data/lib/cls-ruby/ex.rb +121 -0
  35. data/lib/cls-ruby/formatter.rb +31 -0
  36. data/lib/cls-ruby/lexers/char_classifier.rb +157 -0
  37. data/lib/cls-ruby/lexers/first_stage.rb +112 -0
  38. data/lib/cls-ruby/lexers/lexer.rb +74 -0
  39. data/lib/cls-ruby/oneline_formatter.rb +35 -0
  40. data/lib/cls-ruby/parser.rb +249 -0
  41. data/lib/cls-ruby/tag.rb +428 -0
  42. data/lib/cls-ruby/tag_any.rb +111 -0
  43. data/lib/cls-ruby/tag_no_value.rb +55 -0
  44. data/lib/cls-ruby/tag_scalar.rb +197 -0
  45. data/lib/cls-ruby/tag_scalar_helpers.rb +70 -0
  46. data/lib/cls-ruby/tag_scalar_vector.rb +148 -0
  47. data/lib/cls-ruby/tag_vector_of_different_tags.rb +172 -0
  48. data/lib/cls-ruby/tag_vector_of_tags.rb +116 -0
  49. data/lib/cls-ruby/vector_of_tags_impl.rb +129 -0
  50. data/lib/cls-ruby.rb +5 -0
  51. data/tests/tc_child_tag.rb +51 -0
  52. data/tests/tc_constraint_one_of.rb +47 -0
  53. data/tests/tc_format_helper.rb +27 -0
  54. data/tests/tc_formatters.rb +125 -0
  55. data/tests/tc_lexer.rb +124 -0
  56. data/tests/tc_lexer_char_classifier.rb +121 -0
  57. data/tests/tc_lexer_first_stage.rb +72 -0
  58. data/tests/tc_parser_simple.rb +93 -0
  59. data/tests/tc_scalar_parsers.rb +189 -0
  60. data/tests/tc_tag.rb +68 -0
  61. data/tests/tc_tag_no_value.rb +46 -0
  62. data/tests/tc_tag_scalar_int.rb +83 -0
  63. data/tests/tc_tag_scalar_nonspace_string.rb +46 -0
  64. data/tests/tc_tag_scalar_string.rb +47 -0
  65. data/tests/tc_tag_scalar_vector_int.rb +88 -0
  66. data/tests/tc_tag_scalar_vector_string.rb +48 -0
  67. data/tests/tc_tag_scalar_vector_string_empty.rb +40 -0
  68. data/tests/tc_tag_vector_of_different_tags.rb +109 -0
  69. data/tests/tc_tag_vector_of_tags.rb +103 -0
  70. data/tests/ts_cls_ruby.rb +7 -0
  71. metadata +140 -0
@@ -0,0 +1,278 @@
1
+ = �������� ������ � Cls. ������� �������� ������ ����� ClsRuby
2
+
3
+ ����� ����� ������� ������� ���� ������� �������������� ������� ����� ClsRuby
4
+ ��� ����, ����� �������� ��� ����� ��������� �������� ������������ ��� ���
5
+ ���� ���. ��� ��������� ���������� �������� ������� ����� � �� ������� �������
6
+ ���������� � ��������������� �������� ������������.
7
+
8
+ == ClsRuby::Tag
9
+
10
+ ����� ClsRuby::Tag �������� ������� ������� ��� ���� �����. �� �� ������������
11
+ ��� ����������������� �������������, �.�. � ����� ������� tag_on_tok_nonspace
12
+ � tag_on_tok_string ��������� ���������� ClsRuby::UnexpectedTokenEx.
13
+
14
+ ������, ����� ClsRuby::Tag ����� �������������� � �������� �������� ������ ���
15
+ �������� ����������� ����� � ������������� �������, ����� �� ���� �� �������
16
+ ����� ClsRuby �� �������� �� �����-���� ��������.
17
+
18
+ == ClsRuby::TagAny
19
+
20
+ ����� ClsRuby::TagAny ������������ ��� ������, ����� ����� ��������� �������
21
+ �����, ��������� �������� ������� ����������. ������������� ClsRuby::TagAny �
22
+ ���-�� ������ �� ������ XML � ������� DOM-�������� -- ������� ����������
23
+ �������� ������ ������������� � ������ �������� � ������, � �����
24
+ �������������� ����� � ��������� ����� DOM-������.
25
+
26
+ ����� ClsRuby::TagAny �������� ����� �� �������� ����� ������������ �����
27
+ ClsRuby. ��� ����������� ���, ��� � ����������� ������� ��������� ��������
28
+ ������ ��������. ������� �����, � ����� � �����, ������� �������� �����,
29
+ ������� ����� �������� �� ������� �������� ������, �������� �����������
30
+ ��������, ������������ ������ ���������� �������� ������. � ���� �������
31
+ ClsRuby::TagAny ����������� ����������������.
32
+
33
+ ������������� � ClsRuby::TagAny ���������, ��������, ����� ���������
34
+ ������������ ����������� ������� ���������� �������� ������. ������, ClsRuby
35
+ ������������ ��� ������ ������� ����� ����� ������������. ����������-������
36
+ ���������� � ����������-������� � ��������� ����:
37
+ {request
38
+ {name <str> }
39
+ {params ... }
40
+ {extension ... }
41
+ }
42
+ ��� ��� {params} ������ ���������, � ��� ��� {extension} ����� ���������
43
+ ������������ ���������. ��� ����, ����� ���������� ������ ����� ���������
44
+ ����� ������, ��� ���� {extension} ����� ��������������� ClsRuby::TagAny:
45
+ class TagRequest < ClsRuby::TagNoValue
46
+ mandatory_child_tag :name, ClsRuby::TagStringScalar
47
+ mandatory_child_tag :params, TagRequestParams
48
+ child_tag :extension, ClsRuby::TagAny
49
+ end
50
+
51
+ == ClsRuby::TagNoValue
52
+
53
+ ����� ClsRuby::TagNoValue �������� ����� �� ����� ������������������ �����
54
+ ClsRuby. �������� ��� ������ -- ���� ����������� ��� ����������� �����.
55
+ ��������, � ����� ��������:
56
+ {project
57
+ {name <str> }
58
+ {location <str> }
59
+ {files <str>* }
60
+ {resources <str>* }
61
+ }
62
+ ����� ��� {project} �� ����� ����������� �������� :nonspace � :string, ����
63
+ ������� ������������ ������ {name}, {location}, {files} � {resources}. ���
64
+ ������������� ���� {project} � ��������� ������� ��������������� �����
65
+ ClsRuby::TagNoValue:
66
+ class TagProject < ClsRuby::TagNoValue
67
+ mandatory_child_tag :name, ClsRuby::TagStringScalar
68
+ ...
69
+ end
70
+
71
+ ��� ���� ���� ClsRuby::TagNoValue -- ��� �������������. �.�. ��� ���� �������
72
+ ��� ���������� ���� �������� ���������� ��������������. ��������:
73
+ {project
74
+ ...
75
+ {use-absolute-path}
76
+ ...
77
+ }
78
+ ��� {use-absolute-path} �� ����� ����������� ��������, �� ���� �� ����� ��
79
+ ������� ������, �� ������� �������, ��� ������� ���������� �������������
80
+ "������������ ���������� ����". � ��������� ��� ����� ���� �������� ���:
81
+ class TagProject < ClsRuby::TagNoValue
82
+ ...
83
+ child_tag :use_absolute_path, ClsRuby::TagNoValue,
84
+ :name => 'use-absolute-path'
85
+ ...
86
+ def value
87
+ r = Project.new ...
88
+ ...
89
+ # ���� ��� 'use-absolute-path' ���������, ������ ����������
90
+ # ������������� �������.
91
+ r.use_absolute_path = @use_absolute_path.tag_defined?
92
+ ...
93
+ end
94
+ end
95
+
96
+ == ClsRuby::TagScalar
97
+
98
+ ����� ClsRuby::TagScalar, ��� �� ��� � ClsRuby::TagNoValue, �������� ����� ��
99
+ ����� ������ ������������ ������� �����. ��� ������ -- ��������� � ���������
100
+ ������������ ��������� �������� ������ ����. �.�. ClsRuby::TagScalar
101
+ ������������ ��� ������� ����� ����:
102
+ {name <str> }
103
+ {location <str> }
104
+ {min <int> }
105
+ {max <int> }
106
+
107
+ ��� ������� ������������ � ������� ��������� :format, ������������� �
108
+ ����������� ����. � ClsRuby ����������� ��������� ������� �������:
109
+ * ClsRuby::SCALAR_INT (�������� �����);
110
+ * ClsRuby::SCALAR_UINT (����������� �����);
111
+ * ClsRuby::SCALAR_FLOAT (������������);
112
+ * ClsRuby::SCALAR_STRING (������ ����������� � ������� �������, ����� :string);
113
+ * ClsRuby::SCALAR_NONSPACE_STRING (������ ��� ��������, ����� :nonspace);
114
+ * ClsRuby::TimeXmlSchemaScalarParser (����/����� � ������� XML Schema).
115
+
116
+ ���� ������� �������� ������������, �� ����� ����������� ����������� �����
117
+ ���������, ��������������� ���������� ClsRuby::ScalarFormat.
118
+
119
+ ����� ClsRuby::TagScalar �������� ��������� ��� �� ������������ �����������
120
+ ��������. ���� � ������������ ����� �������� :constraint, �� ���� ������ �����
121
+ �������������� ��� �������� ������������ ��������. ������ ��� ���������
122
+ :constraint ������ ������������� ���������� ClsRuby::ScalarChecker
123
+ (��������, ������� �������� ����������� ����� Range).
124
+
125
+ ��������, ��� ����, ����� ��������� ���� ����:
126
+ [{hours <unit:1..24>}]
127
+ [{minutes <uint:1..59>}]
128
+ [{seconds <uint:1..59>}]
129
+ ����� ��������������� ��������� ������������:
130
+ class TagTimePeriod < ClsRuby::TagNoValue
131
+ child_tag :hours, ClsRuby::TagScalar,
132
+ :type => ClsRuby::SCALAR_UINT,
133
+ :constraint => 1..24
134
+
135
+ child_tag :minutes, ClsRuby::TagScalar,
136
+ :type => ClsRuby::SCALAR_UINT,
137
+ :constraint => 1...60
138
+
139
+ child_tag :seconds, ClsRuby::TagScalar,
140
+ :type => ClsRuby::SCALAR_UINT,
141
+ :constraint => 1...60
142
+ ...
143
+ end
144
+ ����, ����� �������, ���� ������������ ������� ClsRuby::TagUintScalar:
145
+ class TagTimePeriod < ClsRuby::TagNoValue
146
+ child_tag :hours, ClsRuby::TagUintScalar,
147
+ :constraint => 1..24
148
+
149
+ child_tag :minutes, ClsRuby::TagUintScalar,
150
+ :constraint => 1...60
151
+
152
+ child_tag :seconds, ClsRuby::TagUintScalar,
153
+ :constraint => 1...60
154
+ ...
155
+ end
156
+
157
+ === ClsRuby::TagFloatScalar
158
+
159
+ �������� ��������� ��� ClsRuby::TagScalar � ����� ��������������
160
+ ClsRuby::SCALAR_FLOAT. �.�. ��� ������� ����:
161
+ {min <float> }
162
+ ���������� ������������ �����������:
163
+ child_tag :min, ClsRuby::TagFloatScalar
164
+
165
+ === ClsRuby::TagIntScalar
166
+
167
+ �������� ��������� ��� ClsRuby::TagScalar � ����� ��������������
168
+ ClsRuby::SCALAR_INT. �.�. ��� ������� ����:
169
+ {min <int> }
170
+ ���������� ������������ �����������:
171
+ child_tag :min, ClsRuby::TagIntScalar
172
+
173
+ === ClsRuby::TagUintScalar
174
+
175
+ �������� ��������� ��� ClsRuby::TagScalar � ����� ��������������
176
+ ClsRuby::SCALAR_UINT. �.�. ��� ������� ����:
177
+ {min <uint> }
178
+ ���������� ������������ �����������:
179
+ child_tag :min, ClsRuby::TagUintScalar
180
+
181
+ === ClsRuby::TagStringScalar
182
+
183
+ �������� ��������� ��� ClsRuby::TagScalar � ����� ��������������
184
+ ClsRuby::SCALAR_STRING. �.�. ��� ������� ����:
185
+ {include <str> }
186
+ ���������� ������������ �����������:
187
+ child_tag :include, ClsRuby::TagStringScalar
188
+
189
+ == ClsRuby::TagScalarVector
190
+
191
+ ����� ClsRuby::TagScalarVector ���������� �� ClsRuby::TagScalar ������ ���,
192
+ ��� ��������� ���� � ����������� ��������� � �������� ��������. ��������:
193
+ {include-paths <str> [<str> [<str>...]] }
194
+ {init-bytes <uint> [<uint> [<uint>...]] }
195
+
196
+ ����� ClsRuby::TagScalarVector ���������� �� �� ����� ����� :format �
197
+ :constraint, ��� � ����� ClsRuby::TagScalar.
198
+
199
+ ��������, ��� ����, ����� ��������� ��������� ����:
200
+ {device-init-info
201
+ {devices <nonspace>+ }
202
+ {init-bytes <uint:0..255>+ }
203
+ {shutdown-bytes <uint:0..255>+ }
204
+ }
205
+ ����� ��������������� ������:
206
+ class TagDeviceInitInfo < ClsRuby::TagNoValue
207
+ default_tag_params :name => 'device-init-info'
208
+
209
+ mandatory_child_tag :devices, ClsRuby::TagScalarVector,
210
+ :format => ClsRuby::SCALAR_NONSPACE_STRING
211
+
212
+ mandatory_child_tag :init_bytes, ClsRuby::TagScalarVector,
213
+ :format => ClsRuby::SCALAR_UINT,
214
+ :constraint => 0..255,
215
+ :name => 'init-bytes'
216
+
217
+ mandatory_child_tag :shutdown_bytes, ClsRuby::TagScalarVector,
218
+ :format => ClsRuby::SCALAR_UINT,
219
+ :constraint => 0..255,
220
+ :name => 'shutdown-bytes'
221
+ ...
222
+ end
223
+
224
+ == ClsRuby::TagVectorOfDifferentTags
225
+
226
+ ����� ClsRuby::TagVectorOfDifferentTags ������������ ��� ������, ����� ��
227
+ �������� ������ ����� ������� ������������������ ����� � ������� �������, ��
228
+ ��� ���� ���������� ��������� �� ������� ����������. ��� ���� ���� ����� �����
229
+ ������ ����. ��������, ���� ����� ��������� ����� ������� �����:
230
+ {book
231
+ {part <str>}*
232
+ {chapter <str>}*
233
+ {section <str>}*
234
+ {subsection <str>}*
235
+ {subsubsection <str>}*
236
+ {par <TagParagraph>}*
237
+ {include <TagIncludeFragment>}*
238
+ }
239
+ ��� ���� {part}, {chapter}, {section} � ��. ����� ������������, �� �����
240
+ ��������� �� ������� ���������� ������������ ���� �����. ��� ����� �����
241
+ ��������������� ������������:
242
+ child_tag :book, ClsRuby::TagVectorOfDifferentTags,
243
+ :nested_tags => [
244
+ { :name => 'part', :type => ClsRuby::TagStringScalar },
245
+ { :name => 'chapter', :type => ClsRuby::TagStringScalar },
246
+ { :name => 'section', :type => ClsRuby::TagStringScalar },
247
+ { :name => 'subsection', :type => ClsRuby::TagStringScalar },
248
+ { :name => 'subsubsection', :type => ClsRuby::TagStringScalar },
249
+ { :name => 'par', :type => TagParagraph },
250
+ { :name => 'include', :type => TagIncludeFragment } ]
251
+
252
+ == ClsRuby::TagVectorOfTags
253
+
254
+ ����� ClsRuby::TagVectorOfTags �������� ���������� �������� ����
255
+ TagVectorOfDifferentTags -- �� ��������� ��������� ������������������
256
+ ���������� ����� �� ������� ������ (�.�. ���� ������ ����� ���������� ����� �
257
+ ���� � ��� �� ���). ��������:
258
+ {message
259
+ {name <nonspace> }
260
+ {field {name <str> } {type <str>}}*
261
+ }
262
+ ����������� � ������� �����������:
263
+ class TagField < ClsRuby::TagNoValue
264
+ mandatory_child_tag :name, ClsRuby::TagStringScalar
265
+ mandatory_child_tag :type, ClsRuby::TagStringScalar
266
+ ...
267
+ end
268
+ class TagMessage < ClsRuby::TagNoValue
269
+ mandatory_child_tag :name, ClsRuby::TagScalar,
270
+ :format => ClsRuby::SCALAR_NONSPACE_STRING
271
+
272
+ child_tag :field, ClsRuby::TagVectorOfTags,
273
+ :type => TagField
274
+ ...
275
+ end
276
+
277
+ # vim:ts=2:sts=2:sw=2:expandtab:ft=txt:tw=78
278
+
data/docs/syntax ADDED
@@ -0,0 +1,227 @@
1
+ = ��������� Cls
2
+
3
+ == ������
4
+
5
+ {test-cfg
6
+ {sort on}
7
+ {rewrite off}
8
+ {cfg-file
9
+ {file-name "name-1" }
10
+ {file-type "txt" }
11
+ }
12
+ {cfg-file
13
+ {file-name "name-2" }
14
+ {file-type "gif" }
15
+ }
16
+ {header-file
17
+ {name "name-4" }
18
+ {type "doc" }
19
+ }
20
+ {header-file
21
+ {name "name-3" }
22
+ {type "jpg" }
23
+ }
24
+ }
25
+
26
+ == ������� ��������
27
+
28
+ Cls-�������� ������� �� Cls-�����. ������ ��� ����� ��������� ������ �/���
29
+ �������� ����. ������ ��� ���������� � ����������� �������� ������, �� �������
30
+ ��� �������� ������� �������� ����. �������� ����� �������� �� �����
31
+ ������������ ��������.
32
+
33
+ Cls-�������� ����� ��������� �����������, ������� ��������� ������������ ���
34
+ �������. ���������� ��� ���� �����������:
35
+ - ������������. ���������� � <tt>||</tt> � ����������� � ����� ������;
36
+ - �������������. ���������� � <tt>|#</tt> � ����������� <tt>#|</tt>.
37
+
38
+ ������������� ����������� �� ����� ���� ���������� ���� � �����.
39
+
40
+ ��� �������� ������������� ����������� ���������� �� ���� ���������� ������.
41
+ ������������ ����������� ���������� �� ���� ������ �������� ������.
42
+
43
+ ���������� ���� ���������� ��� ������, ��������� ������ ���� ��� �����
44
+ �������� �����. ����������� ��� ���� �������:
45
+ * :tok_space (�������). �������� ��� ���������� ������� �����
46
+ ����� ��������� ��������. ����������� ��������� ��������: ������ (" "),
47
+ ������� ������ ("\n"), ������� ������� ("\r"), �������������� ���������
48
+ ("\t"). � ������� �� C++��� ������, � ClsRuby � �������� ��������� ��� ��
49
+ � �����������;
50
+ * :tok_nonspace (�� �������). ����������� ������������������
51
+ ��������, �������� �� ��������;
52
+ * :tok_string (������). ������������������ ��������, �����������
53
+ � ������� �������.
54
+
55
+ ������� ����� :tok_nonspace � :tok_string ����������� � ���, ��� ������ ������ �����
56
+ ����������� �������. ������� ������ ������ ����������� ���������� � �������
57
+ ������� � ����������� ������� ��������.
58
+
59
+ ����������� ���� ������ ����� ����������� � ���� ��������� �����������
60
+ ������������������ �������:
61
+ - tag � ������ "test-cfg";
62
+ - :tok_space �� ��������� "\n\t";
63
+ - tag � ������ "sort";
64
+ - :tok_space �� ��������� " ";
65
+ - :tok_nonspace �� ��������� "on";
66
+ - tag � ������ "rewrite";
67
+ - :tok_space �� ��������� " ";
68
+ - :tok_nonspace �� ��������� "off";
69
+ - tag � ������ "cfg-file";
70
+ - :tok_space �� ��������� "\n\t\t";
71
+ - tag � ������ "file-name";
72
+ - :tok_space �� ��������� " ";
73
+ - :tok_string �� ��������� "name-1";
74
+ - :tok_space �� ��������� " ";
75
+ - :tok_space �� ��������� "\n\t\t"
76
+ - tag � ������ "file-type";
77
+ - :tok_space �� ��������� " ";
78
+ - :tok_string �� ��������� "txt";
79
+ - :tok_space �� ��������� " ";
80
+ - :tok_space �� ��������� "\n\t";
81
+ - � �.�.
82
+
83
+ <b>����������</b>. � ������ ����������� �� �������� ������� ����������
84
+ ������� �������� �����.
85
+
86
+ == Escape-������������������
87
+
88
+ ������� {, }, |, \\, " �������� ������������. �������
89
+ �� ������ ������������ ��������������� � ������� :tok_nonspace � :tok_string.
90
+ ��� ������������� ������������� ���� �������� ��������� ������������
91
+ �� � ������� ��������� �����. ��������:
92
+ - \\{;
93
+ - \\};
94
+ - \\|;
95
+ - \\\\;
96
+ - \\".
97
+
98
+ ��� ����, ����� ������� ������� �� ��������� ����� ���� :tok_string ����������
99
+ �������� �� � ���� escape-������������������.
100
+
101
+ <b>����������</b>. ������� ClsRuby �� C++��� ������ cls_2 � �� �������������
102
+ ����� CURL (�� ������� ���� �� �������� ����� 2001-�� ����) ������� � ���, ���
103
+ ������ ������� :tok_string ����������� ������� ��������� escape-������������������
104
+ ������ ��� �������� \\ � ", ��������� ������� ������ ������ :tok_string ������ ����
105
+ ����������� ��������. �.�. � ClsRuby ���������, ��������, �����
106
+ ������������������:
107
+ {some_tag "{}|" }
108
+ � �� �� �����, ��� cls_2 ����� ������������������ ������ ���� �������� ��:
109
+ {some_tag "\{\}\|" }
110
+ ��� ���������� ������������������� � cls_2 ClsRuby ������������ ��� �����
111
+ ������, ������ ��� �������������� � �������� ����� ����������� ������ ����� (�
112
+ �������������� escap-����� ���� ����������� �������� ���� ������ �������
113
+ :tok_string).
114
+
115
+ ��� ������ ������ ������� ����� ������������ ������������� ��������
116
+ ���� �������, �������������� � ����� �� ������ ���������:
117
+ - ��������. ������������� ������ ���������� � �������� \\b ��� \\B, �� �������
118
+ ������ ��������� ������ �������� ��������. ��������, \\b01000001;
119
+ - ������������. ������������� ������ ���������� � �������� \\o ��� \\O, ��
120
+ ������� ������ ��������� ��� ������������ �������. ��������, \\o017;
121
+ - �����������������. ������������� ������ ���������� � �������� \\x ��� \\X,
122
+ �� ������� ������ ��������� ��� ����������������� �������. ��������, \\xfb.
123
+
124
+ ��� �� �������������� ��������� escape-������������������:
125
+ - \\n -- ������� ������;
126
+ - \\r -- ������� �������;
127
+ - \\t -- �������������� ���������.
128
+
129
+ == ������ ������� �������� ������
130
+
131
+ �� ����� �������� �������� Cls ������ ����������� ��������� ������ �������
132
+ ������� ��������.
133
+
134
+ �� ������ ������ ����������� ������ ���� �������� escape-�������������������
135
+ (��������, ������������ ��� ����������������� ������������� ��������). � ����
136
+ ����� ����������� ������ ������ -- ������ ������� ������������ ��������
137
+ ������� � ��������� �������. ��� ��������, ��� ������������������:
138
+ {a "b"}
139
+ ����� ���� ������ �� ���� ������� ���:
140
+ \x7b\x61\x20\x22\x62\x22\x7d
141
+
142
+ �� ������� ������ ��������������� ������ ���������� ������ ������������ � ����
143
+ ����� � ���������������� ���������. ��������, ���� ����:
144
+ {a
145
+ || �� ��� ���������.
146
+ {href "reference"}}
147
+ �� ������������������ �������� � ����������� ����� ���� <tt>a</tt> �����
148
+ ��������� � ���� ����� :tok_space �� ���������
149
+ <tt>"\n || �� ��� ���������.\n "</tt>.
150
+
151
+ = �������
152
+
153
+ ��� �������� �������� ���������� ����� ���� ���������� ��������� �������.
154
+
155
+ ���� ����������� ���, ��� ��� ������ ���� �� ������� ������. ��������:
156
+
157
+ {logging_params
158
+ {use_stderr}
159
+ {flush_each_line}
160
+ }
161
+
162
+ ���� ��� ��������� � �����-�� ��������, �� ��� �������� ����������� � �������
163
+ �������:
164
+
165
+ {connection_params
166
+ {ip <nonspace>}
167
+ {reconnect_timeout <uint>}
168
+ {user <str>}
169
+ {password <str>}
170
+ }
171
+
172
+ � ������ ������� ��� {ip} ������� �������� � ���� ������ ������ :tok_nonspace.
173
+ ��� {reconnect_timeout} -- � ���� ������ ������ :tok_nonspace, ������� ������
174
+ ������������ �� ���� ����������� ����� �����. ���� {user} � {password} �������
175
+ �� ������ �������� � ���� ������ :tok_string.
176
+
177
+ ���� �� �����-�� �������� ������������� �����-�� �����������, �� ���
178
+ ����������� ����������� ����� ���� ��������:
179
+
180
+ {connection_params
181
+ {ip <nonspace>}
182
+ {reconnect_timeout <uint:1..600>}
183
+ {mode <str:(guest|admin|user)>}
184
+ }
185
+
186
+ �.�. {reconnect_timeout} ������ �������� �������� � ��������� �� 1 �� 600, �
187
+ {mode} ����� ��������� ����� ���� �� ��������: guest, admin ��� user.
188
+
189
+ ���� ��� ������� �����-�� ����� ������� �������� (��������, ������������
190
+ ������� ��� � ���� ������������ ����), �� � ������� ������� ����������� ���
191
+ ������ (����� �����), ������� �������� ���������� ��� ��������. ��������:
192
+ {start_at <TimeXmlSchema>}
193
+ �������������, ��� {start_at} ������� ��������, ��� �������� ��������
194
+ ����������� ������ ������ ClsRuby::TimeXmlSchemaScalarParser.
195
+
196
+ ���� ����� ������� ���������������� ������-�� ���� ��� ��������, �� ����
197
+ ���/�������� ����� ��������� � ���������� ������:
198
+ {logging_params
199
+ [{use_stderr}]
200
+ [{file [<str>]}]
201
+ }
202
+ �.�. ���� {use_stderr} � {file} ����� ���� ������� � ��� �� �����
203
+ �������������� ��� ������. ����� ����, ��� {file} ����� ���������
204
+ �������������� �������� � ���� ������ :tok_string.
205
+
206
+ ���� �����-�� ���/�������� ����� ����������� ��������� ���, �� ����� ��������
207
+ ���� ���/��������
208
+ *(���� ��� ����� ���) ��� +(���� ��� ����� ���):
209
+ {service
210
+ {ips <nonspace>+ }
211
+ {message
212
+ {field {name <str>} {type <nonspace>}}*
213
+ }*
214
+ }
215
+ �.�. ��� {ips} ����� ��������� ����� ������ �������� (�� ���� �� ���� ��������
216
+ ������ ���� ������ �����������), � ���� {message} � {message {field}} �����
217
+ ������ �� ����������� ��� ����������� ������������ ���������� ���.
218
+
219
+ == ���������� �� ������ �������
220
+
221
+ ��������� ���� ������� �� �������� ������������ � ������������� -- ��� �����
222
+ ���� �������� ������������ �����. �������, �� ����� �� ������������, ���� ���
223
+ ������� ��������� ��� ������������ ������/����������.
224
+
225
+
226
+ # vim:ts=2:sts=2:sw=2:expandtab:ft=txt:tw=78
227
+