<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/lib/reline/unicode.rb, branch v3_2_11</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>[ruby/reline] "Halfwidth char + halfwidth (han)dakuten" is a single grapheme.</title>
<updated>2021-12-23T15:51:47+00:00</updated>
<author>
<name>aycabta</name>
<email>aycabta@gmail.com</email>
</author>
<published>2021-12-23T14:08:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=726cc8122e5abb17a2af156e83ac88c1e4e9a42e'/>
<id>726cc8122e5abb17a2af156e83ac88c1e4e9a42e</id>
<content type='text'>
When a halfwidth character is followed by a halfwidth dakuten or a
halfwidth handakuten character, it should be treated as a single
grapheme.

https://github.com/ruby/reline/commit/9f20b9ec28
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a halfwidth character is followed by a halfwidth dakuten or a
halfwidth handakuten character, it should be treated as a single
grapheme.

https://github.com/ruby/reline/commit/9f20b9ec28
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/reline] Add that Reline::Unicode.take_range is cutting based on width</title>
<updated>2021-09-05T20:22:36+00:00</updated>
<author>
<name>aycabta</name>
<email>aycabta@gmail.com</email>
</author>
<published>2021-09-05T20:22:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=e68a5862630590caf79ac0576ba6d15135709d58'/>
<id>e68a5862630590caf79ac0576ba6d15135709d58</id>
<content type='text'>
https://github.com/ruby/reline/commit/18405d9594
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/reline/commit/18405d9594
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/reline] Add comments about optimizing chars in ASCII range of UTF-8</title>
<updated>2021-09-05T20:22:29+00:00</updated>
<author>
<name>aycabta</name>
<email>aycabta@gmail.com</email>
</author>
<published>2021-09-05T20:19:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=1fe604a67501d5f05694266d065833e3c150d79a'/>
<id>1fe604a67501d5f05694266d065833e3c150d79a</id>
<content type='text'>
https://github.com/ruby/reline/commit/3c13d93486
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/reline/commit/3c13d93486
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/reline] Fix Reline::Unicode.take_range as it was not fully functional</title>
<updated>2021-08-31T06:19:32+00:00</updated>
<author>
<name>aycabta</name>
<email>aycabta@gmail.com</email>
</author>
<published>2021-08-31T06:09:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c8a07a1231361f41963960d5acb129808f6d1c98'/>
<id>c8a07a1231361f41963960d5acb129808f6d1c98</id>
<content type='text'>
https://github.com/ruby/reline/commit/5da6a8d851
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/reline/commit/5da6a8d851
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/reline] Implement dialog with autocomplete callback</title>
<updated>2021-08-29T11:30:32+00:00</updated>
<author>
<name>aycabta</name>
<email>aycabta@gmail.com</email>
</author>
<published>2021-08-17T10:21:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=fb0fc201963c5e70e62b72e0ac9e27dc39e0f5ec'/>
<id>fb0fc201963c5e70e62b72e0ac9e27dc39e0f5ec</id>
<content type='text'>
https://github.com/ruby/reline/commit/1401d6165e
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/reline/commit/1401d6165e
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/reline] Return 1 when char width not found</title>
<updated>2021-02-20T21:41:03+00:00</updated>
<author>
<name>aycabta</name>
<email>aycabta@gmail.com</email>
</author>
<published>2021-02-14T15:27:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=dc9e33016c289f54407239b58e3e4669fdd442ad'/>
<id>dc9e33016c289f54407239b58e3e4669fdd442ad</id>
<content type='text'>
This fixes ruby/reline#261.

https://github.com/ruby/reline/commit/3cf1213014
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes ruby/reline#261.

https://github.com/ruby/reline/commit/3cf1213014
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/reline] Doesn't contain terminate spaces by cw</title>
<updated>2020-12-24T14:26:22+00:00</updated>
<author>
<name>aycabta</name>
<email>aycabta@gmail.com</email>
</author>
<published>2020-12-24T13:53:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9a7647d9eb59c8ed00b0de46fbf26f744a4158c5'/>
<id>9a7647d9eb59c8ed00b0de46fbf26f744a4158c5</id>
<content type='text'>
This closes ruby/reline#233.

