evaluate

in lib/twitter_cldr/parsers/unicode_regex/character_class.rb [108:138]


        def evaluate(node)
          case node
            when UnaryOperator, BinaryOperator
              case node.operator
                when :negate
                  TwitterCldr::Shared::UnicodeRegex.valid_regexp_chars.subtract(
                    evaluate(node.child)
                  )
                when :union, :pipe
                  evaluate(node.left).union(
                    evaluate(node.right)
                  )
                when :dash
                  evaluate(node.left).difference(
                    evaluate(node.right)
                  )
                when :ampersand
                  evaluate(node.left).intersection(
                    evaluate(node.right)
                  )
              end

            else
              if node
                node.to_set
              else
                TwitterCldr::Utils::RangeSet.new([])
              end
          end
        end