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
data/docs/principles ADDED
@@ -0,0 +1,402 @@
1
+ = �������� ������ � Cls. ��������.
2
+
3
+ == �������� �� ������� ������� Cls ��������
4
+
5
+ Cls-��������� ������� ����� �� ���� ������ ��������� -- ����� � ��������:
6
+
7
+ || ��� ���
8
+ {tag_name
9
+ || ��� �������� ���� nonspace (:tok_nonspace)
10
+ nonspace-value
11
+ || ��� �������� ���� string (:tok_string)
12
+ "string-value"
13
+ }
14
+
15
+ �������� ������� �� ��� ����: nonspace, ������� �� ����� ��������� � ����
16
+ ���������� ��������, � string (������� ����������� � ������� ������� � �����
17
+ ��������� �������). �������� ������ ����� � ���� ����� ��
18
+ ���������, �.�. ����� � ���� ����� ���� ������ �������� nonspace, ���� ������
19
+ �������� string.
20
+
21
+ ��� ����� ����� ���� ���� ��������:
22
+ {name "my name" }
23
+ ���� ��������� ��������:
24
+ {names "first" "second" ... "last" }
25
+
26
+ ������� � ����������� (������� �������������� � ��������) ��� �� ��������
27
+ ����������, �� ������ ��� �� ������������.
28
+
29
+ == ���������������� ���������� � ���� Cls ���������
30
+
31
+ �����������, ��� ����� ����������� � ���� Cls ��������� �������� ���������
32
+ ������� ������ (��. ������
33
+ {service_description}[link://files/docs/examples/service_description.html]).
34
+ ������ ����������� ������, ������� IP-�������, ������� ��� ����� ������������,
35
+ � ���������� ���������, ������� ��� �������� ������������. ������ ���������
36
+ ����� ��� � ����� �����, ��� � ������� ���� ���� ����������� ��� � ��� ����,
37
+ �������� �������� ����� ��������� � ���� ����.
38
+
39
+ ����� ������ ������ ��������� ��� {service}:
40
+ {service ...}
41
+ �������� ���� �������� ����� ��������� ��������� ������ ��������.
42
+
43
+ ��� ������ ����� ����������� ����� {name}, � ������� ����������� ������������
44
+ �������� ���� string (� ��� ������ ����� ������� �������):
45
+ {name <str> }
46
+
47
+ IP-������ ����� �������� ����� ���������. ��-������, � ���� ���������� ����
48
+ {ip} �� ������ IP-�����. ��-������, � ���� ������ ���� {ips}, � ������� �����
49
+ ��������� �������� -- ��� ����������� ������ ������. ����� ������������ ���
50
+ {ips} � ����������� ���������� ���� nonspace (��������� � IP ������� �� ������
51
+ ���� ��������, �� ���������� ����� nonspace):
52
+ {ips <nonspace>+ }
53
+
54
+ ������ ��������� ����������� ��������� ����� {message} ������� �����
55
+ ��������� ���� �������� ���� nonspace -- ��� ��������� (��������� ���
56
+ �������������, � ������� �������� �� ����� ����) � �������������� ���� {field}
57
+ ��� �������� ����� ���������:
58
+ {message <nonspace> {field ...}* }
59
+ ��� {field} � ���� ������� ����� ����� �������� ���� {name} � {type}:
60
+ {field {name <str>} {type <nonspace>}}
61
+
62
+ � ���������� ���������� ���������:
63
+ {service
64
+ {name <str> }
65
+ {ips <nonspace>+ }
66
+ {message <nonspace>
67
+ {field
68
+ {name <str> }
69
+ {type <nonspace }
70
+ }*
71
+ }*
72
+ }
73
+ ��������, ��������� �������� ������������� ���� ���������:
74
+ {service
75
+ {name "Remote Service Manager" }
76
+ {ips 0.0.0.0:3333 localhost:4444 }
77
+ {message GetServicesList}
78
+ {message StartService
79
+ {field {name "service"} {type String}}
80
+ {field {name "mode"} {type StartMode}}
81
+ }
82
+ {message StopService
83
+ {field {name "service"} {type String}}
84
+ }
85
+ }
86
+ {service
87
+ {name "Test Service" }
88
+ {ips localhost:5000 }
89
+ }
90
+
91
+ == �������� ������� �������� Cls ���������
92
+
93
+ ������� �������� ������ �������� �� ���, ��� ������� ���� �� ������� ������
94
+ ������������� ������-����������, ����������� �� ���� ClsRuby::Tag. �������
95
+ (ClsRuby#parse_io, ClsRuby#parse_string, ClsRuby#parse_file) �������� �����
96
+ ��������-������������ �������� ������ -- ��������������� �� ���� ��������
97
+ ������ ���������������� ������ �������� ������ (�.�. � ��� ��� ���������).
98
+
99
+ ����� ������ ������� �� ������� ������ ��� ����, �� ������������� ���
100
+ ��������� ��� ����������� � ���� ���� �����������, ������� �������� ����������
101
+ ��������� ��� (��� ����� ������������ ClsRuby::Tag#tag_compare_name). ����
102
+ ���������� ������, ��:
103
+ * ��� ����� ����������� ���������� ����� ClsRuby::Tag#tag_on_start;
104
+ * ���� ���������� ���������� ������� ���������� ��������.
105
+ ���� ���������� �� ������, �� ����������� ������ (����������� ����������
106
+ ClsRuby::ParsingErrorEx).
107
+
108
+ ����� ������ ��������� ������� ����� ��������� �������� ��� � ��������
109
+ �������� ���������. ����� ������ ������� �� ������� ������ �����
110
+ :tok_nonspace, �� �������, ��� ������� �������� ���� nonspace � �������� ���
111
+ �������� ��������� ����� ClsRuby::Tag#tag_on_tok_nonspace. ���� ������ �������
112
+ ����� :tok_string, �� ��� �������� ��������� ���������� �����
113
+ ClsRuby#tag_on_tok_string. ��������������, ���������� ����� ������������ ���
114
+ ������ ��� ����, �����:
115
+ * ��������� �������� �� ������������;
116
+ * ��������� ���������� ��������;
117
+ * ��������� �����-�� ������ ��������.
118
+
119
+ ���� ������ ������������ ��� ����, �� ����������� � �������� ��������� ������
120
+ �������� ����� (ClsRuby::Tag#tag_tags) � ���� ����� ��� ���������� ���
121
+ ��������� ���� (����������� ClsRuby::Tag#tag_compare_name). ���� ����������
122
+ ������, ��:
123
+ * ��� ����� ����������� ���������� ����� ClsRuby::Tag#tag_on_start;
124
+ * ������� �������� ����������� � ����� �������;
125
+ * �������� ���������� ���������� ������� ���������� �������.
126
+
127
+ � �.�. �� ��� ���, ���� ������ �� ������ ����������� �������� ������, �������
128
+ �������� ���������� �������� ����. ����� ������:
129
+ * ��� �������� ��������� �������� ����� ClsRuby::Tag#tag_on_finsh;
130
+ * ��������� �� ����� ���������� ������� �������� � ��������������� ��� �
131
+ �������� �������� ���������;
132
+ * ��� ���������������� �������� ��������� �������� �����
133
+ ClsRuby::Tag#tag_on_tag.
134
+
135
+ ����� ������� ������������ �� ��� ���, ���� ������ �� �������� ����������
136
+ �������� ������. ��� ���� ������ ���������, ��� ���� ���������� ���� �
137
+ �������� ��������� ��� (�.�. ���������� ����������� �������� ������ ������
138
+ �������� � ����������� ����������� �������� ������).
139
+
140
+ ����� ��� ���� ���������� ����� tag_on_finish, �� ���������, ��� ��� ����
141
+ <i>������������</i> -- �.�. ������������ �������, ��� ��� ���������� ��
142
+ ������� ������ ���� �� ���� ���. ���������, ��� ��� ��� ��������� ����� �
143
+ ������� ������ ClsRuby::Tag#tag_defined?, ����� ClsRuby::Tag#tag_make_defined
144
+ ������������ ��� ����, ����� ������� ����, ��� �� ��������� (��� ����� ���
145
+ ����, ����� ��� ��� ��������� �������������� � �������� �����).
146
+
147
+ ���� ������� �� ������������ (mandatory) � �������������� (optional). ���� ���
148
+ �������� ������������ (�.�. ��� ����� ClsRuby::Tag#tag_mandatory? ����������
149
+ true), �� � ��������� ������� ���������������� ��������� ���� ��� ������ ����
150
+ ��������� (�.�. ��� ����� ClsRuby::Tag#tag_defined? ������ ���������� true).
151
+ ����� ������ ������������ ���������� �������� ���� (�.�. ��� ���������� ��
152
+ ������� ������ ����������� �������� ������) �� ������������� ��� �������� ����
153
+ ������������ ����. ���� ����� ��� ���� ������������ ����, ������� �� ����
154
+ ����������, �� ������ ���������� ������ �������� ����������. �����������
155
+ �������� ������ ������ ��� ���������� �������� ������.
156
+
157
+ = ��������� �������� ���������� ����������� ��������
158
+
159
+ ��� ���� �������� ����, ��� ������� Cls-���������� ����������
160
+ ����������� ����� ��������, �������������� �� ������ ClsRuby::Tag. ClsRuby
161
+ ������������� ��������� ������� ������� �����, ������� ��������� ���������
162
+ ������� ���������� ������� Cls-���������� ��� �������� ������������ �������
163
+ �����.
164
+
165
+ �� ������ ����������� � ���, ��� � ��� ��������� ����������� �� Cls-���������
166
+ ��������. ����� �������� ��������� ��������.
167
+
168
+ == �������� ����������� ����� ��� ���������� �������� ����-������
169
+
170
+ ����� ����������� ����������� ����������� ������ ClsRuby::Tag �����
171
+ �������, ����� � ������� Tag#tag_on_finish, Tag#tag_on_tok_nonspace �
172
+ Tag#tag_on_tok_string ��������� ����������� �������� � �����-�� �������.
173
+ ��������, ���� ���������� �������� ������ ������, �������� ������:
174
+ {include <str>}+
175
+ �� ����� ������� ����������� ���:
176
+ :include: docs/fragments/custom_tag_include.rb
177
+ ������, ����� ���� �� ����� ������. ��������� ��������� ������ �����������
178
+ ����, � ������� �� �� �������������. ���, ������ ���������� ���� TagInclude ��
179
+ ��������� ��-�� ����, ��� ��� ��������� ��������� ��������� �������� � ����
180
+ {include} � �� �������� �� ������� � ������ ����������� nonspace ��������.
181
+ �������� ����� ���������� ���������� ������� ������ �������� � ����������
182
+ ���������������� ��� ������������� ������ ClsRuby::TagStringScalar.
183
+
184
+ == ������������� ����� ClsRuby ��� �������� ��������
185
+
186
+ ����� ������������ ������� ���� ClsRuby � ��� �������� � ��� ��������
187
+ ��������. ��������, �����������:
188
+ {field {name <str>} {type <nonspace>}}
189
+ ����� ����������� � ���� ���������� ������ TagField:
190
+ :include: docs/fragments/custom_tag_field.rb
191
+
192
+ ������ ������ ����� ��������������, ��� ����������, �� ��� ��� �������������
193
+ ����� ������������� �������� ������������� ������� getter-�� ��� �������
194
+ ����������� �����. ����� ����, ���������� ������������ ���������� ����������
195
+ (�.�. �������� �� Cls-���������) � ������� �� �������� -- ��-�� ����, ���
196
+ ����� ��� �������� ���������� �� ���� {field} ����������� ����������� ��
197
+ ClsRuby::TagNoValue.
198
+
199
+ == �������� ������������ �������� �������
200
+
201
+ ������������� Cls-������� � C++ ��������, ��� ������� ��������� ��� ��������
202
+ �������. ���� ������������ ��� �������� ���������� ����������, � ������ -- ���
203
+ �������� Cls-����������.
204
+
205
+ ���, ����� ������� ��������� Field, ������� ����� ������� ���������� �� ����
206
+ {field}:
207
+ Field = Struct.new( :name, :type )
208
+ � ����� ��� TagField, ������� ����� �������� �� ������� ���� {field} �
209
+ ������������ ������� ���� Field:
210
+ :include: docs/fragments/tag_field.rb
211
+
212
+ ������ ������ ������ ���, ��� ���������� ������ ���������� �� ���������������
213
+ ������� �����. �������, ��� ������������� ����� ������ ��������� Cls ���������
214
+ ��� ���� ���������� �� ������������� Cls � ������ XML, YAML ��� JSON, �� ����
215
+ ���������� ������ �� ���������.
216
+
217
+ ��� �� ����� ������ ������ ��� ������������� ���������� ���������� � Cls
218
+ ������. � ���� ������ ����������� ��������� ������ �������� � ����������
219
+ �������, � ��������������� ������ ���� �������� �� ���� ������ ��������������
220
+ ���������� ���������� � Cls-������.
221
+
222
+ ��������, ���� ��������� �������� � ��������:
223
+ {message {field ...}* }
224
+ �� ��� ����� ��������� ��������� �������:
225
+ :include: docs/fragments/tag_message.rb
226
+
227
+ === ����� ����� ��������� ����������� ������ �����
228
+
229
+ ������� ������� -- ��������� �������������. ����� ��� �������� � ����
230
+ ������������ ������ ��� ����� ������������ ��������. ���, ��������, �����
231
+ ����, ������� ��������� �������� ��������� ���������� �� ����� �����. � ���
232
+ ������� ����� ����� ��������� ���������� �����, ����� � ������. ������ ����:
233
+ {<name>
234
+ [{hours <unit:1..24>}]
235
+ [{minutes <uint:1..59>}]
236
+ [{seconds <uint:1..59>}]
237
+ }
238
+ � ��� ����������:
239
+ class TagTimePeriod < ClsRuby::TagNoValue
240
+ child_tag :hours, ClsRuby::TagUintScalar,
241
+ :constraint => 1..24
242
+
243
+ child_tag :minutes, ClsRuby::TagUintScalar,
244
+ :constraint => 1...60
245
+
246
+ child_tag :seconds, ClsRuby::TagUintScalar,
247
+ :constraint => 1...60
248
+
249
+ # ���� ����� ���� :value, �� ����� ������ ��� �����������,
250
+ # ���������� ��� ��������. ��� ���� ���������, ��� ������
251
+ # �������� � ��������.
252
+ def initialize( params = {} )
253
+ super( params )
254
+
255
+ tag_handle_opt_param( :value ) do |v| self.value = v end
256
+ end
257
+
258
+ def tag_on_finish
259
+ super
260
+
261
+ fail 'at least one tag ({hours}/{minutes}/{seconds}) ' +
262
+ "must be defined for {#{tag_name}}" unless
263
+ @hours.tag_defined? ||
264
+ @minutes.tag_defined? ||
265
+ @seconds.tag_defined?
266
+ end
267
+
268
+ def value
269
+ @hours.fetch( 0 ) * 3600 + @minutes.fetch( 0 ) * 60 + @seconds.fetch( 0 )
270
+ end
271
+
272
+ def value=( seconds )
273
+ tag_reset
274
+
275
+ h = seconds / 3600; seconds %= 3600
276
+ @hours.value = h if 0 != h
277
+
278
+ m = seconds / 60; seconds %= 60
279
+ @minutes.value = m if 0 != m
280
+
281
+ @seconds.value = seconds if 0 != seconds
282
+
283
+ tag_make_defined if @hours.tag_defined? || @minutes.tag_defined? ||
284
+ @seconds.tag_defined?
285
+ end
286
+ end
287
+
288
+ ���� ��� ����� �������������� � ������ ����������. ��������:
289
+ {service
290
+ {config-reload-period <TagTimePeriod> }
291
+ {channel-params
292
+ {ping-timeout <TagTimePeriod> }
293
+ ...
294
+ }
295
+ {request-processing
296
+ {max-wait-time <TagTimePeriod> }
297
+ ...
298
+ }
299
+ }
300
+ ���� {config-reload-period}, {ping-timeout} � {max-wait-time} ����� ����
301
+ ����������� � ������� TagTimePeriod:
302
+ class TagChannelParams < ClsRuby::TagNoValue
303
+ mandatory_child_tag :ping_timeout, TagTimePeriod,
304
+ :name => 'ping-timeout'
305
+ ...
306
+ end
307
+ class TagRequestProcessing < ClsRuby::TagNoValue
308
+ mandatory_child_tag :max_wait_time, TagTimePeriod,
309
+ :name => 'max-wait-time'
310
+ ...
311
+ end
312
+ class TagService < ClsRuby::TagNoValue
313
+ mandatory_child_tag :config_reload_period, TagTimePeriod,
314
+ :name => 'config-reload-period'
315
+ mandatory_child_tag :channel_params, TagChannelParams,
316
+ :name => 'channel-params'
317
+ mandatory_child_tag :requiest_processing, TagRequestProcessing,
318
+ :name => 'request-processing'
319
+ ...
320
+ end
321
+
322
+ ��� ���� ������� -- ��������� ������������� ���� �� ������� ��� ������������
323
+ Cls-���������. ����� ������ �������������� ���������� �������� � Cls ����
324
+ ������ � ���������� ������-�� ������ �� ����� �������� � ��������� ��
325
+ ��������. ����� ����, ����� ������� ��� �������� � ���� ���������� ������, ��
326
+ ����� ������ ��� �� �������� (���� ��� ���������� ��� �������������
327
+ ������������).
328
+
329
+ � ��� ���� ������� -- ��������� ������ � �������������� ������. ��� �
330
+ ���������� ���� ������� � ������ {field} ������ ���� {message}. ������ �����
331
+ ������������� ��� -- ��� ��������� TagField. �� ����� TagMessage
332
+ �������� ��� �� ������������, �������� �����������, ��� ���� ������ �����
333
+ �������� Field � ������ ������.
334
+
335
+ == ������� ���������� ����� �� ������� ������
336
+
337
+ �������� � ������ ClsRuby ������� ���� �� ��������� �� ���������� ������
338
+ ������� ���������� ����� �� ������� ������. ���, ���������� ���� ����������
339
+ ���� TagTimePeriod �� ������� �� ����, � ����� ������� ����� ������
340
+ �������� ����� {hours}, {minutes} � {seconds}:
341
+ {config-reload-period {hours 3} {seconds 15} {minutes 40}}
342
+ {config-reload-period {minutes 40} {seconds 15} {hours 3}}
343
+ {config-reload-period {minutes 40} {hours 3} {seconds 15}}
344
+ ��� ��� ������ �������� � ������ � ���� �� ����������.
345
+
346
+ ����� ��������� ������� ����������, ��������� �������� ���������� ClsRuby --
347
+ ������ ���������������� ������, ������� �������� ������������� �������. ����
348
+ ���������������� ���� �� �������� ����������� �� �������� ������������ �����
349
+ ������ ������, �� ���������� ����� ���������������� ���� ������� �����.
350
+
351
+ � ��������� ������� ������� ���� ClsRuby �������� ��������������� � �������
352
+ ���������� �������� �� ������� ������. ��� ��������� � �����
353
+ ClsRuby::TagVectorOfTags (������������������ ����� � ���������� ������) �
354
+ ClsRuby::TagScalarVector (������������������ �������� � ����� ����). ��� ���
355
+ �� �������� ������ ������� ClsRuby, ��������� ������ ���� ������������� ���
356
+ ��������� �������������������, � ������� ������� ���������� ��������� �����:
357
+ {compilation-params
358
+ || ���� {include-path} �������������� � ������� TagVectorOfTags.
359
+ || �� �������� ������� ���������� �����, �.�. �������� �������
360
+ || �������� ����� ������� ���������.
361
+ {include-path "/home/eao197" }
362
+ {include-path "/usr/share/include" }
363
+ ...
364
+ || ��� {copyright-info} �������������� � ������� TagScalarVector.
365
+ || ������� ���������� �������� � ��� �����, �.�. ��������� �������
366
+ || �������� � ��������� ������ ������������� ����������.
367
+ {copyright-info
368
+ "Copyright (C) 2006, 2007 The ClsRuby Project. All rights reserved."
369
+ "Redistribution and use in source and ..."
370
+ }
371
+ ...
372
+ }
373
+
374
+ ����������� ���� ClsRuby::TagVectorOfTags � ���, ��� �� ���������
375
+ ������������� ������� ���������� ������ ����� � ���������� ������. ���� ��
376
+ ����� ����� ������ ����� ��������� ������ ���� �� ������� ������, ��
377
+ ���������� � �������� ������������ ����� � ������� ������� �
378
+ ClsRuby::TagVectorOfTags �� ����������� -- ����������� ������ ���������� �
379
+ �������� ������������ ����� � ����������� �������:
380
+ :include: docs/fragments/tags_order.rb
381
+ � ���������� ������ ����� ������� ����������:
382
+ {compilation-params
383
+ {include-path "/home/eao197" }
384
+ {include-path "/usr/share/include" }
385
+ {include-path "/usr/local/include" }
386
+ {define "NDEBUG" }
387
+ {define "X86_ARCH" }
388
+ {define "STATIC_LIB" } }
389
+ �.�. ���������� ������� ���������� ����� � ����������� �������, �� ��
390
+ ����������� �� ��������� �������� ������������.
391
+
392
+ ��� ��� ���� �������, �������� ������������� ��������� ������������ ����� �
393
+ ������� ������� �������� ������ ������� ClsRuby. ���� ��� ������� ��������
394
+ ������ ��������� ��������� ���� ������������ �������, �� �������� ���������
395
+ ����������� ���� ��� ������������ ��� ClsRuby::TagAny.
396
+
397
+ ���������� ��� �� ��� ClsRuby::TagVectorOfDifferentTags. �� �� ����� ����
398
+ �������� �������� ClsRuby::TagVectorOfTags ��� ������, ����� ����� ���������
399
+ ������������� ������� ���������� ������������ ����� � ������� �������.
400
+
401
+ # vim:ts=2:sts=2:sw=2:expandtab:ft=txt:tw=78
402
+