| Новости | 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[]