daemon-ogre 1.2.5 → 1.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -38,17 +38,32 @@ start command will check does the application already running or not, so you don
38
38
  * debugger - this will call the ruby debugger gem to aid you in trouble
39
39
  you should use these commands:
40
40
 
41
- set autolist on #show the code, and the position like and editor, in every step.
42
- s #step in any kind of method, beware to use carefully because you end up in really deep somewhere in Alice world
43
- n #step to next code/codeblock etc, without enter it (usefull when you find the right place)
44
- l #list your current position
45
- #simply hit enter to repeate the last one
41
+
42
+ set autolist on #show the code, and the position like and editor, in every step.
43
+ s #step in any kind of method, beware to use carefully because you end up in really deep somewhere in Alice world
44
+ n #step to next code/codeblock etc, without enter it (usefull when you find the right place)
45
+ l #list your current position
46
+ #simply hit enter to repeate the last one
47
+
46
48
 
47
49
  * daemon or -d -this will fork a child process by the given parameters
48
50
  * log or -l -you can set the log file position n by terminal for one time run
49
51
  * pid or -p -you can set the pid file position n name by terminal for one time run
50
52
  * status or -s -this will tell you ,does your process is running not
51
53
  * help -this will invoke some help to the terminal if you out of luck and forget everything from this page
54
+ * clear -this will remove every log by the prev given paths, usefull in debugging
55
+
56
+ example:
57
+
58
+ ruby my_awsome_app.rb start debugger
59
+ ruby my_awsome_app.rb start clear
60
+ ruby my_awsome_app.rb status
61
+ ruby my_awsome_app.rb stop
62
+ ruby my_awsome_app.rb debug
63
+
64
+
65
+ or if you dont use terminate command , than you can start simply as how you do normaly
66
+
52
67
 
53
68
 
54
69
  othere stuffs to use:
@@ -163,6 +178,7 @@ in Short:
163
178
 
164
179
 
165
180
 
181
+
166
182
  Contributing to daemon-ogre
167
183
  ---------------------------
168
184
 
data/README.rdoc CHANGED
@@ -38,17 +38,32 @@ start command will check does the application already running or not, so you don
38
38
  * debugger - this will call the ruby debugger gem to aid you in trouble
39
39
  you should use these commands:
40
40
 
41
- set autolist on #show the code, and the position like and editor, in every step.
42
- s #step in any kind of method, beware to use carefully because you end up in really deep somewhere in Alice world
43
- n #step to next code/codeblock etc, without enter it (usefull when you find the right place)
44
- l #list your current position
45
- #simply hit enter to repeate the last one
41
+
42
+ set autolist on #show the code, and the position like and editor, in every step.
43
+ s #step in any kind of method, beware to use carefully because you end up in really deep somewhere in Alice world
44
+ n #step to next code/codeblock etc, without enter it (usefull when you find the right place)
45
+ l #list your current position
46
+ #simply hit enter to repeate the last one
47
+
46
48
 
47
49
  * daemon or -d -this will fork a child process by the given parameters
48
50
  * log or -l -you can set the log file position n by terminal for one time run
49
51
  * pid or -p -you can set the pid file position n name by terminal for one time run
50
52
  * status or -s -this will tell you ,does your process is running not
51
53
  * help -this will invoke some help to the terminal if you out of luck and forget everything from this page
54
+ * clear -this will remove every log by the prev given paths, usefull in debugging
55
+
56
+ example:
57
+
58
+ ruby my_awsome_app.rb start debugger
59
+ ruby my_awsome_app.rb start clear
60
+ ruby my_awsome_app.rb status
61
+ ruby my_awsome_app.rb stop
62
+ ruby my_awsome_app.rb debug
63
+
64
+
65
+ or if you dont use terminate command , than you can start simply as how you do normaly
66
+
52
67
 
53
68
 
54
69
  othere stuffs to use:
@@ -163,6 +178,7 @@ in Short:
163
178
 
164
179
 
165
180
 
181
+
166
182
  Contributing to daemon-ogre
167
183
  ---------------------------
168
184
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.5
1
+ 1.2.8
data/lib/daemon-ogre.rb CHANGED
@@ -2,195 +2,216 @@
2
2
  begin
3
3
  module DaemonOgre
4
4
 
