1 /* 2 * Hunt - A refined core library for D programming language. 3 * 4 * Copyright (C) 2018-2019 HuntLabs 5 * 6 * Website: https://www.huntlabs.net/ 7 * 8 * Licensed under the Apache-2.0 License. 9 * 10 */ 11 12 module hunt.collection.StringBuffer; 13 14 import hunt.util.Common; 15 16 import std.array; 17 import std.conv; 18 19 /** 20 */ 21 class StringBuffer : Appendable 22 { 23 Appender!string _buffer; 24 // private int len; 25 26 this(size_t capacity = 16){ 27 28 } 29 30 void setLength(int len) 31 { 32 if(len == 0) 33 { 34 _buffer = Appender!(string).init; 35 } 36 else 37 { 38 string tmp = _buffer.data[0..len]; 39 40 _buffer = Appender!(string).init; 41 _buffer.put(tmp); 42 } 43 44 // this.len = len; 45 } 46 47 void clear() 48 { 49 _buffer = Appender!(string).init; 50 } 51 52 int length() 53 { 54 return cast(int)_buffer.data.length; 55 // return len; 56 } 57 58 Appendable append(const(char)[] csq) 59 { 60 _buffer.put(csq); 61 // len += cast(int) csq.length; 62 return this; 63 } 64 65 66 Appendable append(const(char)[] csq, int start, int end) 67 { 68 _buffer.put(csq[start..end]); 69 // len += end - start; 70 return this; 71 } 72 73 74 Appendable append(char c) 75 { 76 _buffer.put(c); 77 // len++; 78 return this; 79 } 80 81 Appendable append(int c) 82 { 83 string s = to!string(c); 84 _buffer.put(s); 85 // len += cast(int)s.length; 86 return this; 87 } 88 89 Appendable append(float c) 90 { 91 string s = to!string(c); 92 _buffer.put(s); 93 // len += cast(int)s.length; 94 return this; 95 } 96 97 override string toString() 98 { 99 // return _buffer.data[0..len]; 100 return _buffer.data; 101 } 102 103 }