Sha256: 8d78bffa36cd49f9de4d8342ed83d64b23b3787caee88cf7b6cc990574a37547

Contents?: true

Size: 1.29 KB

Versions: 3

Compression:

Stored size: 1.29 KB

Contents

# encoding: UTF-8

# Copyright 2012 Twitter, Inc
# http://www.apache.org/licenses/LICENSE-2.0

module TwitterCldr
  module Segmentation
    class BreakIterator
      class << self
        def iterator_for(boundary_type, locale = nil, options = {})
          rule_set = RuleSet.create(locale, boundary_type, options)

          case boundary_type
            when 'word'
              WordIterator.new(rule_set)
            else
              SegmentIterator.new(rule_set)
          end
        end
      end

      attr_reader :locale, :options

      def initialize(locale = TwitterCldr.locale, options = {})
        @locale = locale
        @options = options
      end

      def each_sentence(str, &block)
        iter = iterator_for('sentence')
        iter.each_segment(str, &block)
      end

      def each_word(str, &block)
        iter = iterator_for('word')
        iter.each_segment(str, &block)
      end

      def each_grapheme_cluster(str, &block)
        iter = iterator_for('grapheme')
        iter.each_segment(str, &block)
      end

      def each_line(str, &block)
        iter = iterator_for('line')
        iter.each_segment(str, &block)
      end

      private

      def iterator_for(boundary_type)
        self.class.iterator_for(boundary_type, locale, options)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
twitter_cldr-6.13.0 lib/twitter_cldr/segmentation/break_iterator.rb
twitter_cldr-6.12.1 lib/twitter_cldr/segmentation/break_iterator.rb
twitter_cldr-6.12.0 lib/twitter_cldr/segmentation/break_iterator.rb