win32console 1.2.0-x86-mswin32-60 → 1.3.0.beta1-x86-mswin32-60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +119 -0
- data/Manifest.txt +22 -0
- data/README.txt +63 -25
- data/Rakefile +15 -10
- data/ext/{Console.cpp → Console_ext/Console.c} +41 -43
- data/ext/{extconf.rb → Console_ext/extconf.rb} +1 -1
- data/{doc → extra}/Console.rdoc +0 -0
- data/{doc → extra}/Console_ANSI.rdoc +0 -0
- data/lib/1.8/Console_ext.so +0 -0
- data/lib/1.9/Console_ext.so +0 -0
- data/lib/Win32/Console.rb +6 -16
- data/lib/Win32/Console/ANSI.rb +3 -15
- data/tasks/gem.rake +31 -0
- data/tasks/native.rake +14 -0
- metadata +82 -37
- data/HISTORY.txt +0 -7
- data/HISTORY_GEM.txt +0 -38
- data/INSTALL.txt +0 -18
- data/README_GEM.txt +0 -64
- data/lib/Console.so +0 -0
data/History.txt
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
=== 1.3.0.beta
|
2
|
+
|
3
|
+
* Enhancements
|
4
|
+
* Usage of Hoe and rake-compiler to ease releasing and extension
|
5
|
+
compilation.
|
6
|
+
|
7
|
+
* Bugfixes:
|
8
|
+
* Works with Ruby 1.9
|
9
|
+
|
10
|
+
* Known issues:
|
11
|
+
* win32console no longer automatically translate encoding to the console
|
12
|
+
output enconding. Please use Iconv to convert from your encoding (eg. UTF8)
|
13
|
+
to current console output:
|
14
|
+
|
15
|
+
current_cp = Win32::Console::OutputCP()
|
16
|
+
Iconv.iconv("cp#{current_cp}", "utf-8", utf_string)
|
17
|
+
|
18
|
+
A working example can be seen here: http://gist.github.com/265593
|
19
|
+
|
20
|
+
=== 1.2.0 / 2008-11-22
|
21
|
+
|
22
|
+
* Enhancements
|
23
|
+
* Better code organization and clenaup
|
24
|
+
|
25
|
+
* Bugfixes:
|
26
|
+
* Removed license conflicting ANSI Term code and functionality.
|
27
|
+
|
28
|
+
=== 1.1.0 / 2008-03-17
|
29
|
+
|
30
|
+
* Enhancements:
|
31
|
+
* Added Kernel#putc
|
32
|
+
Redefined Kernel#putc to wrap Win32::Console::ANSI::IO#putc
|
33
|
+
|
34
|
+
* Added #putc to Win32::Console::ANSI::IO
|
35
|
+
This putc buffers escape sequences so that they will be handled properly
|
36
|
+
|
37
|
+
* Added #redirected? to Win32::Console::ANSI::IO
|
38
|
+
Checks the mode of the console to see if IO is being redirected or not
|
39
|
+
|
40
|
+
* Added Win32::Console::API#WriteFile
|
41
|
+
to both the Ruby and compiled versions
|
42
|
+
|
43
|
+
* Added Win32::Console#WriteFile
|
44
|
+
This is a wrapper around Win32::Console::API#WriteFile
|
45
|
+
|
46
|
+
* Split Win32::Console::Constants and Win32::Console::API out into
|
47
|
+
seperate files. These two classes were in 'Win32/Console.rb'
|
48
|
+
I moved them into 'Win32/Console/constants.rb' and 'Win32/Console/api.rb'
|
49
|
+
respectively.
|
50
|
+
|
51
|
+
* Cleaned up indentation
|
52
|
+
indentations was a mixture of tabs and spaces. I made everything indented
|
53
|
+
with 2 spaces.
|
54
|
+
|
55
|
+
* Bugfixes:
|
56
|
+
* Fixed "Invalid Handle" error in compiled version of GetConsoleMode
|
57
|
+
I'm actually not sure of the source of this error.
|
58
|
+
It may be expected behavior when output is being redirected.
|
59
|
+
I worked around it by rescuing the exception in Win32::Console#Mode and
|
60
|
+
returning 9999. I picked that arbitrary value, because it is
|
61
|
+
higher than 31, which is what I think is the highest value Mode would
|
62
|
+
return if output isn't being redirected.
|
63
|
+
[Gordon Thiesfeld]
|
64
|
+
|
65
|
+
* Modified Win32::Console::ANSI::IO#write to check for redirection.
|
66
|
+
If output is redirected, it uses WriteFile instead of WriteConosle.
|
67
|
+
It also skips the parsing step, and passes the escape sequences through.
|
68
|
+
[Gordon Thiesfeld]
|
69
|
+
|
70
|
+
* Modified Win32::Console::ANSI::IO#_PrintString
|
71
|
+
Didn't change behavior, just tried to make it more idiomatic ruby.
|
72
|
+
I didn't make all of the changes I wanted to, because I wasn't sure
|
73
|
+
how to test them all.
|
74
|
+
[Gordon Thiesfeld]
|
75
|
+
|
76
|
+
* Modified all Win32::Console::API methods
|
77
|
+
[Gordon Thiesfeld]
|
78
|
+
|
79
|
+
It was assigning Win32API functions to class variables. I switched them to instance variables. I also changed the idiom it was using to instantiate the objects.
|
80
|
+
For instance, instead of:
|
81
|
+
|
82
|
+
if @@m_AllocConsole == nil
|
83
|
+
@@m_AllocConsole = Win32API.new( "kernel32", "AllocConsole",
|
84
|
+
[], 'l' )
|
85
|
+
|
86
|
+
It is now:
|
87
|
+
|
88
|
+
@AllocConsole ||= Win32API.new( "kernel32", "AllocConsole", [], 'l' )
|
89
|
+
|
90
|
+
* Non-string arguments passed to Win32::Console::ANSI#write caused error
|
91
|
+
fix by Ivan Evtuhovich (evtuhovich at gmail dot com).
|
92
|
+
|
93
|
+
=== 1.0.8 / 2006-06-05
|
94
|
+
|
95
|
+
* New features:
|
96
|
+
* First public release of win32console gem by Justin Bailey.
|
97
|
+
|
98
|
+
=== 1.0
|
99
|
+
|
100
|
+
* New features:
|
101
|
+
* Added .dup to _printString function to avoid mangling outside
|
102
|
+
string references. Removed the other (later) .dup call.
|
103
|
+
|
104
|
+
* Bugfixes:
|
105
|
+
* Turned of some exceptions that were conflicting with using the module
|
106
|
+
with pipes or redirections.
|
107
|
+
|
108
|
+
=== 0.8
|
109
|
+
|
110
|
+
* Enhancements:
|
111
|
+
* Added ruby docs, and sample test suite.
|
112
|
+
|
113
|
+
* Bugfixes:
|
114
|
+
* Fixed bugs in reading routines,
|
115
|
+
|
116
|
+
=== 0.5
|
117
|
+
|
118
|
+
New features:
|
119
|
+
* First public release.
|
data/Manifest.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
History.txt
|
2
|
+
Manifest.txt
|
3
|
+
Rakefile
|
4
|
+
README.txt
|
5
|
+
ext/Console_ext/Console.c
|
6
|
+
ext/Console_ext/extconf.rb
|
7
|
+
extra/Console.rdoc
|
8
|
+
extra/Console_ANSI.rdoc
|
9
|
+
lib/win32console.rb
|
10
|
+
lib/Win32/Console.rb
|
11
|
+
lib/Win32/Console/ANSI.rb
|
12
|
+
lib/Win32/Console/api.rb
|
13
|
+
lib/Win32/Console/constants.rb
|
14
|
+
tasks/gem.rake
|
15
|
+
tasks/native.rake
|
16
|
+
test/test_cursor.rb
|
17
|
+
test/test_mouse.rb
|
18
|
+
test/test_readinput.rb
|
19
|
+
test/test_readoutput.rb
|
20
|
+
test/test_sendevent.rb
|
21
|
+
test/test_title.rb
|
22
|
+
test/test_write.rb
|
data/README.txt
CHANGED
@@ -1,25 +1,63 @@
|
|
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
|
-
|
1
|
+
= Win32::Console
|
2
|
+
|
3
|
+
* http://rubyforge.org/projects/winconsole
|
4
|
+
* http://github.com/luislavena/win32console
|
5
|
+
* http://rdoc.info/projects/luislavena/win32console
|
6
|
+
|
7
|
+
== DESCRIPTION
|
8
|
+
|
9
|
+
Win32::Console allows controling the windows command line terminal
|
10
|
+
thru an OO-interface. This allows you to query the terminal (find
|
11
|
+
its size, characters, attributes, etc). The interface and functionality
|
12
|
+
should be identical to Perl's counterpart.
|
13
|
+
|
14
|
+
A port of Perl's Win32::Console and Win32::Console::ANSI modules.
|
15
|
+
|
16
|
+
This gem packages Gonzalo Garramuno's Win32::Console project, and includes
|
17
|
+
a compiled binary for speed. The Win32::Console project's home can be
|
18
|
+
found at:
|
19
|
+
|
20
|
+
http://rubyforge.org/projects/win32console
|
21
|
+
|
22
|
+
== FEATURES
|
23
|
+
|
24
|
+
Win32::Console::ANSI is a class derived from IO that seamlessly
|
25
|
+
translates ANSI Esc control character codes into Windows' command.exe
|
26
|
+
or cmd.exe equivalents.
|
27
|
+
|
28
|
+
To ease usage, you can use in combination with term-ansicolor gem and avoid
|
29
|
+
writing ANSI codes manually.
|
30
|
+
|
31
|
+
== EXAMPLES
|
32
|
+
|
33
|
+
To output a simple bolded string, try this script:
|
34
|
+
|
35
|
+
require 'rubygems'
|
36
|
+
require 'win32console'
|
37
|
+
include Win32::Console::ANSI
|
38
|
+
include Term::ANSIColor
|
39
|
+
|
40
|
+
puts bold << "bolded text" << clear << " and no longer bold."
|
41
|
+
|
42
|
+
== INSTALL
|
43
|
+
|
44
|
+
gem install win32console
|
45
|
+
|
46
|
+
== DEVELOPERS:
|
47
|
+
|
48
|
+
After checking out the source, run:
|
49
|
+
|
50
|
+
$ rake newb
|
51
|
+
|
52
|
+
This task will install any missing dependencies, run the tests/specs,
|
53
|
+
and generate the RDoc.
|
54
|
+
|
55
|
+
== LICENSE
|
56
|
+
|
57
|
+
This program is FREE; you can redistribute, modify, disassemble, or even
|
58
|
+
reverse engineer this software at your will. Keep in mind, however, that
|
59
|
+
NOTHING IS GUARANTEED to work and everything you do is AT YOUR OWN RISK - I
|
60
|
+
will not take responsibility for any damage, loss of money and/or health
|
61
|
+
that may arise from the use of this program!
|
62
|
+
|
63
|
+
This is distributed under the terms of Larry Wall's Artistic License.
|
data/Rakefile
CHANGED
@@ -1,12 +1,17 @@
|
|
1
|
+
#
|
2
|
+
# NOTE: Keep this file clean.
|
3
|
+
# Add your customizations inside tasks directory.
|
4
|
+
# Thank You.
|
5
|
+
#
|
6
|
+
|
7
|
+
# load rakefile extensions (tasks)
|
8
|
+
Dir['tasks/*.rake'].sort.each { |f| load f }
|
9
|
+
|
10
|
+
=begin
|
1
11
|
require 'rubygems'
|
2
12
|
require 'rake/clean'
|
3
13
|
require 'rake/gempackagetask'
|
4
|
-
require '
|
5
|
-
|
6
|
-
# House-keeping
|
7
|
-
CLEAN.include '**/*.o', '**/*.so', '**/*.bundle', '**/*.a',
|
8
|
-
'**/*.log', '{ext,lib}/*.{bundle,so,obj,pdb,lib,def,exp}',
|
9
|
-
'ext/Makefile', '**/*.db'
|
14
|
+
require 'rake/extensiontask'
|
10
15
|
|
11
16
|
spec = Gem::Specification.new do |s|
|
12
17
|
s.name = 'win32console'
|
@@ -31,7 +36,7 @@ The gem project can be found at
|
|
31
36
|
EOS
|
32
37
|
|
33
38
|
s.require_path = 'lib'
|
34
|
-
s.extensions = %w[ ext/extconf.rb ]
|
39
|
+
s.extensions = %w[ ext/Console/extconf.rb ]
|
35
40
|
s.files = FileList[ '{doc,ext,lib,test}/**/*.{rdoc,c,cpp,rb}', 'Rakefile', *s.extra_rdoc_files ]
|
36
41
|
|
37
42
|
s.rdoc_options << '--title' << 'Win32Console Gem -- Gem for Win32::Console Project' <<
|
@@ -44,6 +49,6 @@ Rake::GemPackageTask.new(spec) do |pkg|
|
|
44
49
|
pkg.gem_spec = spec
|
45
50
|
end
|
46
51
|
|
47
|
-
|
48
|
-
|
49
|
-
|
52
|
+
Rake::ExtensionTask.new('Console', spec) do |ext|
|
53
|
+
end
|
54
|
+
=end
|
@@ -1,11 +1,12 @@
|
|
1
|
-
|
2
|
-
#include "windows.h"
|
1
|
+
#include <windows.h>
|
3
2
|
#include "ruby.h"
|
4
3
|
|
5
|
-
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
4
|
+
/* Workaround deprecated RString accessors */
|
5
|
+
#ifndef RSTRING_PTR
|
6
|
+
#define RSTRING_PTR(s) (RSTRING(s)->ptr)
|
7
|
+
#endif
|
8
|
+
#ifndef RSTRING_LEN
|
9
|
+
#define RSTRING_LEN(s) (RSTRING(s)->len)
|
9
10
|
#endif
|
10
11
|
|
11
12
|
VALUE rb_mWin32;
|
@@ -32,7 +33,6 @@ VALUE rb_mConstants;
|
|
32
33
|
VALUE
|
33
34
|
rb_getWin32Error()
|
34
35
|
{
|
35
|
-
DWORD e = GetLastError();
|
36
36
|
LPVOID lpMsgBuf;
|
37
37
|
if (!FormatMessage(
|
38
38
|
FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
@@ -55,15 +55,12 @@ rb_getWin32Error()
|
|
55
55
|
LocalFree( lpMsgBuf );
|
56
56
|
|
57
57
|
// Raise exception
|
58
|
-
rb_raise(rb_eRuntimeError,
|
58
|
+
rb_raise(rb_eRuntimeError, RSTRING_PTR(t));
|
59
59
|
return Qnil;
|
60
60
|
|
61
61
|
}
|
62
62
|
|
63
63
|
|
64
|
-
extern "C"
|
65
|
-
{
|
66
|
-
|
67
64
|
static VALUE rb_GetStdHandle(VALUE self, VALUE handle)
|
68
65
|
{
|
69
66
|
unsigned long x;
|
@@ -205,11 +202,11 @@ static VALUE rb_WriteConsole( VALUE self, VALUE hConsoleOutput,
|
|
205
202
|
VALUE lpBuffer )
|
206
203
|
{
|
207
204
|
HANDLE handle = ULongToPtr( NUM2ULONG( hConsoleOutput ) );
|
208
|
-
DWORD nNumberOfCharsToWrite =
|
205
|
+
DWORD nNumberOfCharsToWrite = RSTRING_LEN(lpBuffer);
|
209
206
|
|
210
207
|
DWORD lpNumberOfCharsWritten;
|
211
208
|
|
212
|
-
WriteConsole( handle,
|
209
|
+
WriteConsole( handle, RSTRING_PTR(lpBuffer),
|
213
210
|
nNumberOfCharsToWrite,
|
214
211
|
&lpNumberOfCharsWritten, NULL );
|
215
212
|
return UINT2NUM( lpNumberOfCharsWritten );
|
@@ -219,11 +216,11 @@ static VALUE rb_WriteFile( VALUE self, VALUE hConsoleOutput,
|
|
219
216
|
VALUE lpBuffer )
|
220
217
|
{
|
221
218
|
HANDLE handle = ULongToPtr( NUM2ULONG( hConsoleOutput ) );
|
222
|
-
DWORD nNumberOfBytesToWrite =
|
219
|
+
DWORD nNumberOfBytesToWrite = RSTRING_LEN(lpBuffer);
|
223
220
|
|
224
221
|
DWORD lpNumberOfBytesWritten;
|
225
222
|
|
226
|
-
WriteFile( handle,
|
223
|
+
WriteFile( handle, RSTRING_PTR(lpBuffer),
|
227
224
|
nNumberOfBytesToWrite,
|
228
225
|
&lpNumberOfBytesWritten, NULL );
|
229
226
|
return UINT2NUM( lpNumberOfBytesWritten );
|
@@ -255,12 +252,12 @@ static VALUE rb_GetConsoleCursorInfo( VALUE self, VALUE hConsoleOutput )
|
|
255
252
|
return ret;
|
256
253
|
}
|
257
254
|
|
258
|
-
void rb_ParseEvent(VALUE ret, INPUT_RECORD
|
255
|
+
void rb_ParseEvent(VALUE ret, INPUT_RECORD *event )
|
259
256
|
{
|
260
|
-
switch(event
|
257
|
+
switch(event->EventType) {
|
261
258
|
case KEY_EVENT:
|
262
259
|
{
|
263
|
-
KEY_EVENT_RECORD* kevent=(KEY_EVENT_RECORD *)&(event
|
260
|
+
KEY_EVENT_RECORD* kevent=(KEY_EVENT_RECORD *)&(event->Event);
|
264
261
|
rb_ary_push(ret, UINT2NUM(KEY_EVENT));
|
265
262
|
rb_ary_push(ret, UINT2NUM(kevent->bKeyDown));
|
266
263
|
rb_ary_push(ret, UINT2NUM(kevent->wRepeatCount));
|
@@ -276,7 +273,7 @@ void rb_ParseEvent(VALUE ret, INPUT_RECORD& event )
|
|
276
273
|
}
|
277
274
|
case MOUSE_EVENT:
|
278
275
|
{
|
279
|
-
MOUSE_EVENT_RECORD * mevent=(MOUSE_EVENT_RECORD *)&(event
|
276
|
+
MOUSE_EVENT_RECORD * mevent=(MOUSE_EVENT_RECORD *)&(event->Event);
|
280
277
|
rb_ary_push(ret, UINT2NUM(MOUSE_EVENT) );
|
281
278
|
rb_ary_push(ret, UINT2NUM(mevent->dwMousePosition.X) );
|
282
279
|
rb_ary_push(ret, UINT2NUM(mevent->dwMousePosition.Y) );
|
@@ -288,7 +285,7 @@ void rb_ParseEvent(VALUE ret, INPUT_RECORD& event )
|
|
288
285
|
case WINDOW_BUFFER_SIZE_EVENT:
|
289
286
|
{
|
290
287
|
WINDOW_BUFFER_SIZE_RECORD* wevent=
|
291
|
-
(WINDOW_BUFFER_SIZE_RECORD *)&(event
|
288
|
+
(WINDOW_BUFFER_SIZE_RECORD *)&(event->Event);
|
292
289
|
rb_ary_push(ret, UINT2NUM(WINDOW_BUFFER_SIZE_EVENT) );
|
293
290
|
rb_ary_push(ret, UINT2NUM(wevent->dwSize.X) );
|
294
291
|
rb_ary_push(ret, UINT2NUM(wevent->dwSize.Y) );
|
@@ -296,14 +293,14 @@ void rb_ParseEvent(VALUE ret, INPUT_RECORD& event )
|
|
296
293
|
break;
|
297
294
|
case MENU_EVENT:
|
298
295
|
{
|
299
|
-
MENU_EVENT_RECORD* mevent= (MENU_EVENT_RECORD *)&(event
|
296
|
+
MENU_EVENT_RECORD* mevent= (MENU_EVENT_RECORD *)&(event->Event);
|
300
297
|
rb_ary_push(ret, UINT2NUM(MENU_EVENT) );
|
301
298
|
rb_ary_push(ret, UINT2NUM(mevent->dwCommandId) );
|
302
299
|
}
|
303
300
|
break;
|
304
301
|
case FOCUS_EVENT:
|
305
302
|
{
|
306
|
-
FOCUS_EVENT_RECORD* mevent= (FOCUS_EVENT_RECORD *)&(event
|
303
|
+
FOCUS_EVENT_RECORD* mevent= (FOCUS_EVENT_RECORD *)&(event->Event);
|
307
304
|
rb_ary_push(ret, UINT2NUM(FOCUS_EVENT) );
|
308
305
|
rb_ary_push(ret, UINT2NUM(mevent->bSetFocus) );
|
309
306
|
}
|
@@ -321,7 +318,7 @@ static VALUE rb_PeekConsoleInput( VALUE self, VALUE hConsoleOutput )
|
|
321
318
|
return rb_getWin32Error();
|
322
319
|
|
323
320
|
VALUE ret = rb_ary_new();
|
324
|
-
rb_ParseEvent( ret, event );
|
321
|
+
rb_ParseEvent( ret, &event );
|
325
322
|
return ret;
|
326
323
|
}
|
327
324
|
|
@@ -332,9 +329,9 @@ static VALUE rb_ReadConsole( VALUE self, VALUE hConsoleOutput,
|
|
332
329
|
DWORD nofread;
|
333
330
|
Check_Type( buffer, T_STRING );
|
334
331
|
int to_read = NUM2INT(numread);
|
335
|
-
if (
|
332
|
+
if ( RSTRING_LEN(buffer) > to_read )
|
336
333
|
rb_raise(rb_eArgError, "String is too small to read that many characters.");
|
337
|
-
if (ReadConsole(handle,(void *)
|
334
|
+
if (ReadConsole(handle,(void *)RSTRING_PTR(buffer), to_read,
|
338
335
|
&nofread,NULL))
|
339
336
|
return UINT2NUM(nofread);
|
340
337
|
return rb_getWin32Error();
|
@@ -349,7 +346,7 @@ static VALUE rb_ReadConsoleInput( VALUE self, VALUE hConsoleOutput )
|
|
349
346
|
return rb_getWin32Error();
|
350
347
|
|
351
348
|
VALUE ret = rb_ary_new();
|
352
|
-
rb_ParseEvent( ret, event );
|
349
|
+
rb_ParseEvent( ret, &event );
|
353
350
|
return ret;
|
354
351
|
}
|
355
352
|
|
@@ -365,9 +362,9 @@ static VALUE rb_ReadConsoleOutputCharacter( VALUE self, VALUE hConsoleOutput,
|
|
365
362
|
coords.X= NUM2UINT( x );
|
366
363
|
coords.Y= NUM2UINT( y );
|
367
364
|
int l = NUM2INT(len);
|
368
|
-
if (
|
365
|
+
if ( (unsigned long)RSTRING_LEN(charbuf) < l*sizeof(TCHAR) )
|
369
366
|
rb_raise(rb_eArgError, "String is too small to read that many characters.");
|
370
|
-
if (ReadConsoleOutputCharacter(handle,
|
367
|
+
if (ReadConsoleOutputCharacter(handle,RSTRING_PTR(charbuf),l,
|
371
368
|
coords,&nofread))
|
372
369
|
return UINT2NUM( nofread );
|
373
370
|
return rb_getWin32Error();
|
@@ -382,12 +379,14 @@ static VALUE rb_ReadConsoleOutputAttribute( VALUE self, VALUE hConsoleOutput,
|
|
382
379
|
DWORD nofread;
|
383
380
|
unsigned short abuffer[80*999*sizeof(unsigned short)];
|
384
381
|
char cbuffer[80*999];
|
382
|
+
unsigned i = 0;
|
383
|
+
|
385
384
|
coords.X= NUM2UINT( x );
|
386
385
|
coords.Y= NUM2UINT( y );
|
387
386
|
if (ReadConsoleOutputAttribute(handle, abuffer, NUM2UINT(len),
|
388
387
|
coords,&nofread))
|
389
388
|
{
|
390
|
-
for(
|
389
|
+
for(i=0;i<nofread;++i) {
|
391
390
|
cbuffer[i]=(char)abuffer[i];
|
392
391
|
}
|
393
392
|
return rb_str_new( cbuffer, nofread );
|
@@ -413,10 +412,10 @@ static VALUE rb_ReadConsoleOutput( VALUE self, VALUE hConsoleOutput,
|
|
413
412
|
from.Right = NUM2INT( r );
|
414
413
|
from.Bottom = NUM2INT( b );
|
415
414
|
Check_Type( buffer, T_STRING );
|
416
|
-
if (
|
415
|
+
if ( (unsigned long)RSTRING_LEN(buffer) < (sizeof(CHAR_INFO)*size.X*size.Y) )
|
417
416
|
rb_raise(rb_eArgError, "string buffer is too small for reading that many characters.");
|
418
417
|
HANDLE handle = ULongToPtr( NUM2ULONG( hConsoleOutput ) );
|
419
|
-
if (!ReadConsoleOutput(handle,(CHAR_INFO *)
|
418
|
+
if (!ReadConsoleOutput(handle,(CHAR_INFO *)RSTRING_PTR(buffer),size,coords,&from))
|
420
419
|
return rb_getWin32Error();
|
421
420
|
|
422
421
|
VALUE ret = rb_ary_new();
|
@@ -739,7 +738,7 @@ not_there:
|
|
739
738
|
VALUE rb_constant( VALUE self, VALUE name )
|
740
739
|
{
|
741
740
|
Check_Type( name, T_STRING );
|
742
|
-
return ULONG2NUM( c_constant(
|
741
|
+
return ULONG2NUM( c_constant( RSTRING_PTR(name) ) );
|
743
742
|
}
|
744
743
|
|
745
744
|
|
@@ -844,7 +843,7 @@ VALUE
|
|
844
843
|
rb_SetConsoleTitle( VALUE self, VALUE title )
|
845
844
|
{
|
846
845
|
Check_Type( title, T_STRING );
|
847
|
-
if (SetConsoleTitle(
|
846
|
+
if (SetConsoleTitle(RSTRING_PTR( title )))
|
848
847
|
return NUM2UINT(1);
|
849
848
|
return rb_getWin32Error();
|
850
849
|
}
|
@@ -1081,7 +1080,7 @@ rb_WriteConsoleOutput(VALUE self, VALUE h, VALUE buffer,
|
|
1081
1080
|
to.Top = NUM2INT( t );
|
1082
1081
|
to.Right = NUM2INT( r );
|
1083
1082
|
to.Bottom = NUM2INT( b );
|
1084
|
-
if (WriteConsoleOutput(handle,(CHAR_INFO *)
|
1083
|
+
if (WriteConsoleOutput(handle,(CHAR_INFO *)RSTRING_PTR(buffer),
|
1085
1084
|
size,coords,&to)) {
|
1086
1085
|
VALUE ret = rb_ary_new();
|
1087
1086
|
rb_ary_push( ret, INT2FIX( to.Left ) );
|
@@ -1104,9 +1103,11 @@ rb_WriteConsoleOutputAttribute(VALUE self, VALUE h, VALUE s,
|
|
1104
1103
|
|
1105
1104
|
unsigned short buffer[80*999*sizeof(unsigned short)];
|
1106
1105
|
DWORD written;
|
1107
|
-
DWORD towrite =
|
1108
|
-
|
1109
|
-
|
1106
|
+
DWORD towrite = RSTRING_LEN(s);
|
1107
|
+
unsigned i = 0;
|
1108
|
+
|
1109
|
+
for(i=0; i<towrite; i++) {
|
1110
|
+
buffer[i] = (unsigned short)(RSTRING_PTR(s)[i]);
|
1110
1111
|
}
|
1111
1112
|
COORD coords;
|
1112
1113
|
coords.X=NUM2INT( x );
|
@@ -1131,16 +1132,15 @@ rb_WriteConsoleOutputCharacter(VALUE self, VALUE h, VALUE s,
|
|
1131
1132
|
COORD coords;
|
1132
1133
|
coords.X=NUM2INT( x );
|
1133
1134
|
coords.Y=NUM2INT( y );
|
1134
|
-
if (WriteConsoleOutputCharacter(handle,(LPCTSTR)
|
1135
|
-
|
1135
|
+
if (WriteConsoleOutputCharacter(handle,(LPCTSTR)RSTRING_PTR(s),
|
1136
|
+
RSTRING_LEN(s),coords,&written)) {
|
1136
1137
|
return UINT2NUM( written );
|
1137
1138
|
}
|
1138
1139
|
return rb_getWin32Error();
|
1139
1140
|
}
|
1140
1141
|
|
1141
1142
|
|
1142
|
-
|
1143
|
-
Init_Console(void)
|
1143
|
+
void Init_Console_ext(void)
|
1144
1144
|
{
|
1145
1145
|
rb_mWin32 = rb_define_module("Win32");
|
1146
1146
|
rb_define_const(rb_mKernel, "Win32", rb_mWin32);
|
@@ -1214,5 +1214,3 @@ Init_Console(void)
|
|
1214
1214
|
RB_DEF_API_METHOD(WriteConsoleOutputCharacter, 4);
|
1215
1215
|
|
1216
1216
|
}
|
1217
|
-
|
1218
|
-
}
|
data/{doc → extra}/Console.rdoc
RENAMED
File without changes
|
File without changes
|
Binary file
|
Binary file
|
data/lib/Win32/Console.rb
CHANGED
@@ -4,23 +4,13 @@
|
|
4
4
|
# Original Win32API_Console was:
|
5
5
|
# Copyright (C) 2001 Michael L. Semon (mlsemon@sega.net)
|
6
6
|
|
7
|
+
# support multiple ruby version (fat binaries under windows)
|
7
8
|
begin
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
#
|
12
|
-
|
13
|
-
require "Console.so"
|
14
|
-
STDERR.print "Using faster, DLL Console.so\n" if $DEBUG
|
15
|
-
|
16
|
-
rescue Exception
|
17
|
-
|
18
|
-
STDERR.print "Using slower, non-DLL Console.rb\n" if $DEBUG
|
19
|
-
|
20
|
-
require 'Win32/Console/constants.rb'
|
21
|
-
require 'Win32/Console/api.rb'
|
22
|
-
|
23
|
-
end # rescue
|
9
|
+
require 'Console_ext'
|
10
|
+
rescue LoadError
|
11
|
+
RUBY_VERSION =~ /(\d+.\d+)/
|
12
|
+
require "#{$1}/Console_ext"
|
13
|
+
end
|
24
14
|
|
25
15
|
module Win32
|
26
16
|
class Console
|
data/lib/Win32/Console/ANSI.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
#
|
2
4
|
# Win32::Console::ANSI
|
3
5
|
#
|
@@ -137,7 +139,7 @@ module Win32
|
|
137
139
|
def _PrintString(t)
|
138
140
|
s = t.dup.to_s
|
139
141
|
while s != ''
|
140
|
-
if s.sub!( /([^\e]*)?\e([\[\(])([0-9\;\=]*)([a-zA-Z@])(.*)
|
142
|
+
if s.sub!( /([^\e]*)?\e([\[\(])([0-9\;\=]*)([a-zA-Z@])(.*)/, '\5')
|
141
143
|
@Out.Write((_conv("#$1")))
|
142
144
|
if $2 == '['
|
143
145
|
case $4
|
@@ -318,20 +320,6 @@ module Win32
|
|
318
320
|
def _conv(s)
|
319
321
|
if @concealed
|
320
322
|
s.gsub!( /\S/,' ')
|
321
|
-
elsif @conv
|
322
|
-
if EncodeOk
|
323
|
-
from_to(s, cpANSI, cpOEM)
|
324
|
-
elsif @@cp == 'cp1252cp850' # WinLatin1 --> DOSLatin1
|
325
|
-
s.tr!("���������������������������������������������������������������������������������������������������ÁāŁƁǁȁɁʁˁ́́ρЁсҁӁԁՁցׁفځہ܁݁ށ߁��������������������������������������������","???�??????????????????????????��������ρ��݁�����������������������������������������������ǎ����Ԑ�ҁӁށցׁс������噞����ꚁ��ᅁ���Ƅ�������������Ё������䔁����������")
|
326
|
-
elsif @@cp == 'cp1252cp437' # WinLatin1 --> DOSLatinUS
|
327
|
-
s.tr!("���������������������������������������������������������������������������������������������������ÁāŁƁǁȁɁʁˁ́́ρЁсҁӁԁՁցׁفځہ܁݁ށ߁��������������������������������������������", "??????????????????????????????������?�????������???�����??��?��??��������?��????����?�???????��????�?????�??�ᅁ��?�������������?������?���?�����??�")
|
328
|
-
elsif @@cp == 'cp1250cp852' # WinLatin2 --> DOSLatin2
|
329
|
-
s.tr!("���������������������������������������������������������������������������������������������������ÁāŁƁǁȁɁʁˁ́́ρЁсҁӁԁՁցׁفځہ܁݁ށ߁��������������������������������������������",
|
330
|
-
"??????????��?��??????????��?������������ρ�?����?��������?����?���???�����������聵���Ǝ���������Ӂ��ցׁҁс�Ձ��⊙����ށ�뚁�݁�ꁠ��DŽ������������ԁЁ�偢�����������������" )
|
331
|
-
elsif @@cp == 'cp1251cp855' # WinCyrillic --> DOSCyrillic
|
332
|
-
s.tr!("���������������������������������������������������������������������������������������������������ÁāŁƁǁȁɁʁˁ́́ρЁсҁӁԁՁցׁفځہ܁݁ށ߁��������������������������������������������",
|
333
|
-
"��?�??????�?����?????????�?����������??���?���?��?�??��????������������쁭��������ǁсӁՁׁ݁���聫�����������������������끬��������ƁЁҁԁց���灪������������������")
|
334
|
-
end
|
335
323
|
end
|
336
324
|
return s
|
337
325
|
end
|
data/tasks/gem.rake
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'hoe'
|
2
|
+
|
3
|
+
HOE = Hoe.spec 'win32console' do
|
4
|
+
self.version = '1.3.0.beta1'
|
5
|
+
|
6
|
+
developer 'Gonzalo Garramuno', 'ggarra@advancedsl.com.ar'
|
7
|
+
developer 'Justin Bailey', 'jgbailey@gmail.com'
|
8
|
+
developer 'Luis Lavena', 'luislavena@gmail.com'
|
9
|
+
|
10
|
+
self.rubyforge_name = 'winconsole'
|
11
|
+
|
12
|
+
spec_extras[:required_ruby_version] = Gem::Requirement.new('>= 1.8.6')
|
13
|
+
|
14
|
+
spec_extras[:extensions] = ["ext/Console_ext/extconf.rb"]
|
15
|
+
|
16
|
+
extra_rdoc_files.push *FileList['extra/*.rdoc']
|
17
|
+
|
18
|
+
spec_extras[:rdoc_options] = proc do |rdoc_options|
|
19
|
+
rdoc_options << "--exclude" << "ext"
|
20
|
+
end
|
21
|
+
|
22
|
+
extra_dev_deps << ['rake-compiler', "~> 0.7.0"]
|
23
|
+
end
|
24
|
+
|
25
|
+
file "#{HOE.spec.name}.gemspec" => ['Rakefile', 'tasks/gem.rake'] do |t|
|
26
|
+
puts "Generating #{t.name}"
|
27
|
+
File.open(t.name, 'w') { |f| f.puts HOE.spec.to_yaml }
|
28
|
+
end
|
29
|
+
|
30
|
+
desc "Generate or update the standalone gemspec file for the project"
|
31
|
+
task :gemspec => ["#{HOE.spec.name}.gemspec"]
|
data/tasks/native.rake
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# use rake-compiler for building the extension
|
2
|
+
require 'rake/extensiontask'
|
3
|
+
|
4
|
+
Rake::ExtensionTask.new('Console_ext', HOE.spec) do |ext|
|
5
|
+
# FIXME: enable cross compilation to build fat binaries
|
6
|
+
ext.cross_compile = true
|
7
|
+
ext.cross_platform = ['i386-mingw32', 'i386-mswin32-60']
|
8
|
+
|
9
|
+
# place extension binaries inside lib/X.Y
|
10
|
+
if RUBY_PLATFORM =~ /mingw|mswin/
|
11
|
+
RUBY_VERSION =~ /(\d+.\d+)/
|
12
|
+
ext.lib_dir = "lib/#{$1}"
|
13
|
+
end
|
14
|
+
end
|
metadata
CHANGED
@@ -1,40 +1,82 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: win32console
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0.beta1
|
5
5
|
platform: x86-mswin32-60
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Gonzalo Garramuno
|
8
|
+
- Justin Bailey
|
9
|
+
- Luis Lavena
|
8
10
|
autorequire:
|
9
11
|
bindir: bin
|
10
12
|
cert_chain: []
|
11
13
|
|
12
|
-
date:
|
14
|
+
date: 2009-12-29 00:00:00 -03:00
|
13
15
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
dependencies:
|
17
|
+
- !ruby/object:Gem::Dependency
|
18
|
+
name: rake-compiler
|
19
|
+
type: :development
|
20
|
+
version_requirement:
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - ~>
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: 0.7.0
|
26
|
+
version:
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: hoe
|
29
|
+
type: :development
|
30
|
+
version_requirement:
|
31
|
+
version_requirements: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 2.4.0
|
36
|
+
version:
|
37
|
+
description: |-
|
38
|
+
Win32::Console allows controling the windows command line terminal
|
39
|
+
thru an OO-interface. This allows you to query the terminal (find
|
40
|
+
its size, characters, attributes, etc). The interface and functionality
|
41
|
+
should be identical to Perl's counterpart.
|
42
|
+
|
43
|
+
A port of Perl's Win32::Console and Win32::Console::ANSI modules.
|
44
|
+
|
45
|
+
This gem packages Gonzalo Garramuno's Win32::Console project, and includes
|
46
|
+
a compiled binary for speed. The Win32::Console project's home can be
|
47
|
+
found at:
|
48
|
+
|
49
|
+
http://rubyforge.org/projects/win32console
|
50
|
+
email:
|
51
|
+
- ggarra@advancedsl.com.ar
|
52
|
+
- jgbailey@gmail.com
|
53
|
+
- luislavena@gmail.com
|
18
54
|
executables: []
|
19
55
|
|
20
56
|
extensions: []
|
21
57
|
|
22
58
|
extra_rdoc_files:
|
59
|
+
- History.txt
|
60
|
+
- Manifest.txt
|
23
61
|
- README.txt
|
24
|
-
-
|
25
|
-
-
|
26
|
-
- HISTORY.txt
|
27
|
-
- HISTORY_GEM.txt
|
62
|
+
- extra/Console.rdoc
|
63
|
+
- extra/Console_ANSI.rdoc
|
28
64
|
files:
|
29
|
-
-
|
30
|
-
-
|
31
|
-
-
|
32
|
-
-
|
65
|
+
- History.txt
|
66
|
+
- Manifest.txt
|
67
|
+
- Rakefile
|
68
|
+
- README.txt
|
69
|
+
- ext/Console_ext/Console.c
|
70
|
+
- ext/Console_ext/extconf.rb
|
71
|
+
- extra/Console.rdoc
|
72
|
+
- extra/Console_ANSI.rdoc
|
73
|
+
- lib/win32console.rb
|
74
|
+
- lib/Win32/Console.rb
|
33
75
|
- lib/Win32/Console/ANSI.rb
|
34
76
|
- lib/Win32/Console/api.rb
|
35
77
|
- lib/Win32/Console/constants.rb
|
36
|
-
-
|
37
|
-
-
|
78
|
+
- tasks/gem.rake
|
79
|
+
- tasks/native.rake
|
38
80
|
- test/test_cursor.rb
|
39
81
|
- test/test_mouse.rb
|
40
82
|
- test/test_readinput.rb
|
@@ -42,42 +84,45 @@ files:
|
|
42
84
|
- test/test_sendevent.rb
|
43
85
|
- test/test_title.rb
|
44
86
|
- test/test_write.rb
|
45
|
-
-
|
46
|
-
-
|
47
|
-
- README_GEM.txt
|
48
|
-
- INSTALL.txt
|
49
|
-
- HISTORY.txt
|
50
|
-
- HISTORY_GEM.txt
|
51
|
-
- lib/Console.so
|
87
|
+
- lib/1.8/Console_ext.so
|
88
|
+
- lib/1.9/Console_ext.so
|
52
89
|
has_rdoc: true
|
53
90
|
homepage: http://rubyforge.org/projects/winconsole
|
91
|
+
licenses: []
|
92
|
+
|
54
93
|
post_install_message:
|
55
94
|
rdoc_options:
|
56
|
-
- --title
|
57
|
-
- Win32Console Gem -- Gem for Win32::Console Project
|
58
95
|
- --main
|
59
|
-
-
|
60
|
-
- --
|
96
|
+
- README.txt
|
97
|
+
- --exclude
|
98
|
+
- ext
|
61
99
|
require_paths:
|
62
100
|
- lib
|
101
|
+
- ext
|
63
102
|
required_ruby_version: !ruby/object:Gem::Requirement
|
64
103
|
requirements:
|
65
104
|
- - ">="
|
66
105
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
106
|
+
version: 1.8.6
|
68
107
|
version:
|
69
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
109
|
requirements:
|
71
|
-
- - "
|
110
|
+
- - ">"
|
72
111
|
- !ruby/object:Gem::Version
|
73
|
-
version:
|
112
|
+
version: 1.3.1
|
74
113
|
version:
|
75
114
|
requirements: []
|
76
115
|
|
77
|
-
rubyforge_project:
|
78
|
-
rubygems_version: 1.3.
|
116
|
+
rubyforge_project: winconsole
|
117
|
+
rubygems_version: 1.3.5
|
79
118
|
signing_key:
|
80
|
-
specification_version:
|
81
|
-
summary:
|
82
|
-
test_files:
|
83
|
-
|
119
|
+
specification_version: 3
|
120
|
+
summary: Win32::Console allows controling the windows command line terminal thru an OO-interface
|
121
|
+
test_files:
|
122
|
+
- test/test_mouse.rb
|
123
|
+
- test/test_readoutput.rb
|
124
|
+
- test/test_write.rb
|
125
|
+
- test/test_readinput.rb
|
126
|
+
- test/test_sendevent.rb
|
127
|
+
- test/test_title.rb
|
128
|
+
- test/test_cursor.rb
|
data/HISTORY.txt
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
v1.0 - Added .dup to _printString function to avoid mangling outside
|
2
|
-
string references. Removed the other (later) .dup call.
|
3
|
-
Turned of some exceptions that were conflicting with using
|
4
|
-
the module with pipes or redirections.
|
5
|
-
v0.8 - Fixed bugs in reading routines, added ruby docs, and
|
6
|
-
sample test suite.
|
7
|
-
v0.5 - First public release.
|
data/HISTORY_GEM.txt
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
1.2.0 - Code corrections integrated from GitHub
|
2
|
-
* Removed license conflicting ANSI Term code and functionality.
|
3
|
-
* Better code organization and clenaup
|
4
|
-
|
5
|
-
1.1.0 - Bug fixes provided by Gordon Thiesfeld (gthiesfeld at gmail dot com).
|
6
|
-
* added #putc to Win32::Console::ANSI::IO
|
7
|
-
This putc buffers escape sequences so that they will be handled properly
|
8
|
-
*added Kernel#putc
|
9
|
-
Redefined Kernel#putc to wrap Win32::Console::ANSI::IO#putc
|
10
|
-
*added #redirected? to Win32::Console::ANSI::IO
|
11
|
-
Checks the mode of the console to see if IO is being redirected or not
|
12
|
-
* fixed "Invalid Handle" error in compiled version of GetConsoleMode
|
13
|
-
I'm actually not sure of the source of this error. It may be expected behavior when output is being redirected. I worked around it by rescuing the exception in Win32::Console#Mode and returning 9999. I picked that arbitrary value, because it is higher than 31, which is what I think is the highest value Mode would return if output isn't being redirected.
|
14
|
-
* modified Win32::Console::ANSI::IO#write
|
15
|
-
to check for redirection. If output is redirected, it uses WriteFile instead of WriteConosle. It also skips the parsing step, and passes the escape sequences through.
|
16
|
-
* added Win32::Console::API#WriteFile
|
17
|
-
to both the Ruby and compiled versions
|
18
|
-
* added Win32::Console*WriteFile
|
19
|
-
This is a wrapper around Win32::Console::API#WriteFile
|
20
|
-
* modified Win32::Console::ANSI::IO#_PrintString
|
21
|
-
Didn't change behavior, just tried to make it more idiomatic ruby. I didn't make all of the changes I wanted to, because I wasn't sure how to test them all.
|
22
|
-
* split Win32::Console::Constants and Win32::Console::API out into seperate files.
|
23
|
-
These two classes were in 'Win32/Console.rb' I moved them into 'Win32/Console/constants.rb' and 'Win32/Console/api.rb' respectively.
|
24
|
-
* cleaned up indentation
|
25
|
-
indentations was a mixture of tabs and spaces. I made everything indented with 2 spaces.
|
26
|
-
* modified all Win32::Console::API methods
|
27
|
-
It was assigning Win32API functions to class variables. I switched them to instance variables. I also changed the idiom it was using to instantiate the objects.
|
28
|
-
For instance, instead of:
|
29
|
-
|
30
|
-
if @@m_AllocConsole == nil
|
31
|
-
@@m_AllocConsole = Win32API.new( "kernel32", "AllocConsole",
|
32
|
-
[], 'l' )
|
33
|
-
|
34
|
-
It is now:
|
35
|
-
|
36
|
-
@AllocConsole ||= Win32API.new( "kernel32", "AllocConsole", [], 'l' )
|
37
|
-
* Non-string arguments passed to Win32::Console::ANSI#write caused error - fix by Ivan Evtuhovich (evtuhovich at gmail dot com).
|
38
|
-
1.0.8 - First public release of win32console gem by Justin Bailey (jgbailey at gmail dot com).
|
data/INSTALL.txt
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
|
2
|
-
To compile and install:
|
3
|
-
|
4
|
-
|
5
|
-
Open a windows console.
|
6
|
-
> vcvars32.bat # to set up microsoft's compiling environment
|
7
|
-
# this is located in the bin/ directory of the MSVC compiler
|
8
|
-
> ruby extconf.rb # to create a Makefile
|
9
|
-
> nmake # to compile
|
10
|
-
> nmake install # to install
|
11
|
-
|
12
|
-
|
13
|
-
To test:
|
14
|
-
|
15
|
-
> cd test
|
16
|
-
> dir # to see available samples
|
17
|
-
> ruby [anysample]
|
18
|
-
|
data/README_GEM.txt
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
= Introduction
|
2
|
-
|
3
|
-
This gem packages Gonzalo Garramuno's Win32::Console project, and includes a compiled binary for speed. The Win32::Console project's home can be found at:
|
4
|
-
|
5
|
-
http://rubyforge.org/projects/win32console
|
6
|
-
|
7
|
-
To use the gem, just put
|
8
|
-
|
9
|
-
require 'win32console'
|
10
|
-
|
11
|
-
At the top of your file.
|
12
|
-
|
13
|
-
= Example
|
14
|
-
|
15
|
-
To output a simple bolded string, try this script:
|
16
|
-
|
17
|
-
require 'rubygems'
|
18
|
-
require 'win32console'
|
19
|
-
include Win32::Console::ANSI
|
20
|
-
include Term::ANSIColor
|
21
|
-
|
22
|
-
puts bold << "bolded text" << clear << " and no longer bold."
|
23
|
-
|
24
|
-
= Formatting Methods Available
|
25
|
-
|
26
|
-
The full list of methods available is found in lib/Term/ansicolor.rb (generated from the @@attributes array):
|
27
|
-
|
28
|
-
clear
|
29
|
-
reset # synonym for clear
|
30
|
-
bold
|
31
|
-
dark
|
32
|
-
italic # not widely implemented
|
33
|
-
underline
|
34
|
-
underscore # synonym for underline
|
35
|
-
blink
|
36
|
-
rapid_blink # not widely implemented
|
37
|
-
negative # no reverse because of String#reverse
|
38
|
-
concealed
|
39
|
-
strikethrough # not widely implemented
|
40
|
-
|
41
|
-
# The following will set the foreground color
|
42
|
-
|
43
|
-
black
|
44
|
-
red
|
45
|
-
green
|
46
|
-
yellow
|
47
|
-
blue
|
48
|
-
magenta
|
49
|
-
cyan
|
50
|
-
white
|
51
|
-
|
52
|
-
# The following will set the background color
|
53
|
-
|
54
|
-
on_black
|
55
|
-
on_red
|
56
|
-
on_green
|
57
|
-
on_yellow
|
58
|
-
on_blue
|
59
|
-
on_magenta
|
60
|
-
on_cyan
|
61
|
-
on_white
|
62
|
-
|
63
|
-
The methods are fairly sophisticated. If you don't pass an argument, the appropriate escape sequence is returned. If a string is given, it will be outputted with an escape sequence wrapping it to apply the formatting to just that portion. If a block is given, the escape sequence will wrap the output of the block. Finally, if the Term::ANSIColor module is mixed into an object, and that instance supports to_str, tnen the result of to_str will be wrapped in the escape sequence.
|
64
|
-
|
data/lib/Console.so
DELETED
Binary file
|