Что нового

Конвертация формата файлов Справки

kai

Новичок
Сообщения
3
Репутация
0
Здравствуйте

Необходимо конвертировать *.toc формат в *.hhc

На входе имею (тос) :

[box title=Тос]Индекс\Ссылка


1 "Текст:ссылка1"
2 "Текст:ссылка2"
1 "Текст:ссылка3"
2 "Текст:ссылка4"
3 "Текст:ссылка5"
4 "Текст:ссылка6"
4 "Текст:ссылка7"
5 "Текст:ссылка8"
3 "Текст:ссылка9"
2 "Текст:ссылка10"
[/box]

...а на выходе должно быть:
[box title=TitleBox]
...............(индекс=1)......................
<ul>
<li>
<object>
"Текст:ссылка1"
</object>
...............(индекс=2)......................
<object>
"Текст:ссылка2"
</object>
...............(индекс=1)......................
<li>
<object>
"Текст:ссылка3"
</object>
...............(индекс=2)......................
<ul>
<li>
<object>
"Текст:ссылка4"
</object>
...............(индекс=3)......................
<ul>
<li>
<object>
"Текст:ссылка5"
</object>
...............(индекс=4)......................
<ul>
<li>
<object>
"Текст:ссылка6"
</object>
</ul>
</ul>
...............(индекс=4)......................
<object>
"Текст:ссылка7"
</object>
...............(индекс=5)......................
<ul>
<li>
<object>
"Текст:ссылка8"
</object>
...............(индекс=3)......................
</ul>
</ul>
<object>
"Текст:ссылка9"
</object>
...............(индекс=2)......................
</ul>
<object>
"Текст:ссылка9"
</object>
...............(конец файла)................
</ul>
[/box]



а это алгоритм преобразования:

Код:
$l=1
$write=
$linef=StringSplit($linefcx,@CRLF,1) ;Разбиваю "тос"на строчки
$linef_count=$linef[0]-1 ;Счётчик
    ; только для первой строчки тос файла....
    $write=$write&"<ul>"&@crlf&"<LI><OBJECT type="&'"'&"text/sitemap"&'"'&">"&@crlf&"   <param name="&'"'&"Name"&'"'&" value="&'"'&$line[1]&'"'&">"&@crlf&"      </OBJECT>"&@crlf
    ;  для всех остальных ....
$l=$l+1
Do
  ;В $i1 Индекс текущей строчки . в $i2 предыдущей
    $temp=StringMid($linef[$l],1,1)
    $temp=StringInStr($linef[$l]," ")
    $i1=StringMid($linef[$l],1,($temp-1))
    $p=$l-1
    $temp=StringMid($linef[$p],1,1)
	$temp=StringInStr($linef[$p]," ")
    $i2=StringMid($linef[$p],1,($temp-1))
;/////////  $i1>$i2  ///////////
    if $i1>$i2 Then
            $write=$write&"<UL>"&@crlf&" <LI><OBJECT type="&'"'&"text/sitemap"&'"'&">"&@crlf&"   <param name="&'"'&"Name"&'"'&" value="&'"'&$line[1]&'"'&">"&@crlf&"       </OBJECT>"&@crlf
    endif
;/////////  $i1<$i2  ///////////
    if $i1<$i2 Then
        $res=$i2-$i1
        $uld="</UL>"&@crlf
        $uld1=""
        Do
          $uld1=$uld1&$uld
          $res=$res-1
        Until $res=0
            $write=$write&$uld1&" <LI><OBJECT type="&'"'&"text/sitemap"&'"'&">"&@crlf&"   <param name="&'"'&"Name"&'"'&" value="&'"'&$line[1]&'"'&">"&@crlf&"       </OBJECT>"&@crlf
    endif
;/////////  $i1=$i2  ///////////
    if $i1=$i2 Then
            $write=$write&"<OBJECT type="&'"'&"text/sitemap"&'"'&">"&@crlf&"   <param name="&'"'&"Name"&'"'&" value="&'"'&$line[1]&'"'&">"&@crlf&"       </OBJECT>"&@crlf
      endif
      $l=$l+1
    Until $l=$linef_count
    
    
;Последние действия
$res2=$i1
$uld1=""
$isAssigned=Assign($uld,"")
if $isAssigned=0 Then $uld="</UL>"&@crlf

Do
  $uld1=$uld1&$uld
  $res2=$res2-1
Until $res2=0
;$Result - Результат
$Result=$write&$uld1
 
Верх