5
- #config
6
- begin
7
- class App
8
- class << self
9
- attr_accessor :log_path,
10
- :pid_path,
11
- :app_name,
12
- :port,
13
- :terminate,
14
- :debug
15
- end
16
- end
17
- end
18
-
19
- #default
20
- App.log_path = "./var/log/logfile.log"
21
- App.pid_path = "./var/pid/pidfile.pid"
22
- App.terminate = false
23
- App.port = 80
24
- App.app_name = $0
25
- App.debug = false
26
-
27
5
  #OgreClassMethods
28
6
  begin
29
7
  class << self
30
- #Based on the rb location
31
- def load_directory(directory,*args)
32
- arg = Hash[*args]
8
+ #Based on the rb location
9
+ def load_directory(directory,*args)
10
+ arg = Hash[*args]
33
11
 
34
- if !arg[:delayed].nil?
35
- raise ArgumentError, "Delayed items must be in an "+\
12
+ if !arg[:delayed].nil?
13
+ raise ArgumentError, "Delayed items must be in an "+\
36
14
  "Array! Example:\n:delayed => ['abc']" if arg[:delayed].class == Array
37
- end
15
+ end
38
16
 
39
- if !arg[:exclude].nil?
40
- raise ArgumentError, "Exclude items must be in an "+\
17
+ if !arg[:exclude].nil?
18
+ raise ArgumentError, "Exclude items must be in an "+\
41
19
  "Array! Example:\n:exclude => ['abc']" if arg[:exclude].class == Array
42
- end
20
+ end
43
21
 
44
22
 
45
- #=================================================================================================================
23
+ #=================================================================================================================
46
24
 
47
- puts "LOADING_FILES_FROM_"+directory.to_s.split('/').last.split('.').first.capitalize if App.debug
25
+ puts "LOADING_FILES_FROM_"+directory.to_s.split('/').last.split('.').first.capitalize if App.debug
48
26
 
49
- delayed_loads = Array.new
50
- Dir["#{directory}/**/*.rb"].each do |file|
27
+ delayed_loads = Array.new
28
+ Dir["#{directory}/**/*.rb"].each do |file|
51
29
 
52
- arg[:delayed]= [nil] if arg[:delayed].nil?
53
- arg[:exclude]= [nil] if arg[:exclude].nil?
30
+ arg[:delayed]= [nil] if arg[:delayed].nil?
31
+ arg[:exclude]= [nil] if arg[:exclude].nil?
54
32
 
55
- arg[:exclude].each do |except|
56
- if file.split('/').last.split('.').first == except.to_s.split('.').first
57
- puts file.to_s + " cant be loaded because it's an exception"
58
- else
59
- arg[:delayed].each do |delay|
60
- if file.split('/').last.split('.').first == delay.to_s.split('.').first
61
- delayed_loads.push(file)
62
- else
63
- load(file)
64
- puts file.to_s
33
+ arg[:exclude].each do |except|
34
+ if file.split('/').last.split('.').first == except.to_s.split('.').first
35
+ puts file.to_s + " cant be loaded because it's an exception"
36
+ else
37
+ arg[:delayed].each do |delay|
38
+ if file.split('/').last.split('.').first == delay.to_s.split('.').first
39
+ delayed_loads.push(file)
40
+ else
41
+ load(file)
42
+ puts file.to_s
43
+ end
65
44
  end
66
45
  end
67
46
  end
68
47
  end
48
+ delayed_loads.each do |delayed_load_element|
49
+ load(delayed_load_element)
50
+ puts delayed_load_element.to_s if App.debug
51
+ end
52
+ puts "DONE_LOAD_FILES_FROM_"+directory.to_s.split('/').last.split('.').first.capitalize if App.debug
53
+
69
54
  end
70
- delayed_loads.each do |delayed_load_element|
71
- load(delayed_load_element)
72
- puts delayed_load_element.to_s if App.debug
73
- end
74
- puts "DONE_LOAD_FILES_FROM_"+directory.to_s.split('/').last.split('.').first.capitalize if App.debug
75
55
 
76
- end
56
+ def get_port(port,max_port=65535 ,host="0.0.0.0")
77
57
 
78
- def get_port(port,max_port=65535 ,host="0.0.0.0")
58
+ require 'socket'
59
+ port = port.to_i
79
60
 
