mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-12-08 20:38:47 +00:00
Adding .tm Tcl samples
This commit is contained in:
76
samples/Tcl/xdgbasedir-0.3.tm
Normal file
76
samples/Tcl/xdgbasedir-0.3.tm
Normal file
@@ -0,0 +1,76 @@
|
||||
# XDG Base Directory Specification handling
|
||||
#
|
||||
# Copyright (C) 2013 Lawrence Woodman
|
||||
#
|
||||
# Licensed under an MIT licence. Please see LICENCE.md for details.
|
||||
#
|
||||
# For XDG Base Directory Specification
|
||||
# http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
#
|
||||
package require Tcl 8.5
|
||||
|
||||
namespace eval XDG {
|
||||
variable DEFAULTS ""
|
||||
namespace export DATA_HOME CONFIG_HOME CACHE_HOME
|
||||
namespace export RUNTIME_DIR DATA_DIRS CONFIG_DIRS
|
||||
}
|
||||
|
||||
proc XDG::SetDefaults {} {
|
||||
variable DEFAULTS
|
||||
if {$DEFAULTS ne ""} return
|
||||
set DEFAULTS [list \
|
||||
DATA_HOME [file join $::env(HOME) .local share] \
|
||||
CONFIG_HOME [file join $::env(HOME) .config] \
|
||||
CACHE_HOME [file join $::env(HOME) .cache] \
|
||||
DATA_DIRS [list [file join /usr local share] [file join /usr share]] \
|
||||
CONFIG_DIRS [list [file join /etc xdg ]]
|
||||
]
|
||||
}
|
||||
|
||||
proc XDG::XDGVarSet {var} {
|
||||
expr {[info exists ::env(XDG_$var)] && $::env(XDG_$var) ne ""}
|
||||
}
|
||||
|
||||
proc XDG::Dir {var {subdir ""} } {
|
||||
variable DEFAULTS
|
||||
SetDefaults
|
||||
set dir [dict get $DEFAULTS $var]
|
||||
|
||||
if {[XDGVarSet $var]} {
|
||||
set dir $::env(XDG_$var)
|
||||
}
|
||||
|
||||
return [file join $dir $subdir]
|
||||
}
|
||||
|
||||
proc XDG::Dirs {var {subdir ""} } {
|
||||
variable DEFAULTS
|
||||
SetDefaults
|
||||
set rawDirs [dict get $DEFAULTS $var]
|
||||
|
||||
if {[XDGVarSet $var]} {
|
||||
set rawDirs [split $::env(XDG_$var) ":"]
|
||||
}
|
||||
|
||||
set outDirs {}
|
||||
foreach dir $rawDirs {
|
||||
lappend outDirs [file join $dir $subdir]
|
||||
}
|
||||
return $outDirs
|
||||
}
|
||||
|
||||
# The remaining procs reference the environmental variables XDG_
|
||||
# followed by the proc name.
|
||||
proc XDG::DATA_HOME {{subdir ""}} {Dir DATA_HOME $subdir}
|
||||
proc XDG::CONFIG_HOME {{subdir ""}} {Dir CONFIG_HOME $subdir}
|
||||
proc XDG::CACHE_HOME {{subdir ""}} {Dir CACHE_HOME $subdir}
|
||||
|
||||
proc XDG::RUNTIME_DIR {{subdir ""}} {
|
||||
if {![XDGVarSet RUNTIME_DIR]} { return {} }
|
||||
return [file join $::env(XDG_RUNTIME_DIR) $subdir]
|
||||
}
|
||||
|
||||
# The following procs returning the directories as a list with the most
|
||||
# important first.
|
||||
proc XDG::DATA_DIRS {{subdir ""}} {Dirs DATA_DIRS $subdir}
|
||||
proc XDG::CONFIG_DIRS {{subdir ""}} {Dirs CONFIG_DIRS $subdir}
|
||||
Reference in New Issue
Block a user