Sha256: d8ad204d1d1ea839aa3dd3ab15396853c1855e61288f30192806f860142df5d5

Contents?: true

Size: 688 Bytes

Versions: 1

Compression:

Stored size: 688 Bytes

Contents

require 'hirb'
require 'unicode/display_width'

module Hirb
  module Unicode
    module StringUtility
      def size(string)
        string.display_width
      end

      def slice(string, offset, width)
        chars = string.chars.to_a[offset..-1].to_a

        current_length = 0
        split_index = 0
        chars.each_with_index do |c, i|
          char_width = self.size(c)
          break if current_length + char_width > width
          split_index = i+1
          current_length += char_width
        end

        split_index ||= chars.count
        head = chars[0, split_index].join
        head
      end
    end
  end
end

Hirb::String.extend(Hirb::Unicode::StringUtility)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hirb-unicode-0.0.1 lib/hirb-unicode.rb