80
- require 'socket'
81
- port = port.to_i
61
+ begin
62
+ server = TCPServer.new('0.0.0.0', port)
63
+ server.close
64
+ return port
65
+ rescue Errno::EADDRINUSE
66
+ port = port.to_i + 1 if port < max_port+1
67
+ retry
68
+ end
82
69
 
83
- begin
84
- server = TCPServer.new('0.0.0.0', port)
85
- server.close
86
- return port
87
- rescue Errno::EADDRINUSE
88
- port = port.to_i + 1 if port < max_port+1
89
- retry
90
70
  end
91
71
 
92
- end
93
-
94
- def error_logger(error_msg,prefix="",log_file=App.log_path)
72
+ def error_logger(error_msg,prefix="",log_file=App.log_path)
95
73
 
96
- create_on_filesystem(log_file)
74
+ if File.exists?(File.expand_path(log_file))
75
+ error_log = File.open( File.expand_path(log_file), "a+")
76
+ error_log << "\n#{Time.now} | #{prefix}#{":" if prefix != ""} #{error_msg}"
77
+ error_log.close
78
+ else
79
+ File.new(File.expand_path(log_file), "w").write(
80
+ "#{Time.now} | #{prefix}#{":" if prefix != ""} #{error_msg}"
81
+ )
82
+ end
97
83
 
98
- if File.exists?(File.expand_path(log_file))
99
- error_log = File.open( File.expand_path(log_file), "a+")
100
- error_log << "\n#{Time.now} | #{prefix}#{":" if prefix != ""} #{error_msg}"
101
- error_log.close
102
- else
103
- File.new(File.expand_path(log_file), "w").write(
104
- "#{Time.now} | #{prefix}#{":" if prefix != ""} #{error_msg}"
105
- )
84
+ return {:error => error_msg}
106
85
  end
107
86
 
108
- return {:error => error_msg}
109
- end
110
-
111
- def load_ymls(directory)
87
+ def load_ymls(directory)
112
88
 
113
- require 'yaml'
114
- #require "hashie"
89
+ require 'yaml'
90
+ #require "hashie"
115
91
 
116
- yaml_files = Dir["#{directory}/**/*.yml"].each { |f| puts f.to_s if App.debug }
117
- puts "\nyaml file found: "+yaml_files.inspect.to_s if App.debug
118
- @result_hash = {}
119
- yaml_files.each_with_index do |full_path_file_name|
92
+ yaml_files = Dir["#{directory}/**/*.yml"].each { |f| puts f.to_s if App.debug }
93
+ puts "\nyaml file found: "+yaml_files.inspect.to_s if App.debug
94
+ @result_hash = {}
95
+ yaml_files.each_with_index do |full_path_file_name|
120
96
 
121
97
 
122
- file_name = full_path_file_name.split('/').last.split('.').first
98
+ file_name = full_path_file_name.split('/').last.split('.').first
123
99
 
124
- hash_key = file_name
125
- @result_hash[hash_key] = YAML.load(File.read("#{full_path_file_name}"))
100
+ hash_key = file_name
101
+ @result_hash[hash_key] = YAML.load(File.read("#{full_path_file_name}"))
126
102
 
127
- #@result_hash = @result_hash.merge!(tmp_hash)
103
+ #@result_hash = @result_hash.merge!(tmp_hash)
128
104
 
129
105
 
130
- puts "==========================================================" if App.debug
131
- puts "Loading "+file_name.to_s.capitalize+"\n" if App.debug
132
- puts YAML.load(File.read("#{full_path_file_name}")) if App.debug
133
- puts "__________________________________________________________" if App.debug
106
+ puts "==========================================================" if App.debug
107
+ puts "Loading "+file_name.to_s.capitalize+"\n" if App.debug
108
+ puts YAML.load(File.read("#{full_path_file_name}")) if App.debug
109
+ puts "__________________________________________________________" if App.debug
134
110
 
135
- end
111
+ end
136
112
 
137
- puts "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" if App.debug
138
- puts "The Main Hash: \n"+@result_hash.inspect.to_s if App.debug
139
- puts "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n" if App.debug
113
+ puts "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" if App.debug
114
+ puts "The Main Hash: \n"+@result_hash.inspect.to_s if App.debug
115
+ puts "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n" if App.debug
140
116
 
