Unexpected keyword_end error, yet syntax seems fine

ghz 1years ago ⋅ 2219 views

Question

This function is supposed to pull names from a Comma Separated Values file, and place them into an array.

def xprt_csv_to_ary(csv_file)
    namecatcher_regex = "/^[\.{1}]([A-Z]+)\.{3}/" # Matches up to char before next name
    current_word = 0
    names_array = []
    while current_word < 5000
        if current_word == 0
            name = csv_file.readline.match(namecatched_regex)
        else
            name = csv_file.past_match.match(namecatcher_regex)
        end
        names_array[current_word] = name
        current_word ++
    end
    return names_array
end

I'm getting the following error:

syntax error, unexpected keyword_end

I would be as happy to be referred to an existing question that solves my problem as to have someone answer me directly.


Answer

Your error comes from line:

current_word ++

There's no such syntax in Ruby. It should be:

current_word += 1

What's more, you create your regexp incorrectly. It should be:

namecatcher_regex = /^[\.{1}]([A-Z]+)\.{3}/

There may be some other errors that I didn't notice.