Old high school files. Lessson notes/codes/projects etc.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hsf/wesweb01/evil_infosite/db_parse.rb

45 lines
1.4 KiB

#!/usr/bin/ruby -w
3 years ago
DATA_FILE_PATH = "data/evil_data.csv"
3 years ago
CSV_REGEX = /(?!\s*$)\s*(?:'([^'\\]*(?:\\[\S\s][^'\\]*)*)'|"([^"\\]*(?:\\[\S\s][^"\\]*)*)"|([^,'"\s\\]*(?:\s+[^,'"\s\\]+)*))\s*(?:,|$)/
3 years ago
def get_db
person_register = []
3 years ago
# Go through each line in the .csv file
person_strings = File.readlines(DATA_FILE_PATH).map do |person|
# Use magic regex to parse the csv, this has to be done becuase
# the .csv contains values with commas in them.
# [1..-1] because first element is the index which I can
# get from the .each method (it is not needed, therefore I remove it)
person.chomp.scan(CSV_REGEX)[1..-1].map do |arr|
# String.scan will return an array with each match
# inside it. Remove all nil (those groups did not match)
arr = arr.reject do |elem| elem == nil end
# Take the best first value, this should probably be
# improved. Magic word: TODO: improve this
arr[0]
end
3 years ago
end
person_strings.each do |person|
person_register << {
fname: person[0], # First name
lname: person[1], # Last name
email: person[2], # Email address
age: person[3], # Age (0-100)
ipv4: person[4], # IPv4 Address
movie_title: person[5], # Movie title
avatar_url: person[6], # Avatar image URL
freq: person[7], # Frequency (visiting)
role: person[8], # Role (job title/academic)
3 years ago
gender: person[9]# Gender
3 years ago
}
end
return person_register
end