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
- attr_reader :data
- def initialize
- data = {}
- @data = data
- load()
- end
- def [](name)
- return @data[name]
- end
- def []=(name,user)
- @data[name] = user
- 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
- friends = {}
- end
- end
- end
- def save()
- open($FILE,"w") do |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.print("FRIENDS ")
- user.friends.each {|key, value| f.print("#{key}/#{value} ") }
- f.puts("\n");
- f.puts("END");
- f.puts("\n");
- end
- end
- end
- end
- daisy = User.new("bajigur", "tete", {"nopants"=>"dated", "cheeseboy"=>"random"}, "Male", "pentil")
- test = Database.new()
- test["bajigur"] = daisy
- test.save
Add Comment
Please, Sign In to add comment