ALib C++ Library
Library Version: 2511 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
aloxinit.cpp
1//##################################################################################################
2// ALib C++ Library
3//
4// Copyright 2013-2025 A-Worx GmbH, Germany
5// Published under 'Boost Software License' (a free software license, see LICENSE.txt)
6//##################################################################################################
7#include "alib_precompile.hpp"
8#if !defined(ALIB_C20_MODULES) || ((ALIB_C20_MODULES != 0) && (ALIB_C20_MODULES != 1))
9# error "Symbol ALIB_C20_MODULES has to be given to the compiler as either 0 or 1"
10#endif
11#if ALIB_C20_MODULES
12 module;
13#endif
14//========================================= Global Fragment ========================================
19
20//============================================== Module ============================================
21#if ALIB_C20_MODULES
22 module ALib.ALox.init;
23 import ALib.Lang;
24 import ALib.Containers.List;
25 import ALib.Strings;
26 import ALib.Boxing;
27 import ALib.EnumRecords;
28 import ALib.EnumRecords.Bootstrap;
29 import ALib.Variables;
30 import ALib.Camp;
31 import ALib.Camp.Base;
32#else
33# include "ALib.Lang.H"
34# include "ALib.Containers.List.H"
35# include "ALib.Strings.H"
36# include "ALib.Boxing.H"
37# include "ALib.ALox.H"
38#endif
39//========================================== Implementation ========================================
40
41#if !DOXYGEN
44#endif // !DOXYGEN
45
46namespace alib::lox {
47
48void ESC::ReplaceToReadable( AString& target, integer startIdx ) {
49 while( (startIdx= target.IndexOf( '\033', startIdx ) ) >= 0 ) {
50 String32 val("{ESC::");
51 character c= target.CharAt( startIdx + 1 );
52 character c2= target.CharAt( startIdx + 2 );
53
54 const character* code= A_CHAR("ERROR");
55
56 // colors
57 if( c == 'c' || c == 'C' ) {
58 if ( c == 'C' )
59 val._<NC>( A_CHAR("BG_") );
60 switch( c2 - '0' ) {
61 case 0: code= A_CHAR("RED") ; break;
62 case 1: code= A_CHAR("GREEN") ; break;
63 case 2: code= A_CHAR("YELLOW") ; break;
64 case 3: code= A_CHAR("BLUE") ; break;
65 case 4: code= A_CHAR("MAGENTA") ; break;
66 case 5: code= A_CHAR("CYAN") ; break;
67 case 6: code= A_CHAR("BLACK") ; break;
68 case 7: code= A_CHAR("WHITE") ; break;
69 case 8: code= A_CHAR("GRAY") ; break;
70 case 9: code= A_CHAR("RESET") ; break;
71 default: code= A_CHAR("COL_ERR"); break;
72 }
73
74 }
75
76 // styles
77 else if( c == 's' ) {
78 switch( c2 ) {
79 case 'B': code= A_CHAR("BOLD") ; break;
80 case 'I': code= A_CHAR("ITALICS") ; break;
81 case 'r': code= A_CHAR("STYLE_RESET") ; break;
82 case 'a': code= A_CHAR("RESET") ; break;
83 default: code= A_CHAR("STYLE_ERR") ; break;
84 } }
85
86 // styles
87 else if( c == 'l' ) {
88 switch( c2 ) {
89 case 'S': code= A_CHAR("URL_START") ; break;
90 case 'E': code= A_CHAR("URL_END") ; break;
91 default: code= A_CHAR("URL_ERR") ; break;
92 } }
93
94 // others
95 else if( c == 't' && c2 == '0' ) code= A_CHAR("TAB");
96 else if( c == 'A' && c2 == '0' ) code= A_CHAR("EOMETA");
97
98 // Replace
99 val._<NC>(code)._('}');
100 target.ReplaceSubstring<NC>( val, startIdx, 3 );
101 startIdx+= 3;
102} }
103
104} // namespace [alib::lox]
static ALIB_DLL void ReplaceToReadable(AString &target, integer startIdx)
Definition aloxinit.cpp:48
TAString & ReplaceSubstring(const TString< TChar > &src, integer regionStart, integer regionLength)
TAString & _(const TAppendable &src)
integer IndexOf(TChar needle, integer startIdx=0) const
Definition string.inl:815
TChar CharAt(integer idx) const
Definition string.inl:415
#define ALIB_BOXING_VTABLE_DEFINE(TMapped, Identifier)
#define A_CHAR(STR)
strings::TAString< character, lang::HeapAllocator > AString
Type alias in namespace alib.
lang::integer integer
Type alias in namespace alib.
Definition integers.inl:149
LocalString< 32 > String32
Type alias name for TLocalString<character,32>.
characters::character character
Type alias in namespace alib.