Skip to content

Commit 225bd78

Browse files
committed
refactor(coalesce): adicionado coalesce, melhorado remove acentos
1 parent 1909a59 commit 225bd78

File tree

4 files changed

+118
-12
lines changed

4 files changed

+118
-12
lines changed

.github/workflows/ci.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
extensions: mbstring, intl, curl, zlib, dom, openssl, soap, json, simplexml, libxml
2626

2727
- name: checkout
28-
uses: actions/checkout@v2
28+
uses: actions/checkout@v3
2929
with:
3030
# Fetch 10 commits or Scrutinizer will throw ("Failed to retrieve commit parents. If you use a shallow git checkout, please checkout at least a depth of one."), see: RepositoryIntrospector at scrutinizer-ci/ocular GitHub repository
3131
# 10 commits is an arbitrary value that is more than 1 commit

src/DFe/Common/Util.php

+107-8
Original file line numberDiff line numberDiff line change
@@ -166,16 +166,115 @@ public static function binarySearch($elem, $array, $cmp_fn)
166166

167167
/**
168168
* Remove acentos e caracteres especiais do texto
169-
* @param string $str string com caracteres especiais
169+
* @param string $text string com caracteres especiais
170170
* @return string texto no formato ANSI sem caracteres especiais
171171
*/
172-
public static function removeAccent($str)
172+
public static function removeAccent($text)
173173
{
174-
return strtr(
175-
utf8_decode($str),
176-
utf8_decode(self::ACCENT_CHARS),
177-
self::NORMAL_CHARS
178-
);
174+
if (!preg_match('/[\x80-\xff]/', $text)) {
175+
return $text;
176+
}
177+
178+
$chars = [
179+
// Decompositions for Latin-1 Supplement
180+
chr(195) . chr(128) => 'A', chr(195) . chr(129) => 'A',
181+
chr(195) . chr(130) => 'A', chr(195) . chr(131) => 'A',
182+
chr(195) . chr(132) => 'A', chr(195) . chr(133) => 'A',
183+
chr(195) . chr(135) => 'C', chr(195) . chr(136) => 'E',
184+
chr(195) . chr(137) => 'E', chr(195) . chr(138) => 'E',
185+
chr(195) . chr(139) => 'E', chr(195) . chr(140) => 'I',
186+
chr(195) . chr(141) => 'I', chr(195) . chr(142) => 'I',
187+
chr(195) . chr(143) => 'I', chr(195) . chr(145) => 'N',
188+
chr(195) . chr(146) => 'O', chr(195) . chr(147) => 'O',
189+
chr(195) . chr(148) => 'O', chr(195) . chr(149) => 'O',
190+
chr(195) . chr(150) => 'O', chr(195) . chr(153) => 'U',
191+
chr(195) . chr(154) => 'U', chr(195) . chr(155) => 'U',
192+
chr(195) . chr(156) => 'U', chr(195) . chr(157) => 'Y',
193+
chr(195) . chr(159) => 's', chr(195) . chr(160) => 'a',
194+
chr(195) . chr(161) => 'a', chr(195) . chr(162) => 'a',
195+
chr(195) . chr(163) => 'a', chr(195) . chr(164) => 'a',
196+
chr(195) . chr(165) => 'a', chr(195) . chr(167) => 'c',
197+
chr(195) . chr(168) => 'e', chr(195) . chr(169) => 'e',
198+
chr(195) . chr(170) => 'e', chr(195) . chr(171) => 'e',
199+
chr(195) . chr(172) => 'i', chr(195) . chr(173) => 'i',
200+
chr(195) . chr(174) => 'i', chr(195) . chr(175) => 'i',
201+
chr(195) . chr(177) => 'n', chr(195) . chr(178) => 'o',
202+
chr(195) . chr(179) => 'o', chr(195) . chr(180) => 'o',
203+
chr(195) . chr(181) => 'o', chr(195) . chr(182) => 'o',
204+
chr(195) . chr(182) => 'o', chr(195) . chr(185) => 'u',
205+
chr(195) . chr(186) => 'u', chr(195) . chr(187) => 'u',
206+
chr(195) . chr(188) => 'u', chr(195) . chr(189) => 'y',
207+
chr(195) . chr(191) => 'y',
208+
// Decompositions for Latin Extended-A
209+
chr(196) . chr(128) => 'A', chr(196) . chr(129) => 'a',
210+
chr(196) . chr(130) => 'A', chr(196) . chr(131) => 'a',
211+
chr(196) . chr(132) => 'A', chr(196) . chr(133) => 'a',
212+
chr(196) . chr(134) => 'C', chr(196) . chr(135) => 'c',
213+
chr(196) . chr(136) => 'C', chr(196) . chr(137) => 'c',
214+
chr(196) . chr(138) => 'C', chr(196) . chr(139) => 'c',
215+
chr(196) . chr(140) => 'C', chr(196) . chr(141) => 'c',
216+
chr(196) . chr(142) => 'D', chr(196) . chr(143) => 'd',
217+
chr(196) . chr(144) => 'D', chr(196) . chr(145) => 'd',
218+
chr(196) . chr(146) => 'E', chr(196) . chr(147) => 'e',
219+
chr(196) . chr(148) => 'E', chr(196) . chr(149) => 'e',
220+
chr(196) . chr(150) => 'E', chr(196) . chr(151) => 'e',
221+
chr(196) . chr(152) => 'E', chr(196) . chr(153) => 'e',
222+
chr(196) . chr(154) => 'E', chr(196) . chr(155) => 'e',
223+
chr(196) . chr(156) => 'G', chr(196) . chr(157) => 'g',
224+
chr(196) . chr(158) => 'G', chr(196) . chr(159) => 'g',
225+
chr(196) . chr(160) => 'G', chr(196) . chr(161) => 'g',
226+
chr(196) . chr(162) => 'G', chr(196) . chr(163) => 'g',
227+
chr(196) . chr(164) => 'H', chr(196) . chr(165) => 'h',
228+
chr(196) . chr(166) => 'H', chr(196) . chr(167) => 'h',
229+
chr(196) . chr(168) => 'I', chr(196) . chr(169) => 'i',
230+
chr(196) . chr(170) => 'I', chr(196) . chr(171) => 'i',
231+
chr(196) . chr(172) => 'I', chr(196) . chr(173) => 'i',
232+
chr(196) . chr(174) => 'I', chr(196) . chr(175) => 'i',
233+
chr(196) . chr(176) => 'I', chr(196) . chr(177) => 'i',
234+
chr(196) . chr(178) => 'IJ', chr(196) . chr(179) => 'ij',
235+
chr(196) . chr(180) => 'J', chr(196) . chr(181) => 'j',
236+
chr(196) . chr(182) => 'K', chr(196) . chr(183) => 'k',
237+
chr(196) . chr(184) => 'k', chr(196) . chr(185) => 'L',
238+
chr(196) . chr(186) => 'l', chr(196) . chr(187) => 'L',
239+
chr(196) . chr(188) => 'l', chr(196) . chr(189) => 'L',
240+
chr(196) . chr(190) => 'l', chr(196) . chr(191) => 'L',
241+
chr(197) . chr(128) => 'l', chr(197) . chr(129) => 'L',
242+
chr(197) . chr(130) => 'l', chr(197) . chr(131) => 'N',
243+
chr(197) . chr(132) => 'n', chr(197) . chr(133) => 'N',
244+
chr(197) . chr(134) => 'n', chr(197) . chr(135) => 'N',
245+
chr(197) . chr(136) => 'n', chr(197) . chr(137) => 'N',
246+
chr(197) . chr(138) => 'n', chr(197) . chr(139) => 'N',
247+
chr(197) . chr(140) => 'O', chr(197) . chr(141) => 'o',
248+
chr(197) . chr(142) => 'O', chr(197) . chr(143) => 'o',
249+
chr(197) . chr(144) => 'O', chr(197) . chr(145) => 'o',
250+
chr(197) . chr(146) => 'OE', chr(197) . chr(147) => 'oe',
251+
chr(197) . chr(148) => 'R', chr(197) . chr(149) => 'r',
252+
chr(197) . chr(150) => 'R', chr(197) . chr(151) => 'r',
253+
chr(197) . chr(152) => 'R', chr(197) . chr(153) => 'r',
254+
chr(197) . chr(154) => 'S', chr(197) . chr(155) => 's',
255+
chr(197) . chr(156) => 'S', chr(197) . chr(157) => 's',
256+
chr(197) . chr(158) => 'S', chr(197) . chr(159) => 's',
257+
chr(197) . chr(160) => 'S', chr(197) . chr(161) => 's',
258+
chr(197) . chr(162) => 'T', chr(197) . chr(163) => 't',
259+
chr(197) . chr(164) => 'T', chr(197) . chr(165) => 't',
260+
chr(197) . chr(166) => 'T', chr(197) . chr(167) => 't',
261+
chr(197) . chr(168) => 'U', chr(197) . chr(169) => 'u',
262+
chr(197) . chr(170) => 'U', chr(197) . chr(171) => 'u',
263+
chr(197) . chr(172) => 'U', chr(197) . chr(173) => 'u',
264+
chr(197) . chr(174) => 'U', chr(197) . chr(175) => 'u',
265+
chr(197) . chr(176) => 'U', chr(197) . chr(177) => 'u',
266+
chr(197) . chr(178) => 'U', chr(197) . chr(179) => 'u',
267+
chr(197) . chr(180) => 'W', chr(197) . chr(181) => 'w',
268+
chr(197) . chr(182) => 'Y', chr(197) . chr(183) => 'y',
269+
chr(197) . chr(184) => 'Y', chr(197) . chr(185) => 'Z',
270+
chr(197) . chr(186) => 'z', chr(197) . chr(187) => 'Z',
271+
chr(197) . chr(188) => 'z', chr(197) . chr(189) => 'Z',
272+
chr(197) . chr(190) => 'z', chr(197) . chr(191) => 's',
273+
];
274+
275+
$text = strtr($text, $chars);
276+
277+
return $text;
179278
}
180279

