1d1766043SAndrew Rist/**************************************************************
2cdf0e10cSrcweir *
3d1766043SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4d1766043SAndrew Rist * or more contributor license agreements.  See the NOTICE file
5d1766043SAndrew Rist * distributed with this work for additional information
6d1766043SAndrew Rist * regarding copyright ownership.  The ASF licenses this file
7d1766043SAndrew Rist * to you under the Apache License, Version 2.0 (the
8d1766043SAndrew Rist * "License"); you may not use this file except in compliance
9d1766043SAndrew Rist * with the License.  You may obtain a copy of the License at
10d1766043SAndrew Rist *
11d1766043SAndrew Rist *   http://www.apache.org/licenses/LICENSE-2.0
12d1766043SAndrew Rist *
13d1766043SAndrew Rist * Unless required by applicable law or agreed to in writing,
14d1766043SAndrew Rist * software distributed under the License is distributed on an
15d1766043SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16d1766043SAndrew Rist * KIND, either express or implied.  See the License for the
17d1766043SAndrew Rist * specific language governing permissions and limitations
18d1766043SAndrew Rist * under the License.
19d1766043SAndrew Rist *
20d1766043SAndrew Rist *************************************************************/
21d1766043SAndrew Rist
22d1766043SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir#ifndef __com_sun_star_util_XStringSubstitution_idl__
25cdf0e10cSrcweir#define __com_sun_star_util_XStringSubstitution_idl__
26cdf0e10cSrcweir
27cdf0e10cSrcweir#ifndef __com_sun_star_uno_XInterface_idl__
28cdf0e10cSrcweir#include <com/sun/star/uno/XInterface.idl>
29cdf0e10cSrcweir#endif
30cdf0e10cSrcweir
31cdf0e10cSrcweir#ifndef __com_sun_star_container_NoSuchElementException_idl__
32cdf0e10cSrcweir#include <com/sun/star/container/NoSuchElementException.idl>
33cdf0e10cSrcweir#endif
34cdf0e10cSrcweir
35cdf0e10cSrcweir//=============================================================================
36cdf0e10cSrcweir
37cdf0e10cSrcweir module com {  module sun {  module star {  module  util {
38cdf0e10cSrcweir
39cdf0e10cSrcweir//=============================================================================
40cdf0e10cSrcweir/** A common interface for substituting string variables with
41cdf0e10cSrcweir	other strings.
42cdf0e10cSrcweir
43cdf0e10cSrcweir	<p>
44cdf0e10cSrcweir	The substitution algorithm and the syntax for a string variable are
45cdf0e10cSrcweir	not part of this interface definition.	Please look at the documentation
46cdf0e10cSrcweir	of the implementation that must	specify these parameters.
47cdf0e10cSrcweir	</p>
48cdf0e10cSrcweir
4934c958abSJürgen Schmidt    @since OpenOffice 1.1.2
50cdf0e10cSrcweir*/
51cdf0e10cSrcweirpublished interface XStringSubstitution : com::sun::star::uno::XInterface
52cdf0e10cSrcweir{
53cdf0e10cSrcweir	//-------------------------------------------------------------------------
54cdf0e10cSrcweir	/** Exchanges variables inside a given text with a substitution text
55cdf0e10cSrcweir        defined for the variables.
56cdf0e10cSrcweir
57cdf0e10cSrcweir		<p>
58cdf0e10cSrcweir		The method iterates through it's internal variables list to match the
59cdf0e10cSrcweir		variables in the given string. A match replaces the variable with the
60cdf0e10cSrcweir		string defined for this variable. If no variable can be found in the string
61cdf0e10cSrcweir		it will be returned unchanged. The behavior if a variable is found in
62cdf0e10cSrcweir		the string but it is unknown for the implementation depends on the parameter
63cdf0e10cSrcweir		bSubstRequired.
64cdf0e10cSrcweir		</p>
65cdf0e10cSrcweir
66cdf0e10cSrcweir		@param aText
67cdf0e10cSrcweir            A string containing variables that should be substituted.
68cdf0e10cSrcweir
69cdf0e10cSrcweir		@param bSubstRequired
70*a893be29SPedro Giffuni			Specifies if a successful substitution is required. The
71cdf0e10cSrcweir			function throws a <type scope="com::sun::star::container">NoSuchElementException</type>
72cdf0e10cSrcweir			if it finds a variable that is unknown. In this case it is possible
73cdf0e10cSrcweir			that the returned string would not be what the caller expected!
74cdf0e10cSrcweir
75cdf0e10cSrcweir		@return
76cdf0e10cSrcweir            Returns a string based on <var>aText</var> where all variables were
77cdf0e10cSrcweir			exchanged with their value defined at calling time.
78cdf0e10cSrcweir	*/
79cdf0e10cSrcweir	string substituteVariables( [in] string aText, [in] boolean bSubstRequired )
80cdf0e10cSrcweir		raises( com::sun::star::container::NoSuchElementException );
81cdf0e10cSrcweir
82cdf0e10cSrcweir	//-------------------------------------------------------------------------
83cdf0e10cSrcweir	/** Tries to replace parts of aText with variables that represents
84cdf0e10cSrcweir		these sub strings.
85cdf0e10cSrcweir
86cdf0e10cSrcweir		<p>
87cdf0e10cSrcweir		The method iterates through it's internal variable list and tries to match
88cdf0e10cSrcweir		parts of the given string Tries to replace parts of <var>aText</var> with
89cdf0e10cSrcweir		variables that represents these sub strings.If more than one variable
90cdf0e10cSrcweir		matches the one with the longest matching sub string will be chosen.
91cdf0e10cSrcweir		</p>
92cdf0e10cSrcweir
93cdf0e10cSrcweir		@param aText
94cdf0e10cSrcweir            A string where known substrings should be replaced by variables.
95cdf0e10cSrcweir
96cdf0e10cSrcweir        @return
97cdf0e10cSrcweir            Returns the resubstituted string with variables for all parts
98cdf0e10cSrcweir			that could be replaced. The unchanged argument will be returned
99cdf0e10cSrcweir			if nothing can be resubtituted.
100cdf0e10cSrcweir	*/
101cdf0e10cSrcweir
102cdf0e10cSrcweir	string reSubstituteVariables( [in] string aText );
103cdf0e10cSrcweir
104cdf0e10cSrcweir	//-------------------------------------------------------------------------
105cdf0e10cSrcweir	/** Returns the current value of a variable.
106cdf0e10cSrcweir
107cdf0e10cSrcweir		<p>
108cdf0e10cSrcweir		The method iterates through it's internal variable list and tries to
109*a893be29SPedro Giffuni		find the given variable. If the variable is unknown a
110cdf0e10cSrcweir		<type scope="com::sun::star::container">NoSuchElementException</type>
111cdf0e10cSrcweir		is thrown.
112cdf0e10cSrcweir		</p>
113cdf0e10cSrcweir
114cdf0e10cSrcweir        @param variable
115cdf0e10cSrcweir            The name of a variable.
116cdf0e10cSrcweir
117cdf0e10cSrcweir        @return
118cdf0e10cSrcweir            Returns a string that represents the variable. If the
119cdf0e10cSrcweir			variable is unknown a <type scope="com::sun::star::container">NoSuchElementException</type>
120cdf0e10cSrcweir			is thrown.
121cdf0e10cSrcweir	*/
122cdf0e10cSrcweir	string getSubstituteVariableValue( [in] string variable )
123cdf0e10cSrcweir		raises (::com::sun::star::container::NoSuchElementException );
124cdf0e10cSrcweir};
125cdf0e10cSrcweir
126cdf0e10cSrcweir//=============================================================================
127cdf0e10cSrcweir
128cdf0e10cSrcweir}; }; }; };
129cdf0e10cSrcweir
130cdf0e10cSrcweir#endif
131