1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26
27 #include <algorithm>
28 #include <SwRewriter.hxx>
29
30 using namespace std;
31
operator ==(const SwRewriteRule & a,const SwRewriteRule & b)32 bool operator == (const SwRewriteRule & a, const SwRewriteRule & b)
33 {
34 return a.first == b.first;
35 }
36
SwRewriter()37 SwRewriter::SwRewriter()
38 {
39 }
40
SwRewriter(const SwRewriter & rSrc)41 SwRewriter::SwRewriter(const SwRewriter & rSrc)
42 : mRules(rSrc.mRules)
43 {
44 }
45
~SwRewriter()46 SwRewriter::~SwRewriter()
47 {
48 }
49
AddRule(const String & rWhat,const String & rWith)50 void SwRewriter::AddRule(const String & rWhat, const String & rWith)
51 {
52 SwRewriteRule aRule(rWhat, rWith);
53
54 vector<SwRewriteRule>::iterator aIt;
55
56 aIt = find(mRules.begin(), mRules.end(), aRule);
57
58 if (aIt != mRules.end())
59 *aIt = aRule;
60 else
61 mRules.push_back(aRule);
62 }
63
Apply(const String & rStr) const64 String SwRewriter::Apply(const String & rStr) const
65 {
66 String aResult = rStr;
67 vector<SwRewriteRule>::const_iterator aIt;
68
69 for (aIt = mRules.begin(); aIt != mRules.end(); aIt++)
70 aResult.SearchAndReplaceAll(aIt->first, aIt->second);
71
72 return aResult;
73 }
74
75