181280
/**
@@ -270,7 +369,7 @@ public static function addAttribute($element, $name, $text)
270369
{
271370
$dom = $element->ownerDocument;
272371
$node = $element->appendChild($dom->createAttribute($name));
273-
$node->appendChild($dom->createTextNode($text));
372+
$node->appendChild($dom->createTextNode($text ?? ''));
274373
return $node;
275374
}
276375

src/DFe/Loader/NFe/Task/EventoLoader.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ public function getData()
6363

6464
public function setData($data)
6565
{
66-
if (!is_numeric($data)) {
67-
$data = strtotime($data ?? '');
66+
if (is_string($data)) {
67+
$data = strtotime($data);
6868
}
6969
$this->evento->setData($data);
7070
return $this;

tests/DFe/Common/UtilTest.php

+8-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,14 @@ public function testIsLess()
2525
$this->assertFalse(Util::isLess(0.01, 0.01));
2626
}
2727

28-
public function testCreateDirectory(Type $var = null)
28+
public function testRemoveAccents()
29+
{
30+
$this->assertEquals('Sao Paulo', Util::removeAccent('São Paulo'));
31+
$this->assertEquals('Acailandia', Util::removeAccent('Açailândia'));
32+
$this->assertEquals('Paranavai', Util::removeAccent('Paranavaí'));
33+
}
34+
35+
public function testCreateDirectory()
2936
{
3037
$root = dirname(dirname(dirname(__DIR__)));
3138
$path = $root . '/storage/test123';

0 commit comments

Comments
 (0)