Skip to content

Commit 143914e

Browse files
committed
added hash extension
1 parent dd4e006 commit 143914e

File tree

5 files changed

+193
-92
lines changed

5 files changed

+193
-92
lines changed

src/Extensions/Hashes.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Simlux\String\Extensions;
4+
5+
use Simlux\String\StringBuffer;
6+
7+
class Hashes extends AbstractExtension
8+
{
9+
/**
10+
* @return StringBuffer
11+
*/
12+
public function md5(): StringBuffer
13+
{
14+
$this->string->setString(md5($this->string->toString()));
15+
16+
return $this->string;
17+
}
18+
19+
/**
20+
* @return StringBuffer
21+
*/
22+
public function sha1(): StringBuffer
23+
{
24+
$this->string->setString(sha1($this->string->toString()));
25+
26+
return $this->string;
27+
}
28+
}

src/StringBuffer.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Simlux\String\Exceptions\UnknownMethodException;
88
use Simlux\String\Extensions\AbstractExtension;
99
use Simlux\String\Extensions\Conditions;
10+
use Simlux\String\Extensions\Hashes;
1011
use Simlux\String\Extensions\Manipulator;
1112
use Simlux\String\Extensions\Properties;
1213
use Simlux\String\Extensions\Transformer;
@@ -42,6 +43,10 @@
4243
* @method StringBuffer cutRight(string $string, $caseSensitive = false)
4344
* @method StringBuffer replace($search, $replace): StringBuffer
4445
* @method StringBuffer remove($string)
46+
*
47+
**** from Hashes
48+
* @method StringBuffer md5()
49+
* @method StringBuffer sha1()
4550
*/
4651
class StringBuffer
4752
{
@@ -70,6 +75,11 @@ class StringBuffer
7075
*/
7176
private $manipulator;
7277

78+
/**
79+
* @var Hashes
80+
*/
81+
private $hashes;
82+
7383
/**
7484
* @var array
7585
*/
@@ -100,6 +110,10 @@ class StringBuffer
100110
'replace',
101111
'remove',
102112
],
113+
'hashes' => [
114+
'md5',
115+
'sha1',
116+
],
103117
];
104118

105119
/**
@@ -150,6 +164,10 @@ protected function getExtension(string $extension): AbstractExtension
150164
$instance = $this->manipulator();
151165
break;
152166

167+
case 'hashes':
168+
$instance = $this->hashes();
169+
break;
170+
153171
default:
154172
throw new UnknownExtensionException($extension);
155173

@@ -224,6 +242,18 @@ public function manipulator(): Manipulator
224242
return $this->manipulator;
225243
}
226244

245+
/**
246+
* @return Hashes
247+
*/
248+
public function hashes(): Hashes
249+
{
250+
if (is_null($this->hashes)) {
251+
$this->hashes = new Hashes($this);
252+
}
253+
254+
return $this->hashes;
255+
}
256+
227257
/**
228258
* @return string
229259
*/

tests/Extensions/HashesTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace Simlux\String\Test\Extensions;
4+
5+
use Simlux\String\Extensions\Conditions;
6+
use Simlux\String\StringBuffer;
7+
use Simlux\String\Test\TestCase;
8+
9+
class HashesTest extends TestCase
10+
{
11+
public function testMd5()
12+
{
13+
$this->assertSame(md5('test'), StringBuffer::create('test')->md5()->toString());
14+
}
15+
16+
public function testSha1()
17+
{
18+
$this->assertSame(sha1('test'), StringBuffer::create('test')->sha1()->toString());
19+
}
20+
}

tests/docs/coverage.xml

