Guest User

Untitled

a guest
May 27th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. #!/usr/bin/ruby
  2.  
  3. class User
  4. attr_reader :username, :name, :friends, :sex, :password
  5. attr_writer :username, :name, :friends, :sex, :password
  6.  
  7. def initialize(username, name, friends, sex, password)
  8. @username = username
  9. @name = name
  10. @friends = friends
  11. @sex = sex
  12. @password = password
  13. end
  14.  
  15. def to_out
  16. print("USERNAME #{@username} \nNAME #{@name} \nSEX #{@sex} \nPASSWORD #{@password} \nFRIENDS ")
  17. @friends.each {|key, value| print("#{key}/#{value} ") }
  18. print("\n")
  19. end
  20.  
  21. end
  22.  
  23. $FILE = "database.txt"
  24. class Database
  25. attr_reader :data
  26.  
  27. def initialize
  28. data = {}
  29. @data = data
  30. load()
  31. end
  32.  
  33. def [](name)
  34. return @data[name]
  35. end
  36.  
  37. def []=(name,user)
  38. @data[name] = user
  39. end
  40.  
  41. def users()
  42. @data.each {|x| yield x}
  43. end
  44.  
  45. def exists_user?(name)
  46. return @data.has_key(name)
  47. end
  48.  
  49. def read_line(database)
  50. File.open(database) do |file|
  51. file.each do |line|
  52. if not line =~ /^#|^\s*$/
  53. yield line
  54. end
  55. end
  56. end
  57. end
  58.  
  59. def split_line(line)
  60. a = []
  61. line.scan(/"[^"]*"|\S+/) do |word|
  62. a << word.gsub(/"/, "")
  63. end
  64. return a
  65. end
  66.  
  67. def load()
  68. username = name = password = sex = nil
  69. friends = {}
  70. read_line($FILE) do |line|
  71. args = split_line(line)
  72. case args[0]
  73. when "USERNAME"
  74. username = args[1]
  75. when "NAME"
  76. name = args[1]
  77. when "SEX"
  78. sex = args[1]
  79. when "PASSWORD"
  80. password = args[1]
  81. when "FRIENDS"
  82. args[1..-1].each do |arg|
  83. k,v = arg.split('/')
  84. friends[k] = v
  85. end
  86. else
  87. user = User.new(username, name, friends, sex, password)
  88. self[username] = user
  89. friends = {}
  90. end
  91. end
  92. end
  93.  
  94. def save()
  95. open($FILE,"w") do |f|
  96. data.each do |k,user|
  97. f.puts("USERNAME #{user.username}")
  98. f.puts("NAME #{user.name}")
  99. f.puts("SEX #{user.sex}")
  100. f.puts("PASSWORD #{user.password}")
  101. f.print("FRIENDS ")
  102. user.friends.each {|key, value| f.print("#{key}/#{value} ") }
  103. f.puts("\n");
  104. f.puts("END");
  105. f.puts("\n");
  106. end
  107. end
  108. end
  109.  
  110. end
  111.  
  112. daisy = User.new("bajigur", "tete", {"nopants"=>"dated", "cheeseboy"=>"random"}, "Male", "pentil")
  113. test = Database.new()
  114. test["bajigur"] = daisy
  115. test.save
Add Comment
Please, Sign In to add comment