summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/properties/properties.sty
blob: 458b707fc59961fa645819aacbfd3b71456936f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
% UTF8
%
% Paket fuer Properties
%
% Properties-Datei laden:
% \loadDefaultProperties    lädt Datei \jobname.properties und
%                           falls vorhanden \jobname.local.properties
%                           dabei werden die vorher definierten Werte überschrieben.
% \loadOtherProperties{xxx} lädt Datei xxx.properties und
%                           falls vorhanden xxx.local.properties
%                           dabei werden die vorher definierten Werte überschrieben.
%
% Werte ermitteln:
% \getDefaultProperty{key}       ermittelt den Wert für key.
% \getOtherProperty{xxx}{key}    ermittelt den Wert für key und verwendet
%                                dabei xxx.properties.
%
% Werte setzen:
% \setDefaultProperty{key}{value}     setzt für key den Wert value.
% \setOtherProperty{xxx}{key}{value}  setzt für key den Wert value und verwendet
%                                     dabei xxx.properties.
%
% (c) Michael Niedermair (m.g.n@gmx.de)
%
% Lizenz: LaTeX Project Public License
%
% $Id: properties.sty 7 2009-06-30 11:07:26Z michael $
%
% -------------------------------------
\ProvidesPackage{properties}[%
   2009/06/30 v0.2 Properties (Nm)]
%
\RequirePackage{datatool}
%
\newcommand*\PROP@jobname{\jobname}
\newcommand*\PROP@extension{properties}
\newcommand*\PROP@local{local}
%
% #1 name
% #2 filename
\newcommand*\PROP@loadProperties[2]{%
  \IfFileExists{#2.\PROP@extension}{%
    \PackageInfo{properties}{Loading #2.\PROP@extension}%
    \DTLsetseparator{=}%
    \DTLloaddb[noheader,keys={key,value}]{#2}{#2.\PROP@extension}%
    \DTLforeach{#2}{\PROP@key=key,\PROP@value=value}{%
      \edef\@tempa{\noexpand\@namedef{#1@\PROP@key}{\PROP@value}}%
      \@tempa%
    }%
  }{%
    \PackageInfo{properties}{#2.\PROP@extension\space not found}%
  }%
}%
%
\newcommand*\loadDefaultProperties{%
  \loadOtherProperties{\PROP@jobname}%
}
\newcommand*\loadOtherProperties[1]{%
  \PROP@loadProperties{#1}{#1}%
  \PROP@loadProperties{#1}{#1.\PROP@local}%
}
%
\newcommand*\getDefaultProperty[1]{\getOtherProperty{\PROP@jobname}{#1}}
\newcommand*\setDefaultProperty[2]{\setOtherProperty{\PROP@jobname}{#1}{#2}}
\newcommand*\getOtherProperty[2]{\@nameuse{#1@#2}}
\newcommand*\setOtherProperty[3]{\@namedef{#1@#2}{#3}}
%
\endinput