Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/ruby
- class User
- attr_reader :username, :name, :friends, :sex, :password
- attr_writer :username, :name, :friends, :sex, :password
- def initialize(username, name, friends, sex, password)
- @username = username
- @name = name
- @friends = friends
- @sex = sex
- @password = password
- end
- def to_out
- print("USERNAME #{@username} \nNAME #{@name} \nSEX #{@sex} \nPASSWORD #{@password} \nFRIENDS ")
- @friends.each {|key, value| print("#{key}/#{value} ") }
- print("\n")
- end
- end
- $FILE = "database.txt"
- class Database
- def initialize
- data = {}
- load()
- end
- def [](name)
- return data[name]
- end
- def []=(name,user)
- data[name] = user
- save()
- end
- def users()
- data.each {|x| yield x}
- end
- def exists_user?(name)
- return data.has_key(name)
- end
- def read_line(database)
- File.open(database) do |file|
- file.each do |line|
- if not line =~ /^#|^\s*$/
- yield line
- end
- end
- end
- end
- def split_line(line)
- a = []
- line.scan(/"[^"]*"|\S+/) do |word|
- a << word.gsub(/"/, "")
- end
- return a
- end
- def load()
- username = name = password = sex = nil
- friends = {}
- read_line($FILE) do |line|
- args = split_line(line)
- case args[0]
- when "USERNAME"
- username = args[1]
- when "NAME"
- name = args[1]
- when "SEX"
- sex = args[1]
- when "PASSWORD"
- password = args[1]
- when "FRIENDS"
- args[1..-1].each do |arg|
- k,v = arg.split('/')
- friends[k] = v
- end
- else
- user = User.new(username, name, friends, sex, password)
- self[username] = user
- end
- end
- end
- def save()
- open($FILE,"w") |f|
- data.each do |k,user|
- f.puts("USERNAME #{user.username}")
- f.puts("NAME #{user.name}")
- f.puts("SEX #{user.sex}")
- f.puts("PASSWORD #{user.password}")
- f.puts("FRIENDS #{user.friends}")
- f.puts("END\n");
- end
- end
- end
- end
- daisy = User.new("lonelygirl13", "Daisy Duck", {"nopants"=>"dated", "cheeseboy"=>"random"}, "Female", "sailorboy")
- test = Database.new()
Add Comment
Please, Sign In to add comment