README in console-0.2.3 vs README in console-0.3

- old
+ new

@@ -1,22 +1,51 @@ Console is a helper class for displaying super-ASCII strings on the console. -Console is needed when you want to mix multi-column (e.g. Chinese, Japanese and -Korean characters) and single-column (e.g. ASCII) characters and know how much -horizontal realestate the result takes on the screen. This is generally -necessary when you want to have internationalization support in a console -program. +Console is necessary when you want to mix multi-column (e.g. Chinese, Japanese +and Korean characters) and single-column (e.g. ASCII, Latin, Vietnamese) +characters on screen in such a way that the display width matters. This is +typically the case in curses programs with i18n support, but can be necessary +in certain internationalized $stdout applications as well. +Note that display width is different from a) the number of bytes in the string, +and b) the number of characters in the string. When you move beyond ASCII +strings, these three metrics can all have distinct values for a given string. + The Console gem currently provides these methods: +- Console.init_locale!: set the program's locale from the appropriate + environment variables. (Ruby 1.8 programs must call this before calling any + of the other methods. Ruby 1.9 programs can call it or skip it without + effect.) - Console.display_width: calculates the display width of a string - Console.display_slice: returns a substring according to display offset and display width parameters. If you require 'console', you will get just those methods. If you require 'console/string', you will get String#display_width and String#display_slice methods directly on all strings. -The console homepage is <code>http://masanjin.net/console/</code>. += EXAMPLE USAGE + ## encoding: UTF-8 (this comment required for ruby 1.9) + require 'rubygems' # this line required for ruby 1.8 + require 'console' + require 'console/string' + + Console.init_locale! + + STRING = "我能吞下玻璃而不傷身體。Góa ē-tàng chia̍h po-lê, mā bē tio̍h-siong.私はガラスを食べられます。それは私を傷つけません。I can eat glass and it doesn't hurt me." + COLS = 30 + + rows = STRING.display_width / COLS + (0 .. rows).each { |i| puts STRING.display_slice(i * COLS, COLS) } + +The result will be displayed in an even 30-column block on the console, even +though some characters in the string require two columns to display and some +characters require one column. + += MORE + +The console homepage is <code>http://masanjin.net/console/</code>. The console git repo is <code>git://masanjin.net/console</code>. +