stevefolder/folder.rb

97 lines
1.7 KiB
Ruby
Raw Permalink Normal View History

2022-02-05 20:32:14 +00:00
require 'pstore'
2022-02-04 23:48:09 +00:00
class Folder
def initialize()
@steves = []
@fallen = []
@submissions = []
2022-02-05 20:32:14 +00:00
@db = PStore.new("submission_db.pstore")
@db.transaction do
@idgen = @db.fetch('id',default=1)
@submissions = @db.fetch('subs',[])
end
end
def update()
@db.transaction do
@db['id'] = @idgen
@db['subs'] = @submissions
end
end
2022-02-11 21:33:24 +00:00
def close()
self.update()
2022-02-11 21:39:43 +00:00
puts "folder closed"
2022-02-11 21:33:24 +00:00
end
2022-02-05 20:32:14 +00:00
def num_subs()
@submissions.length
2022-02-04 23:48:09 +00:00
end
def add_steve(uid)
@steves.append(uid)
end
def curse(user)
2022-02-05 00:22:06 +00:00
if @steves.include?(user.id)
@steves.delete(user.id)
@fallen.append(user.id)
end
end
def bless(user)
if @fallen.include?(user.id)
@steves.append(user.id)
@fallen.delete(user.id)
end
2022-02-04 23:48:09 +00:00
end
def steve?(user)
return (@steves.include?(user) or @fallen.include?(user))
end
def submit(sub)
sub.set_id(@idgen)
@submissions.append(sub)
@idgen = @idgen + 1
end
def harass_steve()
if @steves.length <= 0
return nil
end
target = @steves.sample
if @submissions.length <= 0
return nil
end
message = @submissions.sample
i = 0
2022-02-11 21:33:17 +00:00
until message.sender != target or i == 10 do
2022-02-05 00:22:06 +00:00
message = @submissions.sample
i = i + 1
end
2022-02-05 20:47:00 +00:00
if i == 5 or message.sender == target
2022-02-04 23:48:09 +00:00
return nil
end
@submissions.delete(message)
2022-02-05 00:22:06 +00:00
if message.local and not File.exist?(message.content)
2022-02-04 23:48:09 +00:00
return nil
end
return target,message
end
end
class Submission
def initialize(content,local,sender)
@local = local
@content = content
@sender = sender
end
def set_id(i)
@id = i
end
attr_reader :local,:content,:sender,:id
end