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 #include <precomp.h> 23 #include "cmd_sincedata.hxx" 24 25 26 // NOT FULLY DEFINED SERVICES 27 #include <cosv/file.hxx> 28 #include <cosv/tpl/tpltools.hxx> 29 #include "adc_cmds.hxx" 30 31 32 33 namespace autodoc 34 { 35 namespace command 36 { 37 38 SinceTagTransformationData::SinceTagTransformationData() 39 : aTransformationTable() 40 { 41 } 42 43 SinceTagTransformationData::~SinceTagTransformationData() 44 { 45 } 46 47 bool 48 SinceTagTransformationData::DoesTransform() const 49 { 50 return NOT aTransformationTable.empty(); 51 } 52 53 const String & 54 SinceTagTransformationData::DisplayOf( const String & i_versionNumber ) const 55 { 56 if (DoesTransform()) 57 { 58 StreamLock 59 sl(200); 60 sl() << i_versionNumber; 61 sl().strip_frontback_whitespace(); 62 String 63 sVersionNumber(sl().c_str()); 64 65 const String * 66 ret = csv::find_in_map(aTransformationTable, sVersionNumber); 67 return ret != 0 68 ? *ret 69 : String::Null_(); 70 } 71 else 72 { 73 return i_versionNumber; 74 } 75 } 76 77 void 78 SinceTagTransformationData::do_Init( opt_iter & it, 79 opt_iter itEnd ) 80 { 81 ++it; // Cur is since-file path. 82 83 CHECKOPT( it != itEnd , 84 "file path", 85 C_opt_SinceFile ); 86 87 csv::File aSinceFile(*it); 88 csv::OpenCloseGuard aSinceFileGuard(aSinceFile); 89 StreamStr sLine(200); 90 91 if (aSinceFileGuard) 92 { 93 for ( sLine.operator_read_line(aSinceFile); 94 NOT sLine.empty(); 95 sLine.operator_read_line(aSinceFile) ) 96 { 97 98 if (*sLine.begin() != '"') 99 continue; 100 101 const char * pVersion = sLine.c_str() + 1; 102 const char * pVersionEnd = strchr(pVersion, '"'); 103 if (pVersionEnd == 0) 104 continue; 105 const char * pDisplay = strchr(pVersionEnd+1, '"'); 106 if (pDisplay == 0) 107 continue; 108 ++pDisplay; 109 const char * pDisplayEnd = strchr(pDisplay, '"'); 110 if (pDisplayEnd == 0) 111 continue; 112 113 aTransformationTable[ String(pVersion,pVersionEnd) ] 114 = String(pDisplay,pDisplayEnd); 115 sLine.clear(); 116 } // end for 117 } // end if 118 119 ++it; // Cur is next option. 120 } 121 122 } // namespace command 123 } // namespace autodoc 124