-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathblocks.rb
92 lines (60 loc) · 1.22 KB
/
blocks.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
(1..5).each do |i|
puts i
end
(1..5).each { |i| puts i }
def foo
yield
end
foo { puts 'Hi block' }
def log(str)
puts "LOGGER: #{yield(str)}"
end
log("some data") do |str|
"My custom format of #{str}"
end
def log(str)
return "Logger: #{yield(str)}" if block_given?
"BASIC LOGGER: #{str}"
end
puts log('soma basic data')
result = log('soma data') do |str|
"My custom format of #{str}"
end
puts result
class User
attr_accessor :first_name, :last_name
def initialize
yield(self)
end
end
user = User.new do |u|
u.first_name = 'Den'
u.last_name = 'Bob'
end
puts "#{user.first_name} #{user.last_name}"
require 'ostruct'
class Logger
attr_reader :config
def initialize
@config = OpenStruct.new
config.prefix = "LOGGER"
config.time_format = "%Y.%m.%d"
yield(config) if block_given?
end
def log(str)
"#{Time.now.strftime(config.time_format)} #{config.prefix}: #{str}"
end
end
l = Logger.new
puts l.log("With standard config")
l = Logger.new do |config|
config.time_format = "%Y-%d-%m"
config.prefix = "Custom"
end
puts l.log("Own logger")
def info(name)
return "Hi, #{name}" if block_given?
"Default parametrs #{name}"
end
p info('Den')
info('Den') do |name|