OSDN Git Service

fix: fetch fail
[pettanr/pettanr.git] / lib / operator.rb
1 class Operator
2   
3   def initialize operators
4     @operators = operators
5     @operators = [@operators] unless @operators.respond_to?(:each)
6     @operators.compact!
7   end
8   
9   #InstanceMethods
10   def find_user
11     @operators.each do |operator|
12       return operator if operator.is_a?(User)
13       return operator.user if operator.is_a?(Author)
14       return operator.user if operator.is_a?(Artist)
15     end
16     nil
17   end
18   
19   def find_author
20     @operators.each do |operator|
21       return operator if operator.is_a?(Author)
22       return operator.author if operator.is_a?(User)
23       return operator.user.author if operator.is_a?(Artist) and operator.user.author
24     end
25     nil
26   end
27   
28   def find_artist
29     @operators.each do |operator|
30       return operator.user.artist if operator.is_a?(Author) and operator.user.artist
31       return operator.artist if operator.is_a?(User)
32       return operator if operator.is_a?(Artist)
33     end
34     nil
35   end
36   
37   def find_admin
38     @operators.each do |operator|
39       return operator if operator.is_a?(Admin)
40     end
41     nil
42   end
43   
44   def user
45     return @user if @user
46     @user = find_user
47   end
48   
49   def author
50     return @author if @author
51     @author = find_author
52   end
53   
54   def artist
55     return @artist if @artist
56     @artist = find_artist
57   end
58   
59   def admin
60     return @admin if @admin
61     @admin = find_admin
62   end
63   
64   def guest?
65     true
66   end
67   
68   def reader?
69     @operators.each do |operator|
70       return true if operator.is_a?(Author) or operator.is_a?(Artist) or operator.is_a?(Admin) or operator.is_a?(User)
71     end
72     false
73   end
74   
75   def user?
76     @operators.each do |operator|
77       return true if operator.is_a?(Author) or operator.is_a?(Artist) or operator.is_a?(User)
78     end
79     false
80   end
81   
82   def resource_reader?
83     @operators.each do |operator|
84       return true if operator.is_a?(Author) or operator.is_a?(Artist) or operator.is_a?(Admin) or operator.is_a?(User) or operator.is_a?(DemandUser)
85     end
86     false
87   end
88   
89   def admin?
90     @operators.each do |operator|
91       return true if operator.is_a?(Admin)
92     end
93     false
94   end
95   
96 end