Lines changed: 111 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<coverage generated="1502820815">
3-
<project timestamp="1502820815">
2+
<coverage generated="1503127322">
3+
<project timestamp="1503127322">
44
<package name="Simlux\String\Exceptions">
55
<file name="/home/simon/repositories/string-buffer/src/Exceptions/UnknownExtensionException.php">
66
<class name="UnknownExtensionException" namespace="Simlux\String\Exceptions">
@@ -20,9 +20,9 @@
2020
<class name="AbstractExtension" namespace="Simlux\String\Extensions">
2121
<metrics complexity="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="2" elements="3" coveredelements="3"/>
2222
</class>
23-
<line num="17" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="55"/>
24-
<line num="19" type="stmt" count="55"/>
25-
<line num="20" type="stmt" count="55"/>
23+
<line num="17" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="57"/>
24+
<line num="19" type="stmt" count="57"/>
25+
<line num="20" type="stmt" count="57"/>
2626
<metrics loc="20" ncloc="14" classes="1" methods="1" coveredmethods="1" conditionals="0" coveredconditionals="0" statements="2" coveredstatements="2" elements="3" coveredelements="3"/>
2727
</file>
2828
<file name="/home/simon/repositories/string-buffer/src/Extensions/Conditions.php">
@@ -63,6 +63,18 @@
6363
<line num="116" type="stmt" count="2"/>
6464
<metrics loc="117" ncloc="75" classes="1" methods="7" coveredmethods="7" conditionals="0" coveredconditionals="0" statements="25" coveredstatements="25" elements="32" coveredelements="32"/>
6565
</file>
66+
<file name="/home/simon/repositories/string-buffer/src/Extensions/Hashes.php">
67+
<class name="Hashes" namespace="Simlux\String\Extensions">
68+
<metrics complexity="2" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="4" elements="6" coveredelements="6"/>
69+
</class>
70+
<line num="12" type="method" name="md5" visibility="public" complexity="1" crap="1" count="1"/>
71+
<line num="14" type="stmt" count="1"/>
72+
<line num="16" type="stmt" count="1"/>
73+
<line num="22" type="method" name="sha1" visibility="public" complexity="1" crap="1" count="1"/>
74+
<line num="24" type="stmt" count="1"/>
75+
<line num="26" type="stmt" count="1"/>
76+
<metrics loc="27" ncloc="21" classes="1" methods="2" coveredmethods="2" conditionals="0" coveredconditionals="0" statements="4" coveredstatements="4" elements="6" coveredelements="6"/>
77+
</file>
6678
<file name="/home/simon/repositories/string-buffer/src/Extensions/Manipulator.php">
6779
<class name="Manipulator" namespace="Simlux\String\Extensions">
6880
<metrics complexity="9" methods="7" coveredmethods="7" conditionals="0" coveredconditionals="0" statements="11" coveredstatements="11" elements="18" coveredelements="18"/>
@@ -113,97 +125,104 @@
113125
<package name="Simlux\String">
114126
<file name="/home/simon/repositories/string-buffer/src/StringBuffer.php">
115127
<class name="StringBuffer" namespace="Simlux\String" fullPackage="Simlux" package="Simlux">
116-
<metrics complexity="36" methods="19" coveredmethods="19" conditionals="0" coveredconditionals="0" statements="67" coveredstatements="67" elements="86" coveredelements="86"/>
128+
<metrics complexity="39" methods="20" coveredmethods="20" conditionals="0" coveredconditionals="0" statements="73" coveredstatements="73" elements="93" coveredelements="93"/>
117129
</class>
118-
<line num="110" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="77"/>
119-
<line num="112" type="stmt" count="77"/>
120-
<line num="113" type="stmt" count="77"/>
121-
<line num="120" type="method" name="create" visibility="public" complexity="1" crap="1" count="75"/>
122-
<line num="122" type="stmt" count="75"/>
123-
<line num="132" type="method" name="getExtension" visibility="protected" complexity="5" crap="5" count="20"/>
124-
<line num="134" type="stmt" count="20"/>
125-
<line num="137" type="stmt" count="20"/>
126-
<line num="138" type="stmt" count="7"/>
127-
<line num="139" type="stmt" count="7"/>
128-
<line num="141" type="stmt" count="19"/>
129-
<line num="142" type="stmt" count="2"/>
130-
<line num="143" type="stmt" count="2"/>
131-
<line num="145" type="stmt" count="17"/>
132-
<line num="146" type="stmt" count="2"/>
133-
<line num="147" type="stmt" count="2"/>
134-
<line num="149" type="stmt" count="15"/>
135-
<line num="150" type="stmt" count="14"/>
136-
<line num="151" type="stmt" count="14"/>
137-
<line num="154" type="stmt" count="1"/>
138-
<line num="158" type="stmt" count="19"/>
139-
<line num="168" type="method" name="__call" visibility="public" complexity="3" crap="3" count="21"/>
140-
<line num="170" type="stmt" count="21"/>
141-
<line num="171" type="stmt" count="21"/>
142-
<line num="172" type="stmt" count="21"/>
143-
<line num="176" type="stmt" count="1"/>
144-
<line num="182" type="method" name="conditions" visibility="public" complexity="2" crap="2" count="8"/>
145-
<line num="184" type="stmt" count="8"/>
146-
<line num="185" type="stmt" count="8"/>
147-
<line num="188" type="stmt" count="8"/>
148-
<line num="194" type="method" name="properties" visibility="public" complexity="2" crap="2" count="3"/>
149-
<line num="196" type="stmt" count="3"/>
150-
<line num="197" type="stmt" count="3"/>
151-
<line num="200" type="stmt" count="3"/>
152-
<line num="206" type="method" name="transformer" visibility="public" complexity="2" crap="2" count="3"/>
153-
<line num="208" type="stmt" count="3"/>
154-
<line num="209" type="stmt" count="3"/>
155-
<line num="212" type="stmt" count="3"/>
156-
<line num="218" type="method" name="manipulator" visibility="public" complexity="2" crap="2" count="14"/>
157-
<line num="220" type="stmt" count="14"/>
158-
<line num="221" type="stmt" count="14"/>
159-
<line num="224" type="stmt" count="14"/>
160-
<line num="230" type="method" name="toString" visibility="public" complexity="1" crap="1" count="71"/>
161-
<line num="232" type="stmt" count="71"/>
162-
<line num="238" type="method" name="__toString" visibility="public" complexity="1" crap="1" count="6"/>
163-
<line num="240" type="stmt" count="6"/>
164-
<line num="248" type="method" name="setString" visibility="public" complexity="1" crap="1" count="17"/>
165-
<line num="250" type="stmt" count="17"/>
166-
<line num="252" type="stmt" count="17"/>
167-
<line num="260" type="method" name="append" visibility="public" complexity="1" crap="1" count="2"/>
168-
<line num="262" type="stmt" count="2"/>
169-
<line num="264" type="stmt" count="2"/>
170-
<line num="274" type="method" name="appendIf" visibility="public" complexity="3" crap="3" count="1"/>
171-
<line num="276" type="stmt" count="1"/>
172-
<line num="277" type="stmt" count="1"/>
173-
<line num="279" type="stmt" count="1"/>
174-
<line num="280" type="stmt" count="1"/>
175-
<line num="284" type="stmt" count="1"/>
176-
<line num="292" type="method" name="prepend" visibility="public" complexity="1" crap="1" count="2"/>
130+
<line num="124" type="method" name="__construct" visibility="public" complexity="1" crap="1" count="79"/>
131+
<line num="126" type="stmt" count="79"/>
132+
<line num="127" type="stmt" count="79"/>
133+
<line num="134" type="method" name="create" visibility="public" complexity="1" crap="1" count="77"/>
134+
<line num="136" type="stmt" count="77"/>
135+
<line num="146" type="method" name="getExtension" visibility="protected" complexity="6" crap="6" count="22"/>
136+
<line num="148" type="stmt" count="22"/>
137+
<line num="151" type="stmt" count="22"/>
138+
<line num="152" type="stmt" count="7"/>
139+
<line num="153" type="stmt" count="7"/>
140+
<line num="155" type="stmt" count="21"/>
141+
<line num="156" type="stmt" count="2"/>
142+
<line num="157" type="stmt" count="2"/>
143+
<line num="159" type="stmt" count="19"/>
144+
<line num="160" type="stmt" count="2"/>
145+
<line num="161" type="stmt" count="2"/>
146+
<line num="163" type="stmt" count="17"/>
147+
<line num="164" type="stmt" count="14"/>
148+
<line num="165" type="stmt" count="14"/>
149+
<line num="167" type="stmt" count="3"/>
150+
<line num="168" type="stmt" count="2"/>
151+
<line num="169" type="stmt" count="2"/>
152+
<line num="172" type="stmt" count="1"/>
153+
<line num="176" type="stmt" count="21"/>
154+
<line num="186" type="method" name="__call" visibility="public" complexity="3" crap="3" count="23"/>
155+
<line num="188" type="stmt" count="23"/>
156+
<line num="189" type="stmt" count="23"/>
157+
<line num="190" type="stmt" count="23"/>
158+
<line num="194" type="stmt" count="1"/>
159+
<line num="200" type="method" name="conditions" visibility="public" complexity="2" crap="2" count="8"/>
160+
<line num="202" type="stmt" count="8"/>
161+
<line num="203" type="stmt" count="8"/>
162+
<line num="206" type="stmt" count="8"/>
163+
<line num="212" type="method" name="properties" visibility="public" complexity="2" crap="2" count="3"/>
164+
<line num="214" type="stmt" count="3"/>
165+
<line num="215" type="stmt" count="3"/>
166+
<line num="218" type="stmt" count="3"/>
167+
<line num="224" type="method" name="transformer" visibility="public" complexity="2" crap="2" count="3"/>
168+
<line num="226" type="stmt" count="3"/>
169+
<line num="227" type="stmt" count="3"/>
170+
<line num="230" type="stmt" count="3"/>
171+
<line num="236" type="method" name="manipulator" visibility="public" complexity="2" crap="2" count="14"/>
172+
<line num="238" type="stmt" count="14"/>
173+
<line num="239" type="stmt" count="14"/>
174+
<line num="242" type="stmt" count="14"/>
175+
<line num="248" type="method" name="hashes" visibility="public" complexity="2" crap="2" count="2"/>
176+
<line num="250" type="stmt" count="2"/>
177+
<line num="251" type="stmt" count="2"/>
178+
<line num="254" type="stmt" count="2"/>
179+
<line num="260" type="method" name="toString" visibility="public" complexity="1" crap="1" count="73"/>
180+
<line num="262" type="stmt" count="73"/>
181+
<line num="268" type="method" name="__toString" visibility="public" complexity="1" crap="1" count="6"/>
182+
<line num="270" type="stmt" count="6"/>
183+
<line num="278" type="method" name="setString" visibility="public" complexity="1" crap="1" count="19"/>
184+
<line num="280" type="stmt" count="19"/>
185+
<line num="282" type="stmt" count="19"/>
186+
<line num="290" type="method" name="append" visibility="public" complexity="1" crap="1" count="2"/>
187+
<line num="292" type="stmt" count="2"/>
177188
<line num="294" type="stmt" count="2"/>
178-
<line num="296" type="stmt" count="2"/>
179-
<line num="306" type="method" name="prependIf" visibility="public" complexity="3" crap="3" count="1"/>
180-
<line num="308" type="stmt" count="1"/>
189+
<line num="304" type="method" name="appendIf" visibility="public" complexity="3" crap="3" count="1"/>
190+
<line num="306" type="stmt" count="1"/>
191+
<line num="307" type="stmt" count="1"/>
181192
<line num="309" type="stmt" count="1"/>
182-
<line num="311" type="stmt" count="1"/>
183-
<line num="312" type="stmt" count="1"/>
184-
<line num="316" type="stmt" count="1"/>
185-
<line num="324" type="method" name="camelCase" visibility="public" complexity="2" crap="2" count="4"/>
186-
<line num="326" type="stmt" count="4"/>
187-
<line num="327" type="stmt" count="4"/>
188-
<line num="328" type="stmt" count="1"/>
189-
<line num="331" type="stmt" count="4"/>
190-
<line num="339" type="method" name="snakeCase" visibility="public" complexity="1" crap="1" count="4"/>
191-
<line num="341" type="stmt" count="4"/>
192-
<line num="343" type="stmt" count="4"/>
193-
<line num="352" type="method" name="substring" visibility="public" complexity="2" crap="2" count="4"/>
194-
<line num="354" type="stmt" count="4"/>
195-
<line num="355" type="stmt" count="1"/>
196-
<line num="357" type="stmt" count="3"/>
197-
<line num="360" type="stmt" count="4"/>
198-
<line num="368" type="method" name="reverse" visibility="public" complexity="2" crap="2" count="1"/>
199-
<line num="370" type="stmt" count="1"/>
200-
<line num="371" type="stmt" count="1"/>
201-
<line num="372" type="stmt" count="1"/>
202-
<line num="374" type="stmt" count="1"/>
203-
<line num="377" type="stmt" count="1"/>
204-
<metrics loc="378" ncloc="236" classes="1" methods="19" coveredmethods="19" conditionals="0" coveredconditionals="0" statements="67" coveredstatements="67" elements="86" coveredelements="86"/>
193+
<line num="310" type="stmt" count="1"/>
194+
<line num="314" type="stmt" count="1"/>
195+
<line num="322" type="method" name="prepend" visibility="public" complexity="1" crap="1" count="2"/>
196+
<line num="324" type="stmt" count="2"/>
197+
<line num="326" type="stmt" count="2"/>
198+
<line num="336" type="method" name="prependIf" visibility="public" complexity="3" crap="3" count="1"/>
199+
<line num="338" type="stmt" count="1"/>
200+
<line num="339" type="stmt" count="1"/>
201+
<line num="341" type="stmt" count="1"/>
202+
<line num="342" type="stmt" count="1"/>
203+
<line num="346" type="stmt" count="1"/>
204+
<line num="354" type="method" name="camelCase" visibility="public" complexity="2" crap="2" count="4"/>
205+
<line num="356" type="stmt" count="4"/>
206+
<line num="357" type="stmt" count="4"/>
207+
<line num="358" type="stmt" count="1"/>
208+
<line num="361" type="stmt" count="4"/>
209+
<line num="369" type="method" name="snakeCase" visibility="public" complexity="1" crap="1" count="4"/>
210+
<line num="371" type="stmt" count="4"/>
211+
<line num="373" type="stmt" count="4"/>
212+
<line num="382" type="method" name="substring" visibility="public" complexity="2" crap="2" count="4"/>
213+
<line num="384" type="stmt" count="4"/>
214+
<line num="385" type="stmt" count="1"/>
215+
<line num="387" type="stmt" count="3"/>
216+
<line num="390" type="stmt" count="4"/>
217+
<line num="398" type="method" name="reverse" visibility="public" complexity="2" crap="2" count="1"/>
218+
<line num="400" type="stmt" count="1"/>
219+
<line num="401" type="stmt" count="1"/>
220+
<line num="402" type="stmt" count="1"/>
221+
<line num="404" type="stmt" count="1"/>
222+
<line num="407" type="stmt" count="1"/>
223+
<metrics loc="408" ncloc="256" classes="1" methods="20" coveredmethods="20" conditionals="0" coveredconditionals="0" statements="73" coveredstatements="73" elements="93" coveredelements="93"/>
205224
</file>
206225
</package>
207-
<metrics files="8" loc="669" ncloc="426" classes="8" methods="39" coveredmethods="39" conditionals="0" coveredconditionals="0" statements="110" coveredstatements="110" elements="149" coveredelements="149"/>
226+
<metrics files="9" loc="726" ncloc="467" classes="9" methods="42" coveredmethods="42" conditionals="0" coveredconditionals="0" statements="120" coveredstatements="120" elements="162" coveredelements="162"/>
208227
</project>
209228
</coverage>

tests/docs/testdox.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ Simlux\String\Test\Extensions\Conditions
77
[x] Ends with one of
88
[x] Equals
99

10+
Simlux\String\Test\Extensions\Hashes
11+
[x] Md 5
12+
[x] Sha 1
13+
1014
Simlux\String\Test\Extensions\Manipulator
1115
[x] Trim
1216
[x] Left trim

0 commit comments

Comments
 (0)