141
- return @result_hash
142
- end
117
+ return @result_hash
118
+ end
143
119
 
144
- def create_on_filesystem(input,optionable_data=nil,optionable_file_mod="w")
145
- begin
120
+ def create_on_filesystem(route_name,optionable_file_mod="w",optionable_data=nil)
121
+ begin
146
122
 
147
- #file_name generate
148
- if !input.to_s.split('/').last.nil? || input.to_s.split('/').last != ''
149
- file_name = input.to_s.split('/').last
150
- else
151
- file_name = nil?
152
- end
123
+ #file_name generate
124
+ if !route_name.to_s.split('/').last.nil? || route_name.to_s.split('/').last != ''
125
+ file_name = route_name.to_s.split('/').last
126
+ else
127
+ file_name = nil?
128
+ end
153
129
 
154
- #path_way
155
- begin
156
- raise ArgumentError, "missing input: #{input}" if input.nil?
157
- path = File.expand_path(input).to_s.split('/')
158
- path = path - [File.expand_path(input).to_s.split('/').last]
159
- path.shift
160
- end
130
+ #path_way
131
+ begin
132
+ raise ArgumentError, "missing route_name: #{route_name}" if route_name.nil?
133
+ path = File.expand_path(route_name).to_s.split('/')
134
+ path = path - [File.expand_path(route_name).to_s.split('/').last]
135
+ path.shift
136
+ end
161
137
 
162
- #job
163
- begin
164
- if !Dir.exists?("/"+path.join("/"))
138
+ #job
139
+ begin
140
+ if !Dir.exists?('/'+path.join('/'))
165
141
 
166
- at_now = "/"
167
- path.each do |dir_to_be_checked|
142
+ at_now = '/'
143
+ path.each do |dir_to_be_checked|
168
144
 
169
- at_now += "#{dir_to_be_checked}/"
170
- Dir.mkdir(at_now) if !Dir.exists?(at_now)
145
+ at_now += "#{dir_to_be_checked}/"
146
+ Dir.mkdir(at_now) if !Dir.exists?(at_now)
171
147
 
148
+ end
172
149
  end
173
150
  end
174
- end
175
151
 
176
- #file_create
177
- File.new("/#{path.join("/")}/#{file_name}", optionable_file_mod ).write optionable_data
152
+ #file_create
153
+ File.new("/#{path.join('/')}/#{file_name}", optionable_file_mod ).write optionable_data
178
154
 
179
- rescue Exception => ex
155
+ rescue Exception => ex
180
156
  puts ex
157
+ end
158
+ end
159
+
160
+ def process_running?(input)
161
+ begin
162
+ Process.getpgid input.chomp.to_i
163
+ return true
164
+ rescue Exception
165
+ return false
166
+ end
167
+ end
168
+
169
+ def clone_mpath(original_path,new_name)
170
+ log_path = File.expand_path(original_path)
171
+ log_path = log_path.split('/')
172
+ log_path.pop
173
+ log_path.push(new_name)
174
+ log_path = log_path.join('/')
175
+
176
+ return log_path
181
177
  end
178
+
182
179
  end
180
+ end
183
181
 
184
- def process_running?(input)
185
- begin
186
- Process.getpgid input.chomp.to_i
187
- return true
188
- rescue Exception
189
- return false
182
+ #config
183
+ begin
184
+ class App
185
+ class << self
186
+ attr_accessor :log_path,
187
+ :pid_path,
188
+ :daemon_stderr,
189
+ :exceptions,
190
+ :app_name,
191
+ :port,
192
+ :terminate,
193
+ :debug
190
194
  end
191
195
  end
196
+ end
197
+
198
+ #default
199
+ begin
200
+ App.log_path = "./var/log/logfile.log"
201
+ App.pid_path = "./var/pid/pidfile.pid"
202
+ App.terminate = false
203
+ App.port = 80
204
+ App.app_name = $0
205
+ App.debug = false
206
+
207
+ begin
208
+ ['daemon_stderr','exceptions'].each do |one_log|
192
209
 
210
+ App.__send__(one_log+"=",clone_mpath(App.log_path,one_log+".log"))
211
+
212
+ end
193
213
  end
214
+
194
215
  end
195
216
 
196
217
  #DaemonEngine
