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 }