preprocess

in lib/twitter_cldr/parsers/unicode_regex_parser.rb [59:91]


      def preprocess(tokens)
        result = []
        i = 0

        while i < tokens.size
          is_range = valid_ranged_character_class_token?(tokens[i]) &&
            valid_ranged_character_class_token?(tokens[i + 2]) &&
            tokens[i + 1].type == :dash

          if is_range
            initial = send(tokens[i].type, tokens[i])
            final = send(tokens[i + 2].type, tokens[i + 2])
            result << make_character_range(initial, final)
            i += 3
          else
            if negated_token?(tokens[i])
              result += [
                make_token(:open_bracket),
                make_token(:negate),
                tokens[i],
                make_token(:close_bracket)
              ]
            else
              result << tokens[i]
            end

            i += 1
          end
        end

        result
      end