Unix.pm.svn-base
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:3k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. #########################################################################
  2. #  OpenKore - Unix-specific functions
  3. #
  4. #  This software is open source, licensed under the GNU General Public
  5. #  License, version 2.
  6. #  Basically, this means that you're allowed to modify and distribute
  7. #  this software. However, if you distribute modified versions, you MUST
  8. #  also distribute the source code.
  9. #  See http://www.gnu.org/licenses/gpl.html for the full license.
  10. #
  11. #  $Revision$
  12. #  $Id$
  13. #
  14. #########################################################################
  15. ##
  16. # MODULE DESCRIPTION: Unix-specific utility functions.
  17. # Functions in this module are implemented in auto/XSTools/unix/unix.xs
  18. package Utils::Unix;
  19. use strict;
  20. use warnings;
  21. use XSTools;
  22. XSTools::bootModule("Utils::Unix");
  23. my (%fgcolors, %bgcolors);
  24. ##
  25. # Utils::Unix::getTerminalSize()
  26. # Returns: an array with 2 elements: the width and height.
  27. #
  28. # Get the size of the active terminal.
  29. ##
  30. # Bytes Utils::Unix::getColorForMessage(Hash consoleColors, String type, String domain)
  31. #
  32. # Return the ANSI color code for the given message type and domain.
  33. sub getColorForMessage {
  34. my ($consoleColors, $type, $domain) = @_;
  35. return '' if (!$consoleColors->{''} || !$consoleColors->{''}{useColors});
  36. my $colorName;
  37. if ($consoleColors->{$type}) {
  38. $domain = 'default' if (!defined $domain);
  39. $colorName = $consoleColors->{$type}{$domain};
  40. $colorName = $consoleColors->{$type}{default} if (!defined $colorName);
  41. }
  42. $colorName = 'default' if (!defined $colorName);
  43. return getColor($colorName);
  44. }
  45. ##
  46. # Bytes Utils::Unix::getColor(String colorName)
  47. #
  48. # Return the ANSI color code for the given color name.
  49. sub getColor {
  50. my $colorName = $_[0];
  51. my $code = '';
  52. $colorName =~ s//(.*)//;
  53. my $bgcolor = $1;
  54. $code = $fgcolors{$colorName} if (defined($colorName) && defined($fgcolors{$colorName}));
  55. $code .= $bgcolors{$bgcolor} if (defined($bgcolor) && defined($bgcolors{$bgcolor}));
  56. $code = '' if (!defined $code);
  57. return $code;
  58. }
  59. # The following variables map foreground and background colors to ANSI color codes.
  60. {
  61. use bytes;
  62. %fgcolors = (
  63. 'reset' => "e[0m",
  64. 'default' => "e[0m",
  65. 'black' => "e[0;30m",
  66. 'darkgray' => "e[1;30m",
  67. 'darkgrey' => "e[1;30m",
  68. 'darkred' => "e[0;31m",
  69. 'red' => "e[1;31m",
  70. 'darkgreen' => "e[0;32m",
  71. 'green' => "e[1;32m",
  72. 'brown' => "e[0;33m",
  73. 'yellow' => "e[1;33m",
  74. 'darkblue' => "e[0;34m",
  75. 'blue' => "e[1;34m",
  76. 'darkmagenta' => "e[0;35m",
  77. 'magenta' => "e[1;35m",
  78. 'darkcyan' => "e[0;36m",
  79. 'cyan' => "e[1;36m",
  80. 'gray' => "e[0;37m",
  81. 'grey' => "e[0;37m",
  82. 'white' => "e[1;37m",
  83. );
  84. %bgcolors = (
  85. 'default' => "e[22;40m",
  86. 'black' => "e[22;40m",
  87. 'darkgray' => "e[5;40m",
  88. 'darkgrey' => "e[5;40m",
  89. 'darkred' => "e[22;41m",
  90. 'red' => "e[5;41m",
  91. 'darkgreen' => "e[22;42m",
  92. 'green' => "e[5;42m",
  93. 'brown' => "e[22;43m",
  94. 'yellow' => "e[5;43m",
  95. 'darkblue' => "e[22;44m",
  96. 'blue' => "e[5;44m",
  97. 'darkmagenta' => "e[22;45m",
  98. 'magenta' => "e[5;45m",
  99. 'darkcyan' => "e[22;46m",
  100. 'cyan' => "e[5;46m",
  101. 'gray' => "e[22;47m",
  102. 'grey' => "e[22;47m",
  103. 'white' => "e[5;47m",
  104. );
  105. }
  106. 1;