@@ -249,24 +270,28 @@ begin
249
270
  $stdout.sync = $stderr.sync = true
250
271
  end
251
272
  end
252
-
253
273
  end
254
274
 
255
275
  #server_model
256
276
  begin
257
277
  class Server
258
- @@startup = false
278
+ @@startup = false
259
279
  class << self
260
280
 
261
281
  def daemon
262
- puts "#{$0} daemon watching you..."
263
- DaemonOgre.create_on_filesystem DaemonOgre::App.pid_path
264
- DaemonOgre.create_on_filesystem DaemonOgre::App.log_path
265
- DaemonOgre.create_on_filesystem './var/daemon.stderr.log'
266
- Daemon.start fork,
282
+ puts "#{$0} daemon is watching you..."
283
+ DaemonOgre.create_on_filesystem DaemonOgre::App.pid_path,
284
+ 'a+'
285
+ DaemonOgre.create_on_filesystem DaemonOgre::App.log_path,
286
+ 'a+'
287
+ DaemonOgre.create_on_filesystem DaemonOgre::App.daemon_stderr,
288
+ 'a+'
289
+
290
+
291
+ DaemonOgre::Daemon.start fork,
267
292
  DaemonOgre::App.pid_path,
268
293
  DaemonOgre::App.log_path,
269
- ('./var/daemon.stderr.log')
294
+ DaemonOgre::App.daemon_stderr
270
295
  end
271
296
 
272
297
  def debug
@@ -402,7 +427,7 @@ begin
402
427
  File.new("#{File.dirname(__FILE__)}/#{DaemonOgre::App.pid_path}", "a+").write Process.pid.to_s+"\n"
403
428
  end
404
429
  rescue Exception => ex
405
- error_logger(ex)
430
+ ex.logger
406
431
  end
407
432
  end
408
433
 
@@ -421,6 +446,24 @@ begin
421
446
  DaemonOgre::App.terminate=true
422
447
  end
423
448
 
449
+ def clear
450
+
451
+ begin
452
+ File.delete DaemonOgre::App.log_path
453
+ rescue Exception
454
+ end
455
+ begin
456
+ File.delete DaemonOgre::App.daemon_stderr
457
+ rescue Exception
458
+ end
459
+
460
+ begin
461
+ File.delete DaemonOgre::App.exceptions
462
+ rescue Exception
463
+ end
464
+
465
+ end
466
+
424
467
  end
425
468
  end
426
469
  end
@@ -443,22 +486,22 @@ begin
443
486
  DaemonOgre.get_port(port,max_port,host)
444
487
  end
445
488
  def exlogger(error_msg,prefix="",log_file=DaemonOgre::App.log_path)
489
+ DaemonOgre.create_on_filesystem log_file,
490
+ 'a+'
446
491
  DaemonOgre.error_logger(error_msg,prefix,log_file)
447
492
  end
448
493
  class Exception
449
494
  def logger
450
- path = File.expand_path(DaemonOgre::App.log_path)
451
- path = path.split('/')
452
- path.pop
453
- path.push("exceptions.log")
454
- path = path.join("/")
455
- DaemonOgre.create_on_filesystem(path)
456
- DaemonOgre.error_logger(self.backtrace,self,path)
495
+ DaemonOgre.create_on_filesystem DaemonOgre::App.exceptions,
496
+ 'a+'
497
+ DaemonOgre.error_logger(self.backtrace,self,DaemonOgre::App.exceptions)
457
498
  end
458
499
  end
459
500
  class File
460
- def self.create!(input,optionable_data=nil,optionable_file_mod="w")
461
- DaemonOgre.create_on_filesystem(input,optionable_data,optionable_file_mod)
501
+ def self.create!(file,optionable_data=nil,optionable_file_mod="w")
502
+ DaemonOgre.create_on_filesystem file,
503
+ optionable_file_mod,
504
+ optionable_data
462
505
  end
463
506
  end
464
507
  class Class
@@ -518,6 +561,7 @@ begin
518
561
  #arg[:port]
519
562
 
520
563
  #arg[:terminate]
564
+ #arg[:clear]
521
565
 
522
566
  begin
523
567
 
@@ -558,6 +602,8 @@ begin
558
602
  when "-s" then DaemonOgre::Server.pid_check
559
603
  when "help" then DaemonOgre::Server.help