https://github.com/ruby/reline/commit/4c3f2e2eae
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This closes ruby/reline#233.

https://github.com/ruby/reline/commit/4c3f2e2eae
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/reline] Delete the last char of a line by dw</title>
<updated>2020-12-24T14:26:22+00:00</updated>
<author>
<name>aycabta</name>
<email>aycabta@gmail.com</email>
</author>
<published>2020-12-24T12:24:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0db9842b2ca85709424d6c9c1e11caeae30dfae7'/>
<id>0db9842b2ca85709424d6c9c1e11caeae30dfae7</id>
<content type='text'>
This closes ruby/reline#229.

https://github.com/ruby/reline/commit/3f0ae689c4
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This closes ruby/reline#229.

https://github.com/ruby/reline/commit/3f0ae689c4
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/reline] Optimize regexp handling for width</title>
<updated>2020-12-04T17:58:59+00:00</updated>
<author>
<name>aycabta</name>
<email>aycabta@gmail.com</email>
</author>
<published>2020-11-18T06:21:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=fb2fda9a27ed96d5100897e93cc31e155b9c41a8'/>
<id>fb2fda9a27ed96d5100897e93cc31e155b9c41a8</id>
<content type='text'>
The rendering time in IRB has been reduced as follows:

  start = Time.now

  [{"_id"=&gt;"5f9072a4589a06d2d74b6028",
    "index"=&gt;0,
    "guid"=&gt;"6b3051e2-dbc7-4537-bdb9-6cd7bb5358a7",
    "isActive"=&gt;true,
    "balance"=&gt;"$1,442.84",
    "picture"=&gt;"http://placehold.it/32x32",
    "age"=&gt;34,
    "eyeColor"=&gt;"blue",
    "name"=&gt;{"first"=&gt;"Ward", "last"=&gt;"Levy"},
    "company"=&gt;"HYPLEX",
    "email"=&gt;"ward.levy@hyplex.us",
    "phone"=&gt;"+1 (867) 568-3319",
    "address"=&gt;"867 Cobek Court, Clara, Maryland, 3254",
    "about"=&gt;
     "Exercitation eu ex aliqua sit. Pariatur aliquip incididunt sint id non consectetur ullamco Lorem ea mollit duis amet sint labore. Commodo laborum labore commodo officia in cillum adipisicing esse excepteur cupidatat adipisicing ut. Non esse incididunt voluptate aliquip cillum eu aute duis laboris sit et. Amet enim quis tempor occaecat excepteur exercitation excepteur deserunt amet cillum adipisicing.",
    "registered"=&gt;"Monday, May 25, 2015 6:51 AM",
    "latitude"=&gt;"16.001127",
    "longitude"=&gt;"-72.377848",
    "tags"=&gt;["dolore", "nostrud", "occaecat", "cillum", "nisi"],
    "range"=&gt;[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    "friends"=&gt;
     [{"id"=&gt;0, "name"=&gt;"Alison Bryant"},
      {"id"=&gt;1, "name"=&gt;"Ester Espinoza"},
      {"id"=&gt;2, "name"=&gt;"Sullivan Kane"}],
    "greeting"=&gt;"Hello, Ward! You have 7 unread messages.",
    "favoriteFruit"=&gt;"apple"}]

  puts "Duration: #{Time.now - start} seconds"

0.47sec -&gt; 0.34sec

  start = Time.now

  "Exercitation eu ex aliqua sit. Pariatur aliquip incididunt sint id non consectetur ullamco Lorem ea mollit duis amet sint labore. Commodo laborum labore commodo officia in cillum adipisicing esse excepteur cupidatat adipisicing ut. Non esse incididunt voluptate aliquip cillum eu aute duis laboris sit et. Amet enim quis tempor occaecat excepteur exercitation excepteur deserunt amet cillum adipisicing."

  puts "Duration: #{Time.now - start} seconds"

0.11sec -&gt; 0.08sec

  start = Time.now

  def each_top_level_statement
    initialize_input
    catch(:TERM_INPUT) do
      loop do
        begin
          prompt
          unless l = lex
            throw :TERM_INPUT if @line == ''
          else
            @line_no += l.count("\n")
            next if l == "\n"
            @line.concat l
            if @code_block_open or @ltype or @continue or @indent &gt; 0
              next
            end
          end
          if @line != "\n"
            @line.force_encoding(@io.encoding)
            yield @line, @exp_line_no
          end
          break if @io.eof?
          @line = ''
          @exp_line_no = @line_no

          @indent = 0
        rescue TerminateLineInput
          initialize_input
          prompt
        end
      end
    end
  end

  puts "Duration: #{Time.now - start} seconds"

0.40sec -&gt; 0.33sec

Co-authored-by: NARUSE, Yui &lt;naruse@airemix.jp&gt;

https://github.com/ruby/reline/commit/a9e39ddcc4
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The rendering time in IRB has been reduced as follows:

  start = Time.now

  [{"_id"=&gt;"5f9072a4589a06d2d74b6028",
    "index"=&gt;0,
    "guid"=&gt;"6b3051e2-dbc7-4537-bdb9-6cd7bb5358a7",
    "isActive"=&gt;true,
    "balance"=&gt;"$1,442.84",
    "picture"=&gt;"http://placehold.it/32x32",
    "age"=&gt;34,
    "eyeColor"=&gt;"blue",
    "name"=&gt;{"first"=&gt;"Ward", "last"=&gt;"Levy"},
    "company"=&gt;"HYPLEX",
    "email"=&gt;"ward.levy@hyplex.us",
    "phone"=&gt;"+1 (867) 568-3319",
    "address"=&gt;"867 Cobek Court, Clara, Maryland, 3254",
    "about"=&gt;
     "Exercitation eu ex aliqua sit. Pariatur aliquip incididunt sint id non consectetur ullamco Lorem ea mollit duis amet sint labore. Commodo laborum labore commodo officia in cillum adipisicing esse excepteur cupidatat adipisicing ut. Non esse incididunt voluptate aliquip cillum eu aute duis laboris sit et. Amet enim quis tempor occaecat excepteur exercitation excepteur deserunt amet cillum adipisicing.",
    "registered"=&gt;"Monday, May 25, 2015 6:51 AM",
    "latitude"=&gt;"16.001127",
    "longitude"=&gt;"-72.377848",
    "tags"=&gt;["dolore", "nostrud", "occaecat", "cillum", "nisi"],
    "range"=&gt;[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    "friends"=&gt;
     [{"id"=&gt;0, "name"=&gt;"Alison Bryant"},
      {"id"=&gt;1, "name"=&gt;"Ester Espinoza"},
      {"id"=&gt;2, "name"=&gt;"Sullivan Kane"}],
    "greeting"=&gt;"Hello, Ward! You have 7 unread messages.",
    "favoriteFruit"=&gt;"apple"}]

  puts "Duration: #{Time.now - start} seconds"

0.47sec -&gt; 0.34sec

  start = Time.now

  "Exercitation eu ex aliqua sit. Pariatur aliquip incididunt sint id non consectetur ullamco Lorem ea mollit duis amet sint labore. Commodo laborum labore commodo officia in cillum adipisicing esse excepteur cupidatat adipisicing ut. Non esse incididunt voluptate aliquip cillum eu aute duis laboris sit et. Amet enim quis tempor occaecat excepteur exercitation excepteur deserunt amet cillum adipisicing."

  puts "Duration: #{Time.now - start} seconds"

0.11sec -&gt; 0.08sec

  start = Time.now

  def each_top_level_statement
    initialize_input
    catch(:TERM_INPUT) do
      loop do
        begin
          prompt
          unless l = lex
            throw :TERM_INPUT if @line == ''
          else
            @line_no += l.count("\n")
            next if l == "\n"
            @line.concat l
            if @code_block_open or @ltype or @continue or @indent &gt; 0
              next
            end
          end
          if @line != "\n"
            @line.force_encoding(@io.encoding)
            yield @line, @exp_line_no
          end
          break if @io.eof?
          @line = ''
          @exp_line_no = @line_no

          @indent = 0
        rescue TerminateLineInput
          initialize_input
          prompt
        end
      end
    end
  end

  puts "Duration: #{Time.now - start} seconds"

0.40sec -&gt; 0.33sec

Co-authored-by: NARUSE, Yui &lt;naruse@airemix.jp&gt;

https://github.com/ruby/reline/commit/a9e39ddcc4
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/reline] Optimize ASCII character width calculation</title>
<updated>2020-12-04T17:58:59+00:00</updated>
<author>
<name>aycabta</name>
<email>aycabta@gmail.com</email>
</author>
<published>2020-11-17T02:55:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=3d0bcf1cc28041454de90de76ac755f20ccd7658'/>
<id>3d0bcf1cc28041454de90de76ac755f20ccd7658</id>
<content type='text'>
The rendering time in IRB has been reduced as follows:

  start = Time.now

  [{"_id"=&gt;"5f9072a4589a06d2d74b6028",
    "index"=&gt;0,
    "guid"=&gt;"6b3051e2-dbc7-4537-bdb9-6cd7bb5358a7",
    "isActive"=&gt;true,
    "balance"=&gt;"$1,442.84",
    "picture"=&gt;"http://placehold.it/32x32",
    "age"=&gt;34,
    "eyeColor"=&gt;"blue",
    "name"=&gt;{"first"=&gt;"Ward", "last"=&gt;"Levy"},
    "company"=&gt;"HYPLEX",
    "email"=&gt;"ward.levy@hyplex.us",
    "phone"=&gt;"+1 (867) 568-3319",
    "address"=&gt;"867 Cobek Court, Clara, Maryland, 3254",
    "about"=&gt;
     "Exercitation eu ex aliqua sit. Pariatur aliquip incididunt sint id non consectetur ullamco Lorem ea mollit duis amet sint labore. Commodo laborum labore commodo officia in cillum adipisicing esse excepteur cupidatat adipisicing ut. Non esse incididunt voluptate aliquip cillum eu aute duis laboris sit et. Amet enim quis tempor occaecat excepteur exercitation excepteur deserunt amet cillum adipisicing.",
    "registered"=&gt;"Monday, May 25, 2015 6:51 AM",
    "latitude"=&gt;"16.001127",
    "longitude"=&gt;"-72.377848",
    "tags"=&gt;["dolore", "nostrud", "occaecat", "cillum", "nisi"],
    "range"=&gt;[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    "friends"=&gt;
     [{"id"=&gt;0, "name"=&gt;"Alison Bryant"},
      {"id"=&gt;1, "name"=&gt;"Ester Espinoza"},
      {"id"=&gt;2, "name"=&gt;"Sullivan Kane"}],
    "greeting"=&gt;"Hello, Ward! You have 7 unread messages.",
    "favoriteFruit"=&gt;"apple"}]

  puts "Duration: #{Time.now - start} seconds"

0.73sec -&gt; 0.43sec

  start = Time.now

  "Exercitation eu ex aliqua sit. Pariatur aliquip incididunt sint id non consectetur ullamco Lorem ea mollit duis amet sint labore. Commodo laborum labore commodo officia in cillum adipisicing esse excepteur cupidatat adipisicing ut. Non esse incididunt voluptate aliquip cillum eu aute duis laboris sit et. Amet enim quis tempor occaecat excepteur exercitation excepteur deserunt amet cillum adipisicing."

  puts "Duration: #{Time.now - start} seconds"

0.15sec -&gt; 0.10sec

  start = Time.now

  def each_top_level_statement
    initialize_input
    catch(:TERM_INPUT) do
      loop do
        begin
          prompt
          unless l = lex
            throw :TERM_INPUT if @line == ''
          else
            @line_no += l.count("\n")
            next if l == "\n"
            @line.concat l
            if @code_block_open or @ltype or @continue or @indent &gt; 0
              next
            end
          end
          if @line != "\n"
            @line.force_encoding(@io.encoding)
            yield @line, @exp_line_no
          end
          break if @io.eof?
          @line = ''
          @exp_line_no = @line_no

          @indent = 0
        rescue TerminateLineInput
          initialize_input
          prompt
        end
      end
    end
  end

  puts "Duration: #{Time.now - start} seconds"

0.59sec -&gt; 0.38sec

Co-authored-by: NARUSE, Yui &lt;naruse@airemix.jp&gt;

https://github.com/ruby/reline/commit/36bc9e3abb
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The rendering time in IRB has been reduced as follows:

  start = Time.now

  [{"_id"=&gt;"5f9072a4589a06d2d74b6028",
    "index"=&gt;0,
    "guid"=&gt;"6b3051e2-dbc7-4537-bdb9-6cd7bb5358a7",
    "isActive"=&gt;true,
    "balance"=&gt;"$1,442.84",
    "picture"=&gt;"http://placehold.it/32x32",
    "age"=&gt;34,
    "eyeColor"=&gt;"blue",
    "name"=&gt;{"first"=&gt;"Ward", "last"=&gt;"Levy"},
    "company"=&gt;"HYPLEX",
    "email"=&gt;"ward.levy@hyplex.us",
    "phone"=&gt;"+1 (867) 568-3319",
    "address"=&gt;"867 Cobek Court, Clara, Maryland, 3254",
    "about"=&gt;
     "Exercitation eu ex aliqua sit. Pariatur aliquip incididunt sint id non consectetur ullamco Lorem ea mollit duis amet sint labore. Commodo laborum labore commodo officia in cillum adipisicing esse excepteur cupidatat adipisicing ut. Non esse incididunt voluptate aliquip cillum eu aute duis laboris sit et. Amet enim quis tempor occaecat excepteur exercitation excepteur deserunt amet cillum adipisicing.",
    "registered"=&gt;"Monday, May 25, 2015 6:51 AM",
    "latitude"=&gt;"16.001127",
    "longitude"=&gt;"-72.377848",
    "tags"=&gt;["dolore", "nostrud", "occaecat", "cillum", "nisi"],
    "range"=&gt;[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    "friends"=&gt;
     [{"id"=&gt;0, "name"=&gt;"Alison Bryant"},
      {"id"=&gt;1, "name"=&gt;"Ester Espinoza"},
      {"id"=&gt;2, "name"=&gt;"Sullivan Kane"}],
    "greeting"=&gt;"Hello, Ward! You have 7 unread messages.",
    "favoriteFruit"=&gt;"apple"}]

  puts "Duration: #{Time.now - start} seconds"

0.73sec -&gt; 0.43sec

  start = Time.now

  "Exercitation eu ex aliqua sit. Pariatur aliquip incididunt sint id non consectetur ullamco Lorem ea mollit duis amet sint labore. Commodo laborum labore commodo officia in cillum adipisicing esse excepteur cupidatat adipisicing ut. Non esse incididunt voluptate aliquip cillum eu aute duis laboris sit et. Amet enim quis tempor occaecat excepteur exercitation excepteur deserunt amet cillum adipisicing."

  puts "Duration: #{Time.now - start} seconds"

0.15sec -&gt; 0.10sec

  start = Time.now

  def each_top_level_statement
    initialize_input
    catch(:TERM_INPUT) do
      loop do
        begin
          prompt
          unless l = lex
            throw :TERM_INPUT if @line == ''
          else
            @line_no += l.count("\n")
            next if l == "\n"
            @line.concat l
            if @code_block_open or @ltype or @continue or @indent &gt; 0
              next
            end
          end
          if @line != "\n"
            @line.force_encoding(@io.encoding)
            yield @line, @exp_line_no
          end
          break if @io.eof?
          @line = ''
          @exp_line_no = @line_no

          @indent = 0
        rescue TerminateLineInput
          initialize_input
          prompt
        end
      end
    end
  end

  puts "Duration: #{Time.now - start} seconds"

0.59sec -&gt; 0.38sec

Co-authored-by: NARUSE, Yui &lt;naruse@airemix.jp&gt;

https://github.com/ruby/reline/commit/36bc9e3abb
</pre>
</div>
</content>
</entry>
</feed>
