summaryrefslogtreecommitdiffstats
path: root/library
diff options
context:
space:
mode:
authorsebres <sebres@users.sourceforge.net>2017-01-10 22:32:46 (GMT)
committersebres <sebres@users.sourceforge.net>2017-01-10 22:32:46 (GMT)
commitfeb62aa2bdc63e80cb401c06a17959af188f14c9 (patch)
tree9a9aa264652ce9b5d39a10b6ef22f98c9730e64b /library
parent6c38124bb987bb10c82631122bcb4a981a47e559 (diff)
downloadtcl-feb62aa2bdc63e80cb401c06a17959af188f14c9.zip
tcl-feb62aa2bdc63e80cb401c06a17959af188f14c9.tar.gz
tcl-feb62aa2bdc63e80cb401c06a17959af188f14c9.tar.bz2
scan format: several tokens implemented, bug fixing and code review;
precedence yyyymmdd over yyyyddd was changed (and re-covered in test-cases also), see http://core.tcl.tk/tcl/tktview/e7a722cd3573fedda5d1e528f95902776f996e06
Diffstat (limited to 'library')
-rwxr-xr-xlibrary/clock.tcl37
-rw-r--r--library/msgcat/msgcat.tcl5
2 files changed, 38 insertions, 4 deletions
diff --git a/library/clock.tcl b/library/clock.tcl
index a532c0d..d4e29d5 100755
--- a/library/clock.tcl
+++ b/library/clock.tcl
@@ -629,15 +629,17 @@ proc ::tcl::clock::Initialize {} {
# Caches
- variable LocaleFormats {}; # Dictionary with localized formats
+ variable LocaleFormats \
+ [dict create]; # Dictionary with localized formats
- variable LocaleNumeralCache {}; # Dictionary whose keys are locale
+ variable LocaleNumeralCache \
+ [dict create]; # Dictionary whose keys are locale
# names and whose values are pairs
# comprising regexes matching numerals
# in the given locales and dictionaries
# mapping the numerals to their numeric
# values.
- variable TimeZoneBad {}; # Dictionary whose keys are time zone
+ variable TimeZoneBad [dict create]; # Dictionary whose keys are time zone
# names and whose values are 1 if
# the time zone is unknown and 0
# if it is known.
@@ -653,6 +655,17 @@ proc ::tcl::clock::Initialize {} {
::tcl::clock::Initialize
#----------------------------------------------------------------------
+
+proc mcget {locale args} {
+ switch -- $locale system {
+ set locale [GetSystemLocale]
+ } current {
+ set locale [mclocale]
+ }
+ msgcat::mcget ::tcl::clock $locale {*}$args
+}
+
+#----------------------------------------------------------------------
#
# clock format --
#
@@ -2938,7 +2951,7 @@ proc ::tcl::clock::ConvertLegacyTimeZone { tzname } {
#
#----------------------------------------------------------------------
-proc ::tcl::clock::SetupTimeZone { timezone } {
+proc ::tcl::clock::SetupTimeZone { timezone {alias {}} } {
variable TZData
if {! [info exists TZData($timezone)] } {
@@ -3005,6 +3018,19 @@ proc ::tcl::clock::SetupTimeZone { timezone } {
}
} else {
+
+ variable LegacyTimeZone
+
+ # Check may be a legacy zone:
+ if { $alias eq {} && ![catch {
+ set tzname [dict get $LegacyTimeZone [string tolower $timezone]]
+ }] } {
+ set tzname [::tcl::clock::SetupTimeZone $tzname $timezone]
+ set TZData($timezone) $TZData($tzname)
+ # tell backend - timezone is initialized and return shared timezone object:
+ return [configure -setup-tz $timezone]
+ }
+
# We couldn't parse this as a POSIX time zone. Try again with a
# time zone file - this time without a colon
@@ -4472,6 +4498,9 @@ proc ::tcl::clock::ClearCaches {} {
# tell backend - should invalidate:
configure -clear
+ # clear msgcat cache:
+ msgcat::ClearCaches ::tcl::clock
+
foreach p [info procs [namespace current]::scanproc'*] {
rename $p {}
}
diff --git a/library/msgcat/msgcat.tcl b/library/msgcat/msgcat.tcl
index a25f6c8..e6452d2 100644
--- a/library/msgcat/msgcat.tcl
+++ b/library/msgcat/msgcat.tcl
@@ -951,6 +951,11 @@ proc msgcat::Merge {ns locales} {
return [dict smartref $mrgcat]
}
+proc msgcat::ClearCaches {ns} {
+ variable Merged
+ dict unset Merged $ns
+}
+
# msgcat::Invoke --
#
# Invoke a set of registered callbacks.