Diff for /parser3/src/doc/string.dox between versions 1.1 and 1.3.2.1

version 1.1, 2001/05/03 15:05:20 version 1.3.2.1, 2002/04/28 10:42:45
Line 1 Line 1
 /**     @page String String  /**     @page String String
   
 ч РБНСФЙ УФТПЛЙ[String] ИТБОСФУС Ч ЧЙДЕ УРЙУЛБ ЖТБЗНЕОФПЧ[String::Chunk::Row .item],   В памяти строки[String] хранятся в виде списка фрагментов[String::Chunk::Row .item], 
 ЛБЦДЩК РПНОЙФ СЪЩЛ, ОБ ЛПФПТПН ОБРЙУБО ЖТБЗНЕОФ.  каждый помнит язык, на котором написан фрагмент.
 жТБЗНЕОФЩ, РПМХЮЕООЩЕ ЙЪ УЛТЙРФПЧ УЮЙФБАФУС ЮЙУФЩНЙ(String::Untaint_lang ::UL_CLEAN),  Фрагменты, полученные из stdout скриптов считаются чистыми(String::Untaint_lang ::UL_CLEAN),
 Б ПФ РПМШЪПЧБФЕМС - ЙЪ environment, ЙЪ form, У ДЙУЛБ[table:load] ЙМЙ ЙЪ sql УЕТЧЕТБ[table:sql]   а от пользователя - из stderr скриптов, из environment, из form, с диска[table:load] или из sql сервера[table:sql] 
 УЮЙФБАФУС ЙУРБЮЛБООЩНЙ(String::Untaint_lang ::UL_TAINTED),   считаются испачканными(String::Untaint_lang ::UL_TAINTED), 
 РТЙ ПРЕТБГЙСИ УП УФТПЛПК ЕЈ НПЗХФ ТБУДЕМСФШ ОБ ЮБУФЙ, ОП РПМХЮБАЭЙЕУС ЮБУФЙ РП-РТЕЦОЕНХ РПНОСФ УЧПК СЪЩЛ.  при операциях со строкой её могут расделять на части, но получающиеся части по-прежнему помнят свой язык.
 уФТПЛХ НПЗХФ ЪБРЙУБФШ Ч Request.wcontext, ЪБДБЧ ЕК СЪЩЛ.   Строку могут записать в Request::wcontext, задав ей язык. 
 рТЙ ЬФПН СЪЩЛ ЪБДБЈФУС ЧУЕН ЕЈ ЙУРБЮЛБООЩН ЮБУФСН, ПОЙ УФБОПЧСФУС ОЕ ОЕПРТЕДЕМЈООП ЗТСЪОЩНЙ[UL_TAINTED],   При этом язык задаётся всем её испачканным частям, они становятся не неопределённо грязными[UL_TAINTED], 
 Б "ЗТСЪОЩНЙ, ОП ЙЪЧЕУФОП, ЮФП ОХЦОП У ОЙНЙ УДЕМБФШ, ЮФПВЩ УФБМЙ ЮЙУФЩНЙ, Ф.Е. ЙЪЧЕУФЕО ЙИ СЪЩЛ".  а "грязными, но известно, что нужно с ними сделать, чтобы стали чистыми, т.е. известен их язык".
 УЛБЦЕН  скажем
 @verbatim  @verbatim
 ^table:sql{insert into news (title) values ('$form:title')]  ^void:sql{insert into news (title) values ('$form:title')]
 @endverbatim  @endverbatim
 РТЙ ПВТБВПФЛЕ РБТБНЕФТБ РПУТЕДУФЧПН Temp_lang ЧЩУФБЧМСЕФУС "ФЕЛХЭЙК СЪЩЛ"[Request::flang],  при обработке параметра посредством Temp_lang выставляется "текущий язык"[Request::flang],
 Й РТЙ ЪБРЙУЙ[Request::write_assign_lang] UL_TAINTED УФТПЛЙ ЙЪ $form:title ЖТБЗНЕОФБ РБТБНЕФТБ  и при записи[Request::write_assign_lang] UL_TAINTED строки из $form:title фрагмента параметра
 НЕФПДБ sql, ОБИПДСЭЕЗПУС Ч ЛБЧЩЮЛБИ, РПМХЮБЕФ СЪЩЛ UL_SQL.  метода sql, находящегося в кавычках, получает язык UL_SQL.
   
 String НПЦОП РТЕПВТБЪПЧБФШ Ч ПВЩЮОХА у-УФТПЛХ, ЙУРПМШЪХС String::cstr().  String можно преобразовать в обычную С-строку, используя String::cstr().
 рТЙ ЬФПН ВХДХФ ХЮФЕОЩ СЪЩЛЙ ЖТБЗНЕОФПЧ Й РТПЙЪЧЕДЕОЩ УППФЧЕФУФЧХАЭЙЕ ЧЩЮЙЭЕОЙС.  При этом будут учтены языки фрагментов и произведены соответствующие вычищения.
 фБЛЦЕ НПЦОП ЧПУРПМШЪПЧБФШУС String::cstr(String::Untaint_lang), РТЙ ЬФПН ВХДЕФ ЧУЕ ЖТБЗНЕОФЩ УФТПЛЙ  Также можно воспользоваться String::cstr(String::Untaint_lang), при этом будет все фрагменты строки
 ОБУЙМШОП ВХДХФЙ УЮЙФБФШУС ОБРЙУБООБНЙ ОБ ЬФПН СЪЩЛЕ. вЕЪПФОПУЙФЕМШОП Л ХЛБЪБООПНХ ЧП ЖТБЗНЕОФЕ СЪЩЛХ.  насильно будут считаться написанными на этом языке. Безотносительно к указанному во фрагменте языку.
 фБЛПЕ ЙУРПМШЪХЕФУС, ОБРТЙНЕТ, ДМС ТБВПФЩ У ЙНЕОБНЙ ЖБКМПЧ:  Такое используется, например, для работы с именами файлов 
   [ВНИМАНИЕ: никогда и нигде не используйте эту конструкцию, если вам дороги ваши секретные файлы, 
   используется только для примера]:
 @verbatim  @verbatim
 ^table:load[$form:file_name]  $file[^table::load[$form:file_name]]
 @endverbatim  @endverbatim
 ЪДЕУШ РТЙ ПВЩЮОПК ПВТБВПФЛЕ $form:file_name ЧЩЫЕМ ВЩ UL_USER_HTML, Б ОХЦЕО UL_FILE_NAME,  здесь при обычной обработке $form:file_name вышел бы UL_HTML|UL_OPTIMIZE_BIT, а нужен UL_FILE_SPEC,
 РТЙ ЬФПН ЗМХРП ЧУЈ ЧТЕНС РПДПВОПЕ ДЕМБФШ, ЛБЛ ДМС table:sql, ОБУФБЙЧБС ОБ {} РБТБНЕФТБИ.  при этом глупо всё время подобное делать, как для table:sql, настаивая на {} параметрах.
   
 пВЩЮОЩН СЪЩЛПН ЧЩЧПДБ СЧМСЕФУС String::Untaint_lang::UL_USER_HTML,   Обычным языком вывода является String::Untaint_lang::UL_HTML|String::Untaint_lang::UL_OPTIMIZE_BIT, 
 ЙУЛМАЮЕОЙЕ УПУФБЧМСЕФ CGI УЛТЙРФ, ЛПФПТЩК ЪБРХУЛБАФ ЧОЕ ЧЕВ-УЕТЧЕТБ,  исключение составляет CGI скрипт, который запускают вне веб-сервера,
 Ч ЬФПН УМХЮБЕ ЙУРПМШЪХЕФУС СЪЩЛ UL_AS_IS.  в этом случае используется язык String::Untaint_lang::UL_AS_IS.
   
   В фрагментах, язык которых помечен как OPTIMIZED при преобразовании в строку String::cstr 
   будут оптимизированы whitespace символы, из нескольких идущих подряд символов будет оставлен первый, 
   остальные будут удалены.
   
 */  */
   

Removed from v.1.1  
changed lines
  Added in v.1.3.2.1


E-mail: