ansi-sys 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ * 2007-11-16 zunda <zunda at freeshell.org>
2
+ - (0.7.1)
3
+ - lib/ansisys.rb: modified not to put wide-characters beyond right edge
4
+ - spec/character_screen_spec.rb: added a spec
5
+
1
6
  * 2007-11-14 zunda <zunda at freeshell.org>
2
7
  - (0.7.0)
3
8
  - bin/ansi-to-html: added
@@ -12,7 +12,7 @@ module AnsiSys
12
12
  module VERSION #:nodoc:
13
13
  MAJOR = 0
14
14
  MINOR = 7
15
- TINY = 0
15
+ TINY = 1
16
16
 
17
17
  STRING = [MAJOR, MINOR, TINY].join('.')
18
18
  end
@@ -101,6 +101,7 @@ module AnsiSys
101
101
  def echo_on(screen, cursor)
102
102
  each_char do |c|
103
103
  w = width(c)
104
+ cursor.fit!(w)
104
105
  screen.write(c, w, cursor.cur_col, cursor.cur_row, @sgr.dup)
105
106
  cursor.advance!(w)
106
107
  end
@@ -194,13 +195,29 @@ module AnsiSys
194
195
  r = nil
195
196
  @cur_col += width
196
197
  if @cur_col > @max_col
198
+ line_feed!
199
+ r = "\n"
200
+ end
201
+ return r
202
+ end
203
+
204
+ # check if a character with _width_ fits within the maximum columns,
205
+ # feed a line if not
206
+ def fit!(width = 1)
207
+ r = nil
208
+ if @cur_col + width > @max_col + 1
209
+ line_feed!
197
210
  r = "\n"
198
- @cur_col = 1
199
- @cur_row += 1
200
211
  end
201
212
  return r
202
213
  end
203
214
 
215
+ # feed a line
216
+ def line_feed!
217
+ @cur_col = 1
218
+ @cur_row += 1
219
+ @max_row = @cur_row if @max_row and @cur_row > @max_row
220
+ end
204
221
  end
205
222
 
206
223
  # Select Graphic Rendition
@@ -30,3 +30,21 @@ _SCREEN
30
30
  end
31
31
  end
32
32
 
33
+ describe "Wide-characters echoed on right edge of a Screen" do
34
+ before do
35
+ $KCODE = 'u'
36
+ @string = "\346\227\245\346\234\254\350\252\236" # `Nihongo' in UTF-8
37
+ @char = Characters.new(@string, SGR.new)
38
+ @screen = Screen.new(Screen.default_css_colors, 3)
39
+ @cursor = Cursor.new(1, 1, 3)
40
+ @char.echo_on(@screen, @cursor)
41
+ end
42
+
43
+ it "should fit in the width" do
44
+ @screen.render(:text).should == <<_SCREEN.chomp
45
+ \346\227\245
46
+ \346\234\254
47
+ \350\252\236
48
+ _SCREEN
49
+ end
50
+ end
@@ -33,12 +33,9 @@
33
33
  <h1>Ruby-ANSI.SYS</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/ansi-sys"; return false'>
35
35
  <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/ansi-sys" class="numbers">0.3.0</a>
36
+ <a href="http://rubyforge.org/projects/ansi-sys" class="numbers">0.7.1</a>
37
37
  </div>
38
- <h1>&#x2192; &#8216;ansi-sys&#8217;</h1>
39
-
40
-
41
- <h2>What</h2>
38
+ <h2>What</h2>
42
39
 
43
40
 
44
41
  <p>MS-DOS console (with <code>DEVICE=ANSI.SYS</code>), Linux
@@ -85,9 +82,12 @@ misc/plugin directory and configure Hiki to enable the plugin.</p>
85
82
  <p>As a Ruby library:</p>
86
83
 
87
84
 
88
- <pre>terminal = Terminal.new
85
+ <pre>
86
+ require 'ansisys'
87
+ terminal = AnsiSys::Terminal.new
89
88
  terminal.echo("ansi-escaped-text")
90
- terminal.render #=&gt; HTML fragment</pre>
89
+ terminal.render #=&gt; HTML fragment
90
+ </pre>
91
91
 
92
92
  <p>As a Hiki plugin:</p>
93
93
 
@@ -110,7 +110,7 @@ terminal.render #=&gt; HTML fragment</pre>
110
110
  <p>Please refer
111
111
  <a href="rdoc/files/License_txt.html">License.txt</a></p>
112
112
  <p class="coda">
113
- zunda, 23rd October 2007<br>
113
+ zunda, 3rd November 2007<br>
114
114
  Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
115
115
  </p>
116
116
  </div>
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: ansi-sys
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.7.0
7
- date: 2007-11-14 00:00:00 -10:00
6
+ version: 0.7.1
7
+ date: 2007-11-16 00:00:00 -10:00
8
8
  summary: Ruby-ANSI.SYS is a library to render texts with ANSI escape sequences.
9
9
  require_paths:
10
10
  - lib