-
Notifications
You must be signed in to change notification settings - Fork 9
/
Herramientas.php
99 lines (86 loc) · 3 KB
/
Herramientas.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
/**
* Creado con PhpStorm.
* patronesdiseno
* Desarrollador: Alejandro Sosa
* Fecha: 3/10/2016
* Hora: 22:41
*/
class Herramientas
{
public static $run_in_eclipse = true;
public static $eclipse_charset = 'UTF-8';
private static $out_charset;
private static $out_handle;
public static function str_start_with($haystack, $needle)
{
return ($needle === '') || (strpos($haystack, $needle) === 0);
}
public static function readln($prompt = '')
{
if(PHP_OS == 'WINNT') {
Herramientas::prt($prompt);
$handle = fopen("php://stdin", "r");
$line = stream_get_line($handle, 1024, PHP_EOL);
Herramientas::detectCharset();
if (Herramientas::$out_charset != 'UTF-8') {
$line = iconv(Herramientas::$out_charset, 'UTF-8', $line);
}
fclose($handle);
}else{
$line = readline($prompt);
}
return $line;
}
public static function prt($str = '')
{
if($str != ''){
Herramientas::detectCharset();
$str = str_replace("\r", '', $str);
$str = str_replace("\n", PHP_EOL, $str);
if(Herramientas::$out_charset != 'UTF-8'){
$str = iconv('UTF-8', Herramientas::$out_charset, $str);
}
if(!isset(Herramientas::$out_handle)){
Herramientas::$out_handle = fopen("php://stdout", "w");
}
fprintf(Herramientas::$out_handle, $str);
fflush(Herramientas::$out_handle);
}
}
public static function println($str = '')
{
Herramientas::prt($str . "\n");
}
private static function detectCharset()
{
if(!isset(Herramientas::$out_charset)){
if(Herramientas::$run_in_eclipse){
Herramientas::$out_charset = Herramientas::$eclipse_charset;
}else{
if(PHP_OS == 'WINNT'){
Herramientas::$out_charset = 'CP850';
exec('chcp', $output);
$pos = stripos($output[0], ':');
$cp = trim(substr($output[0], $pos + 1));
if($cp < 2000){
Herramientas::$out_charset = 'CP' . $cp;
}
}else{
$local = setlocale(LC_CTYPE, 0);
Herramientas::$out_charset = substr($local, 6);
if(empty(Herramientas::$out_charset)){
Herramientas::$out_charset = 'ISO-8859-1';
}else{
switch (Herramientas::$out_charset){
case 'euro':
Herramientas::$out_charset = 'ISO-8859-1';
break;
}
}
}
Herramientas::$out_charset .= '//TRANSLIT';
}
}
}
}