Sha256: 4db57bf71dbc236c1817f7d4fcd355c952219f2c060577b6f9fc2d4bac2374f9

Contents?: true

Size: 1.47 KB

Versions: 26

Compression:

Stored size: 1.47 KB

Contents

# encoding: UTF-8

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

module TwitterCldr
  module Shared
    class UnicodeSet

      attr_reader :set

      def initialize(initial = [])
        @set = TwitterCldr::Utils::RangeSet.from_array(initial)
      end

      def apply_pattern(pattern)
        re = TwitterCldr::Shared::UnicodeRegex.compile(pattern)

        re.elements.each do |element|
          element.to_set.ranges.each do |range|
            set << range
          end
        end

        self
      end

      def apply_property(property_name, property_value = nil)
        set.union!(
          TwitterCldr::Shared::CodePoint.properties.code_points_for_property(
            property_name, property_value
          )
        )
      end

      def add(codepoint)
        add_range(codepoint..codepoint)
      end

      def add_range(range)
        set << range
        self
      end

      def add_set(unicode_set)
        set.union!(unicode_set.set)
        self
      end

      def add_list(list)
        set.union!(self.class.new(list).set)
      end

      def subtract(codepoint)
        subtract_range(codepoint..codepoint)
      end

      def subtract_range(range)
        set.subtract!(TwitterCldr::Utils::RangeSet.new([range]))
        self
      end

      def each(&block)
        set.each(&block)
      end

      def include?(codepoint)
        set.include?(codepoint)
      end

      def to_set
        set.to_set
      end

    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
twitter_cldr-6.13.0 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.12.1 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.12.0 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.11.5 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.11.4 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.11.3 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.11.2 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.11.1 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.11.0 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.10.0 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.9.0 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.8.0 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.7.0 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.6.2 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.6.1 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.6.0 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.5.0 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.4.0 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.3.0 lib/twitter_cldr/shared/unicode_set.rb
twitter_cldr-6.2.0 lib/twitter_cldr/shared/unicode_set.rb