-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstruct_openstruct.rb
48 lines (36 loc) · 1.05 KB
/
struct_openstruct.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# frozen_string_literal: true
## Struct
class Result
attr_accessor :status, :message
def initialize(status, message)
@status = status
@message = message
end
end
Result = Struct.new(:status, :message)
res = Result.new('invalid_input', 'Github URL is invalid')
res.status # => 'invalid_input'
res[:status] # => 'invalid_input'
res['status'] # => 'invalid_input
res.status = 'internal_error'
res[:status]= 'internal_error'
Result = Struct.new(:status, :message) do
def summarize
"Status: #{status}, because #{message}"
end
end
res = Result.new('invalid_input', 'Github URL is invalid')
res.summarize
# => "Status: invalid_input, because Github URL is invalid"
res.status = 'ok'
## OpenStruct
request = OpenStruct.new(
owner_name: 'soumyaray',
project_name: 'YPBT-app',
project_fullname: 'soumyaray/YPBT-app',
folder_name: 'view_objects'
)
request.project_fullname # => 'soumyaray/YPBT-app'
request['project_fullname'] # => 'soumyaray/YPBT-app'
request[:project_fullname] # => 'soumyaray/YPBT-app'
request.greeting = 'hello'