560
604
  when "debug" then DaemonOgre::Server.debug
605
+ when "clear" then serv_load.push "clear"
606
+
561
607
  end
562
608
  end
563
609
 
@@ -566,6 +612,7 @@ begin
566
612
  DaemonOgre::Server.restart if serv_load.include? "restart"
567
613
  DaemonOgre::Server.start if serv_load.include? "start"
568
614
  DaemonOgre::Server.stop if serv_load.include? "stop"
615
+ DaemonOgre::Server.clear if serv_load.include? "clear"
569
616
  DaemonOgre::Server.daemon if serv_load.include? "daemon"
570
617
  end
571
618
 
@@ -3,10 +3,16 @@ require_relative "../lib/daemon-ogre.rb"
3
3
  DaemonOgre.start :name => "api_one", #this will be the name of the application
4
4
  :log_path => "./var/log/log_file_name", #this will be the logfile place and name
5
5
  :pid_path => "./var/pid/pid_file_name", #this will be the pidfile place and name
6
- :terminate => false #this command not let start your code if it's not started
7
- # with "start" arguments like :
6
+ :terminate => true, #this command not let start your code if it's not started
7
+ :clear => true # with "start" arguments like :
8
8
  # ruby my_awsome_app.rb start
9
9
 
10
+ begin
11
+ raise ArgumentError, "wuf"
12
+ rescue Exception => ex
13
+ ex.logger
14
+ end
15
+
10
16
 
11
17
 
12
18
  #my awesome Hello App
@@ -18,5 +24,3 @@ until i > 1200
18
24
  puts "hello, there! A wonderful day for the #{i}. time! isn't it?"
19
25
  i+=1
20
26
  end
21
-
22
- puts "-=end=-"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daemon-ogre
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.5
4
+ version: 1.2.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-30 00:00:00.000000000 Z
12
+ date: 2013-06-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
@@ -97,9 +97,6 @@ files:
97
97
  - lib/daemon-ogre.rb
98
98
  - test/helper.rb
99
99
  - test/test_daemon-ogre.rb
100
- - test/var/daemon.stderr.log
101
- - test/var/log/log_file_name
102
- - test/var/pid/pid_file_name
103
100
  homepage: http://github.com/adamluzsi/daemon-ogre
104
101
  licenses:
105
102
  - MIT
@@ -113,6 +110,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
110
  - - ! '>='
114
111
  - !ruby/object:Gem::Version
115
112
  version: '0'
113
+ segments:
114
+ - 0
115
+ hash: 878568399509540350
116
116
  required_rubygems_version: !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
File without changes
@@ -1,25 +0,0 @@
1
- hello App!
2
- hello, there! A wonderful day for the 0. time! isn't it?
3
- hello, there! A wonderful day for the 1. time! isn't it?
4
- hello, there! A wonderful day for the 2. time! isn't it?
5
- hello, there! A wonderful day for the 3. time! isn't it?
6
- hello, there! A wonderful day for the 4. time! isn't it?
7
- hello, there! A wonderful day for the 5. time! isn't it?
8
- hello, there! A wonderful day for the 6. time! isn't it?
9
- hello, there! A wonderful day for the 7. time! isn't it?
10
- hello, there! A wonderful day for the 8. time! isn't it?
11
- hello, there! A wonderful day for the 9. time! isn't it?
12
- hello, there! A wonderful day for the 10. time! isn't it?
13
- hello, there! A wonderful day for the 11. time! isn't it?
14
- hello, there! A wonderful day for the 12. time! isn't it?
15
- hello, there! A wonderful day for the 13. time! isn't it?
16
- hello, there! A wonderful day for the 14. time! isn't it?
17
- hello, there! A wonderful day for the 15. time! isn't it?
18
- hello, there! A wonderful day for the 16. time! isn't it?
19
- hello, there! A wonderful day for the 17. time! isn't it?
20
- hello, there! A wonderful day for the 18. time! isn't it?
21
- hello, there! A wonderful day for the 19. time! isn't it?
22
- hello, there! A wonderful day for the 20. time! isn't it?
23
- hello, there! A wonderful day for the 21. time! isn't it?
24
- hello, there! A wonderful day for the 22. time! isn't it?
25
- hello, there! A wonderful day for the 23. time! isn't it?
File without changes