Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Никита Козин 21.04.2007 10:43
Обновил класс для форматированного вывода двух дат$oMdate[^Mdate::create[ ^rem{ *** Тип вывода, может быть html или xml *** } $.sMode[html] ^rem{ *** Форматные строки: *** } $.sFormatString[%o / %n] $.sDtfFormatString[%d.%m.%Y %H:%M] $.sDtfLocale[rr-locale] ^rem{ *** Обертка для свежей даты: *** } $.sNewTagName[font] $.sNewAttributes[color="#CC0000"] ^rem{ *** Обертка для старой даты (отсутствует, если не определена явно): *** } $.sOldTagName[font] $.sOldAttributes[color="#CCCCCC"] ^rem{ *** Обертка для всего вывода *** } $.sCanvasTagName[] $.sCanvasAttributes[] ^rem{ *** Дата, начиная с которой дата считается свежей *** } $.dtLimit[^date::now(-1)] ]] ^oMdate.print[$dt1;$dt2]Также можно работать, как со статическим классом:
$Mdate:sMode[xml] $Mdate:sDtfLocale[ri-locale] ^Mdate:print[$dt1;$dt2]Если в качестве типа вывода используется XML, то свежая дата по-умолчанию заключается в тег <new>, а старая, соответственно, в тег <old>
@CLASS Mdate @USE dtf.p @auto[] ^self.declareVariables[] # end @auto[] @create[hParams] ^self.declareVariables[$hParams] # end @create[] @declareVariables[hParams] $hParams[^hash::create[$hParams]] ^if(def $hParams.sMode && ^hParams.sMode.lower[] eq "xml"){ $sMode[xml] }{ $sMode[html] } ^rem{ *** Форматные строки *** } ^if(def $hParams.sFormatString){ $sFormatString[$hParams.sFormatString] }{ $sFormatString[%o / %n] } ^if(def $hParams.sDtfFormatString){ $sDtfFormatString[$hParams.sDtfFormatString] }{ $sDtfFormatString[%d.%m.%Y %H:%M] } ^if(def $hParams.sDtfLocale){ ^dtf:setLocale[$dtf:[$hParams.sDtfLocale]] } ^rem{ *** Обертка для свежей даты *** } ^if(def $hParams.sNewTagName){ $sNewTagName[$hParams.sNewTagName] }{ $sNewTagName[font] } ^if(def $hParams.sNewAttributes){ $sNewAttributes[$hParams.sNewAttributes] }{ $sNewAttributes[color="#CC0000"] } ^rem{ *** Обертка для старой даты *** } ^if(def $hParams.sOldTagName){ $sOldTagName[$hParams.sOldTagName] } ^if(def $hParams.sOldAttributes){ $sOldAttributes[$hParams.sOldAttributes] } ^rem{ *** Обертка для всего вывода *** } $sCanvasTagName[$hParams.sCanvasTagName] $sCanvasAttributes[$hParams.sCanvasAttributes] ^rem{ *** Дата, начиная с которой дата считается свежей *** } ^if(def $hParams.dtLimit){ $dtLimit[^dtf:create[$hParams.dtLimit;^date::now(-1)]] }{ $dtLimit[^dtf:create[^date::now(-1)]] } # end @declareVariables[] @print[dt1;dt2][result] $dt1[^dtf:create[$dt1]] ^if(def $dt2){ $dt2[^dtf::create[$dt2]] } ^if(def $self.sCanvasTagName){ ^_printTag[^_printDate[$dt1;$dt2];$self.sCanvasTagName;$self.sCanvasAttributes] }{ ^_printDate[$dt1;$dt2] } # end @print[] @_printDate[dt1;dt2] ^if(!def $dt2 || $dt1 == $dt2){ $result[^_printDateString[$dt1]] }{ $result[^self.sFormatString.match[%(.)][g]{^switch[$match.1]{ ^case[o]{^_printDateString[$dt1]} ^case[n]{^_printDateString[$dt2]} ^case[DEFAULT]{%$match.1} }}] } # end @_printDate[] @_printDateString[dt][result;sDt] $sDt[^dtf:format[$self.sDtfFormatString;$dt]] ^if($dt > $self.dtLimit){ ^if($self.sMode eq "xml"){ ^_printTag[$sDt;new] }{ ^_printTag[$sDt;$self.sNewTagName;$self.sNewAttributes] } }{ ^if($self.sMode eq "xml"){ ^_printTag[$sDt;old] }{ ^_printTag[$sDt;$self.sOldTagName;$self.sOldAttributes] } } # end @_printDateString[] @_printTag[sData;sTag;sAttributes] ^if(def $sTag){ $result[<$sTag^if(def $sAttributes){ $sAttributes}>^sData.trim[]</$sTag>] }{ $result[^sData.trim[]] } # end @_printTag[]