parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Поправил и добавил возможность

Oleg 17.11.2004 13:39

Не пиннайте строго, я делал для себя - мне это необходимо ;)
@main[]
# Создаём хешь указывающий в какой строке сколько символов должно быть
# Счёт идёт по человеческим правилам, 1-ая строка = 1
# $._default устаналивать обязательно
# Если все строки должны быть равны между собой можно сделать постл $hash_string_lengch(20)
$hash_string_lengch[
	$._default(20)
	$.1(12)
	$.2(13)
	$.3(15)
	$.4(19)
	$.5(25)
	$.6(27)
	$.7(35)
	$.8(70)
]
$result[^wsplit[Это строка которую будем дробить на более короткие строки длинной по двадцать символов, надеюсь вам пригодится. Слова с большим количеством символов дробиться небудут, а будут занимать строку целиком. например лфдыорадфоыврафлдоыравылфдравдфыолавр. И ещё, чуть не забыл, когда будете считать символы НЕ считать перевод строки как один из символвов;$hash_string_lengch;<br/>
]]

# разбиение строки на строки с определённым количеством символов
# Вызывать следующим образом
# ^wsplit[строка которую требуется разбить на строки;требуемое количество символов в строке;символ перевода строки по умолчанию  энтер]
@wsplit[str;symvols_in_string;perevod_stroki][counter;str;symvols_in_string;perevod_stroki;string_counter]
# Сделано для возможности задать длинну каждой строки отдельно
^if($symvols_in_string is hash){}{$symvols_in_string[$._default[$symvols_in_string]]}
^if(!def $perevod_stroki){$perevod_stroki[
]}

# разбираем полученную строку на слова
$str[^str.split[ ;v]]

$string_counter(1)
# перебираем полученную таблицу
^str.menu{

# Сохраняем строку в переменную чтобы можно было посчитать количество символов в переменной
	$str_tmp[$str.piece]

# Считаем количество символов в переменной
	$num_symvols(^str_tmp.length[])

# Считаем количество символов в строке где 1 - пробел
	$counter($counter+($num_symvols+1))

# Если количество символов не болше определённого то добавляем слово к строке, если больше то обнуляем счётчик прибавляем к нему количество символов последнего слова, ставим перевод строки и вставляем слово
	^if($counter > ($symvols_in_string.$string_counter+1)){
		^if($counter == ($num_symvols+1)){
# Вставляем слово несмотря на то что оно больше заданного лимита, а заним перевод строки
			$result[${result}$str.piece^if(def $result){$perevod_stroki}]
			$counter[0]
		}{
# Вставляем перевод стоки, а затем слово
			$result[${result}^if(def $result){$perevod_stroki}$str.piece]
# Меняем значение счётчика тк начинаем новую строку
			$counter($num_symvols+1)
		}
# Счётчик номеров строк
		$string_counter($string_counter+1)
	}{
# Вставляем пробел и слово
		$result[$result^if(def $result){ }$str.piece]
	}
}