Здравствуйте
Необходимо конвертировать *.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]
а это алгоритм преобразования:
Необходимо конвертировать *.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