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.
- data/LICENSE +26 -0
- data/README +55 -0
- data/THANKS +0 -0
- data/docs/base_formatting_methods +89 -0
- data/docs/base_parsing_methods +79 -0
- data/docs/constructor_params +131 -0
- data/docs/examples/log_single_line_format +3 -0
- data/docs/examples/service_description +3 -0
- data/docs/examples/sms-hist +3 -0
- data/docs/examples/tag_any +3 -0
- data/docs/fragments/custom_tag_field.rb +20 -0
- data/docs/fragments/custom_tag_include.rb +21 -0
- data/docs/fragments/field.cls +2 -0
- data/docs/fragments/include.cls +4 -0
- data/docs/fragments/inherit_tag_params.rb +21 -0
- data/docs/fragments/message.cls +6 -0
- data/docs/fragments/tag_field.rb +24 -0
- data/docs/fragments/tag_message.rb +74 -0
- data/docs/fragments/tags_order.rb +41 -0
- data/docs/principles +402 -0
- data/docs/std_tags_short_description +278 -0
- data/docs/syntax +227 -0
- data/docs/why_cls +178 -0
- data/examples/hex_stream.txt +1 -0
- data/examples/log_single_line_formatter.rb +79 -0
- data/examples/service_description.day_time.cfg +11 -0
- data/examples/service_description.rb +119 -0
- data/examples/sms-hist.rb +164 -0
- data/examples/space_concat.txt +3 -0
- data/examples/tag_any.rb +28 -0
- data/lib/cls-ruby/basic_scalars.rb +270 -0
- data/lib/cls-ruby/constraints/one_of.rb +36 -0
- data/lib/cls-ruby/default_formatter.rb +50 -0
- data/lib/cls-ruby/ex.rb +121 -0
- data/lib/cls-ruby/formatter.rb +31 -0
- data/lib/cls-ruby/lexers/char_classifier.rb +157 -0
- data/lib/cls-ruby/lexers/first_stage.rb +112 -0
- data/lib/cls-ruby/lexers/lexer.rb +74 -0
- data/lib/cls-ruby/oneline_formatter.rb +35 -0
- data/lib/cls-ruby/parser.rb +249 -0
- data/lib/cls-ruby/tag.rb +428 -0
- data/lib/cls-ruby/tag_any.rb +111 -0
- data/lib/cls-ruby/tag_no_value.rb +55 -0
- data/lib/cls-ruby/tag_scalar.rb +197 -0
- data/lib/cls-ruby/tag_scalar_helpers.rb +70 -0
- data/lib/cls-ruby/tag_scalar_vector.rb +148 -0
- data/lib/cls-ruby/tag_vector_of_different_tags.rb +172 -0
- data/lib/cls-ruby/tag_vector_of_tags.rb +116 -0
- data/lib/cls-ruby/vector_of_tags_impl.rb +129 -0
- data/lib/cls-ruby.rb +5 -0
- data/tests/tc_child_tag.rb +51 -0
- data/tests/tc_constraint_one_of.rb +47 -0
- data/tests/tc_format_helper.rb +27 -0
- data/tests/tc_formatters.rb +125 -0
- data/tests/tc_lexer.rb +124 -0
- data/tests/tc_lexer_char_classifier.rb +121 -0
- data/tests/tc_lexer_first_stage.rb +72 -0
- data/tests/tc_parser_simple.rb +93 -0
- data/tests/tc_scalar_parsers.rb +189 -0
- data/tests/tc_tag.rb +68 -0
- data/tests/tc_tag_no_value.rb +46 -0
- data/tests/tc_tag_scalar_int.rb +83 -0
- data/tests/tc_tag_scalar_nonspace_string.rb +46 -0
- data/tests/tc_tag_scalar_string.rb +47 -0
- data/tests/tc_tag_scalar_vector_int.rb +88 -0
- data/tests/tc_tag_scalar_vector_string.rb +48 -0
- data/tests/tc_tag_scalar_vector_string_empty.rb +40 -0
- data/tests/tc_tag_vector_of_different_tags.rb +109 -0
- data/tests/tc_tag_vector_of_tags.rb +103 -0
- data/tests/ts_cls_ruby.rb +7 -0
- 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
|
+
|