woyo-server 0.0.1 → 0.0.2

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/lib/woyo/runner.rb +49 -13
  3. data/lib/woyo/server/server.rb +4 -2
  4. data/lib/woyo/server/version.rb +1 -1
  5. data/public/server/default.html +42 -0
  6. data/public/server/foundation-5.2.2/css/foundation.css +5263 -0
  7. data/public/server/foundation-5.2.2/css/foundation.min.css +1 -0
  8. data/public/server/foundation-5.2.2/css/normalize.css +423 -0
  9. data/public/server/foundation-5.2.2/humans.txt +8 -0
  10. data/public/server/foundation-5.2.2/img/.gitkeep +1 -0
  11. data/public/server/foundation-5.2.2/index.html +166 -0
  12. data/public/server/foundation-5.2.2/js/foundation/foundation.abide.js +299 -0
  13. data/public/server/foundation-5.2.2/js/foundation/foundation.accordion.js +54 -0
  14. data/public/server/foundation-5.2.2/js/foundation/foundation.alert.js +43 -0
  15. data/public/server/foundation-5.2.2/js/foundation/foundation.clearing.js +531 -0
  16. data/public/server/foundation-5.2.2/js/foundation/foundation.dropdown.js +306 -0
  17. data/public/server/foundation-5.2.2/js/foundation/foundation.equalizer.js +68 -0
  18. data/public/server/foundation-5.2.2/js/foundation/foundation.interchange.js +331 -0
  19. data/public/server/foundation-5.2.2/js/foundation/foundation.joyride.js +849 -0
  20. data/public/server/foundation-5.2.2/js/foundation/foundation.js +609 -0
  21. data/public/server/foundation-5.2.2/js/foundation/foundation.magellan.js +173 -0
  22. data/public/server/foundation-5.2.2/js/foundation/foundation.offcanvas.js +50 -0
  23. data/public/server/foundation-5.2.2/js/foundation/foundation.orbit.js +606 -0
  24. data/public/server/foundation-5.2.2/js/foundation/foundation.reveal.js +427 -0
  25. data/public/server/foundation-5.2.2/js/foundation/foundation.slider.js +200 -0
  26. data/public/server/foundation-5.2.2/js/foundation/foundation.tab.js +168 -0
  27. data/public/server/foundation-5.2.2/js/foundation/foundation.tooltip.js +272 -0
  28. data/public/server/foundation-5.2.2/js/foundation/foundation.topbar.js +422 -0
  29. data/public/server/foundation-5.2.2/js/foundation.min.js +10 -0
  30. data/public/server/foundation-5.2.2/js/vendor/fastclick.js +9 -0
  31. data/public/server/foundation-5.2.2/js/vendor/jquery.cookie.js +8 -0
  32. data/public/server/foundation-5.2.2/js/vendor/jquery.js +26 -0
  33. data/public/server/foundation-5.2.2/js/vendor/modernizr.js +8 -0
  34. data/public/server/foundation-5.2.2/js/vendor/placeholder.js +2 -0
  35. data/public/server/foundation-5.2.2/robots.txt +4 -0
  36. data/public/server/jquery-2.1.1/jquery.js +9190 -0
  37. data/public/server/jquery-2.1.1/jquery.min.js +4 -0
  38. data/public/server/jquery-2.1.1/jquery.min.map +1 -0
  39. data/spec/spec_helper.rb +1 -0
  40. data/spec/woyo/server/1_server_spec.rb +30 -6
  41. data/spec/woyo/server/runner_spec.rb +153 -23
  42. data/views/server/layout.haml +17 -0
  43. data/views/{location.haml → server/location.haml} +0 -0
  44. data/woyo-server.gemspec +1 -1
  45. metadata +42 -10
  46. data/public/default.html +0 -15
  47. data/views/layout.haml +0 -6
  48. data/world/default.rb +0 -76
@@ -8,6 +8,7 @@ describe Woyo::Server, :type => :feature do
8
8
  location :small
9
9
  end
10
10
  @home_world = Woyo::World.new do
11
+ start :home
11
12
  location :home do
12
13
  name 'Home'
13
14
  description 'Where the heart is.'
@@ -53,21 +54,44 @@ describe Woyo::Server, :type => :feature do
53
54
  end
54
55
  end
55
56
 
56
- it 'displays a welcome page if there is no world' do
57
- # this must be the first test so that Woyo::Server.setting.world is not set
58
- # that is why this file is name 1_server_spec.rb
57
+ # these must be the first tests so that Woyo::Server.setting.world is not set
58
+ # that is why this file is name 1_server_spec.rb
59
+
60
+ it 'welcome page is displayed if there is no world' do
61
+ visit '/'
62
+ status_code.should eq 200
63
+ page.should have_content 'Woyo'
64
+ end
65
+
66
+ it 'welcome page links to github docs' do
67
+ visit '/'
68
+ status_code.should eq 200
69
+ page.should have_link '', href: 'https://github.com/iqeo/woyo-world/wiki'
70
+ page.should have_link '', href: 'https://github.com/iqeo/woyo-server/wiki'
71
+ end
72
+
73
+ it 'uses foundation framework' do
74
+ visit '/'
75
+ status_code.should eq 200
76
+ page.should have_css 'head link[href="foundation/css/foundation.css"]'
77
+ page.should have_css 'head script[src="foundation/js/vendor/modernizr.js"]'
78
+ end
79
+
80
+ it 'accepts a world (without start - display welcome)' do
81
+ Woyo::Server.set :world, @small_world
59
82
  visit '/'
60
83
  status_code.should eq 200
61
- page.should have_content 'Welcome'
84
+ page.should have_content 'Woyo'
62
85
  end
63
86
 
64
- it 'accepts a world' do
87
+ it 'accepts a world (with start)' do
88
+ @small_world.start = :small
65
89
  Woyo::Server.set :world, @small_world
66
90
  visit '/'
67
91
  status_code.should eq 200
68
92
  end
69
93
 
70
- it 'describes a location' do
94
+ it 'describes the start location' do
71
95
  Woyo::Server.set :world, @home_world
72
96
  visit '/'
73
97
  page.should have_selector '.location#location_home'
@@ -3,6 +3,9 @@ require 'fileutils'
3
3
  require 'stringio'
4
4
  require 'open-uri'
5
5
 
6
+ STDERR.sync = true
7
+ STDERR.sync = true
8
+
6
9
  describe Woyo::Runner do
7
10
 
8
11
  before :each do
@@ -11,6 +14,17 @@ describe Woyo::Runner do
11
14
  end
12
15
 
13
16
  before :all do
17
+ @expected_entries = [ 'public', 'views', 'world' ]
18
+ @contents = {
19
+ '.' => %w( . .. world views public ),
20
+ 'world' => %w( . .. ),
21
+ 'views' => %w( . .. app server ),
22
+ 'views/app' => %w( . .. ),
23
+ 'views/server' => %w( . .. layout.haml location.haml ),
24
+ 'public' => %w( . .. app server ),
25
+ 'public/app' => %w( . .. html images js css ),
26
+ 'public/server' => %w( . .. default.html foundation foundation-5.2.2 jquery jquery-2.1.1 ),
27
+ }
14
28
  @original_path = Dir.pwd
15
29
  File.basename(@original_path).should eq 'woyo-server'
16
30
  @test_dir = 'tmp/test'
@@ -34,10 +48,6 @@ describe Woyo::Runner do
34
48
 
35
49
  context 'new' do
36
50
 
37
- before :all do
38
- @expected_entries = [ 'public', 'views', 'world' ]
39
- end
40
-
41
51
  before :each do
42
52
  Dir.pwd.should eq @original_path
43
53
  FileUtils.rm_rf @test_dir
@@ -56,21 +66,18 @@ describe Woyo::Runner do
56
66
  end
57
67
 
58
68
  it 'creates a world application directory' do
59
- [['new','testworld'],['new','test/testworld']].each do |args|
60
- Woyo::Runner.run( args, out: @output, err: @error ).should eq 0
61
- Dir.should exist args[1]
62
- (Dir.entries(args[1]) & @expected_entries).sort.should eq @expected_entries
69
+ [['new','testworld'],['new','test/testworld']].each do |cmd,dir|
70
+ Woyo::Runner.run( [cmd,dir], out: @output, err: @error ).should eq 0
71
+ Dir.should exist dir
72
+ Dir.entries(dir).sort.should eq @contents['.'].sort
63
73
  end
64
74
  end
65
75
 
66
76
  it 'populates directories' do
67
- Woyo::Runner.run( ['new','testworld'], out: @output, err: @error ).should eq 0
68
- @expected_entries.each do |dir|
69
- dir_entries = Dir.entries(File.join('testworld',dir)).sort
70
- dir_entries.count.should be > 2
71
- original_entries = Dir.entries(File.join(@original_path,dir)).sort
72
- (dir_entries & original_entries).should eq original_entries
73
- end
77
+ Woyo::Runner.run( ['new','testworld'], out: @output, err: @error ).should eq 0
78
+ @contents.each do |dir,contents|
79
+ Dir.entries(File.join('testworld',dir)).sort.should eq contents.sort
80
+ end
74
81
  end
75
82
 
76
83
  it 'requires force (-f/--force) for existing directory' do
@@ -84,12 +91,22 @@ describe Woyo::Runner do
84
91
  Dir.should exist dir
85
92
  Woyo::Runner.run( args + force, out: @output, err: @error ).should eq 0
86
93
  Dir.should exist dir
87
- (Dir.entries(dir) & @expected_entries).sort.should eq @expected_entries # subset
94
+ (Dir.entries(dir) & @expected_entries).sort.should eq @expected_entries
88
95
  FileUtils.rm_rf dir
89
96
  end
90
97
  end
91
98
  end
92
99
 
100
+ it 'refuses for existing file' do
101
+ [['new','testworld'],['new','test/testworld']].each do |args|
102
+ dir = args[1]
103
+ FileUtils.mkdir_p File.dirname(dir)
104
+ FileUtils.touch dir
105
+ File.should exist dir
106
+ Woyo::Runner.run( args, out: @output, err: @error ).should eq -3
107
+ end
108
+ end
109
+
93
110
  it 'help (-h/--help) explains new command' do
94
111
  [['-h'],['--help']].each do |help|
95
112
  Woyo::Runner.run( ['new'] + help, out: @output, err: @error ).should eq 0
@@ -109,7 +126,13 @@ describe Woyo::Runner do
109
126
  Dir.pwd.should eq File.join( @original_path, @test_dir )
110
127
  Woyo::Runner.run( ['new','testworld'], out: @output, err: @error ).should eq 0
111
128
  Dir.chdir 'testworld'
112
- Dir.pwd.should eq File.join( @original_path, @test_dir, 'testworld' )
129
+ @this_world_path = File.join( @original_path, @test_dir, 'testworld' )
130
+ Dir.pwd.should eq @this_world_path
131
+ end
132
+
133
+ before :each do
134
+ Dir.chdir @this_world_path
135
+ Dir.pwd.should eq @this_world_path
113
136
  end
114
137
 
115
138
  after :all do
@@ -117,12 +140,17 @@ describe Woyo::Runner do
117
140
  Dir.pwd.should eq @original_path
118
141
  end
119
142
 
143
+ it 'must be run within a world application directory' do
144
+ Dir.chdir '..'
145
+ Woyo::Runner.run( ['server'], out: @output, err: @error ).should eq -4
146
+ end
147
+
120
148
  it 'starts a world application server' do
121
149
  thread = Thread.new { Woyo::Runner.run( ['server'], out: @output, err: @error ) }
122
150
  thread.should be_alive
123
151
  sleep 2
124
152
  @error.string.should include 'has taken the stage'
125
- Woyo::Server.set :world, Woyo::World.new { location(:home) { name 'Home' } }
153
+ Woyo::Server.set :world, Woyo::World.new { start :home ; location(:home) { name 'Home' } }
126
154
  page = ''
127
155
  expect { page = open("http://127.0.0.1:4567/").read }.to_not raise_error
128
156
  page.should include 'Home'
@@ -141,15 +169,117 @@ describe Woyo::Runner do
141
169
 
142
170
  context 'console' do
143
171
 
144
- it 'starts a world application console'
172
+ before :all do
173
+ Dir.pwd.should eq @original_path
174
+ FileUtils.rm_rf @test_dir
175
+ FileUtils.mkdir_p @test_dir
176
+ Dir.chdir @test_dir
177
+ Dir.pwd.should eq File.join( @original_path, @test_dir )
178
+ Woyo::Runner.run( ['new','testworld'], out: @output, err: @error ).should eq 0
179
+ Dir.chdir 'testworld'
180
+ Dir.pwd.should eq File.join( @original_path, @test_dir, 'testworld' )
181
+ end
182
+
183
+ after :all do
184
+ Dir.chdir @original_path
185
+ Dir.pwd.should eq @original_path
186
+ end
187
+
188
+ it 'must be run within a world application directory' do
189
+ Dir.chdir '..'
190
+ Woyo::Runner.run( ['console'], out: @output, err: @error ).should eq -4
191
+ end
192
+
193
+ # it 'starts a world application console'
194
+
195
+ # it 'help (-h/--help) explains console command' do
196
+ # [['-h'],['--help']].each do |help|
197
+ # Woyo::Runner.run( ['console'] + help, out: @output, err: @error ).should eq 0
198
+ # @error.string.should include 'woyo console'
199
+ # end
200
+ # end
145
201
 
146
- it 'help (-h/--help) explains console command' do
202
+ end
203
+
204
+ context 'update' do
205
+
206
+ before :all do
207
+ Dir.pwd.should eq @original_path
208
+ FileUtils.rm_rf @test_dir
209
+ FileUtils.mkdir_p @test_dir
210
+ Dir.chdir @test_dir
211
+ Dir.pwd.should eq File.join( @original_path, @test_dir )
212
+ Woyo::Runner.run( ['new','testworld'], out: @output, err: @error ).should eq 0
213
+ Dir.chdir 'testworld'
214
+ @this_world_path = File.join( @original_path, @test_dir, 'testworld' )
215
+ Dir.pwd.should eq @this_world_path
216
+ end
217
+
218
+ before :each do
219
+ Dir.chdir @this_world_path
220
+ Dir.pwd.should eq @this_world_path
221
+ end
222
+
223
+ after :all do
224
+ Dir.chdir @original_path
225
+ Dir.pwd.should eq @original_path
226
+ end
227
+
228
+ it 'runs in a world application directory' do
229
+ Woyo::Runner.run( ['update'], out: @output, err: @error ).should eq 0
230
+ end
231
+
232
+ it 'updates existing standard files and directories' do
233
+ before = Time.now - 30 # new directory was deployed within last 60 seconds
234
+ Woyo::Runner.run( ['update'], out: @output, err: @error ).should eq 0
235
+ @contents.each do |dir,contents|
236
+ contents.each do |file|
237
+ unless ['.','..'].include?( file ) || File.symlink?( File.join(dir,file) )
238
+ File.mtime(File.join(dir,file)).should be < before
239
+ end
240
+ end
241
+ end
242
+ end
243
+
244
+ it 'replaces missing standard files and directories' do
245
+ FileUtils.rm_rf 'views/server'
246
+ FileUtils.rm_rf 'public/server'
247
+ Woyo::Runner.run( ['update'], out: @output, err: @error ).should eq 0
248
+ @contents.each do |dir,contents|
249
+ contents.each do |file|
250
+ File.should exist File.join(dir,file)
251
+ end
252
+ end
253
+ end
254
+
255
+ it 'preserves custom files and directories' do
256
+ custom = %w( world/custom.rb views/app/custom.haml public/app/html/custom.html public/app/images/custom.png public/app/js/custom.js public/app/css/custom.css )
257
+ custom.each { |f| FileUtils.touch f }
258
+ Woyo::Runner.run( ['update'], out: @output, err: @error ).should eq 0
259
+ custom.each { |f| File.should exist f }
260
+ end
261
+
262
+ it 'must be run within a world application directory' do
263
+ FileUtils.mkdir_p '../not-a-server'
264
+ Dir.chdir '../not-a-server'
265
+ Woyo::Runner.run( ['update'], out: @output, err: @error ).should eq -4
266
+ end
267
+
268
+ it 'requires force (-f/--force) to run in incomplete or non world application directory' do
269
+ FileUtils.mkdir_p '../not-a-server'
270
+ Dir.chdir '../not-a-server'
271
+ Woyo::Runner.run( ['update','--force'], out: @output, err: @error ).should eq 0
272
+ FileUtils.mkdir_p '../also-not-a-server'
273
+ Dir.chdir '../also-not-a-server'
274
+ Woyo::Runner.run( ['update','-f'], out: @output, err: @error ).should eq 0
275
+ end
276
+
277
+ it 'help (-h/--help) explains update command' do
147
278
  [['-h'],['--help']].each do |help|
148
- Woyo::Runner.run( ['console'] + help, out: @output, err: @error ).should eq 0
149
- @error.string.should include 'woyo console'
279
+ Woyo::Runner.run( ['update'] + help, out: @output, err: @error ).should eq 0
280
+ @error.string.should include 'woyo update'
150
281
  end
151
282
  end
152
283
 
153
284
  end
154
-
155
285
  end
@@ -0,0 +1,17 @@
1
+ %html
2
+
3
+ %head
4
+ %meta{ :charset => "utf-8" }
5
+ %meta{ :name => "viewport", :content => "width=device-width, initial-scale=1.0" }
6
+ %link{ :rel => "stylesheet", :href => "/foundation/css/foundation.css" }
7
+ %script{ :src => "/foundation/js/vendor/modernizr.js" }
8
+ %title WOYO - World of Your Own
9
+
10
+ %body
11
+
12
+ = yield
13
+
14
+ %script{ :src => "/foundation/js/vendor/jquery.js" }
15
+ %script{ :src => "/foundation/js/foundation.min.js" }
16
+ %script $(document).foundation();
17
+
File without changes
data/woyo-server.gemspec CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "rspec"
25
25
  spec.add_development_dependency "capybara"
26
26
 
27
- spec.add_runtime_dependency "woyo-world"
27
+ spec.add_runtime_dependency "woyo-world", Woyo::SERVER_VERSION
28
28
  spec.add_runtime_dependency "sinatra", "~> 1.4.5"
29
29
  spec.add_runtime_dependency "sinatra-contrib", "~> 1.4.2"
30
30
  spec.add_runtime_dependency "haml"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: woyo-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerard Fowley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-01 00:00:00.000000000 Z
11
+ date: 2014-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: woyo-world
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: 0.0.2
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 0.0.2
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: sinatra
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +156,46 @@ files:
156
156
  - lib/woyo/server.rb
157
157
  - lib/woyo/server/server.rb
158
158
  - lib/woyo/server/version.rb
159
- - public/default.html
159
+ - public/server/default.html
160
+ - public/server/foundation-5.2.2/css/foundation.css
161
+ - public/server/foundation-5.2.2/css/foundation.min.css
162
+ - public/server/foundation-5.2.2/css/normalize.css
163
+ - public/server/foundation-5.2.2/humans.txt
164
+ - public/server/foundation-5.2.2/img/.gitkeep
165
+ - public/server/foundation-5.2.2/index.html
166
+ - public/server/foundation-5.2.2/js/foundation.min.js
167
+ - public/server/foundation-5.2.2/js/foundation/foundation.abide.js
168
+ - public/server/foundation-5.2.2/js/foundation/foundation.accordion.js
169
+ - public/server/foundation-5.2.2/js/foundation/foundation.alert.js
170
+ - public/server/foundation-5.2.2/js/foundation/foundation.clearing.js
171
+ - public/server/foundation-5.2.2/js/foundation/foundation.dropdown.js
172
+ - public/server/foundation-5.2.2/js/foundation/foundation.equalizer.js
173
+ - public/server/foundation-5.2.2/js/foundation/foundation.interchange.js
174
+ - public/server/foundation-5.2.2/js/foundation/foundation.joyride.js
175
+ - public/server/foundation-5.2.2/js/foundation/foundation.js
176
+ - public/server/foundation-5.2.2/js/foundation/foundation.magellan.js
177
+ - public/server/foundation-5.2.2/js/foundation/foundation.offcanvas.js
178
+ - public/server/foundation-5.2.2/js/foundation/foundation.orbit.js
179
+ - public/server/foundation-5.2.2/js/foundation/foundation.reveal.js
180
+ - public/server/foundation-5.2.2/js/foundation/foundation.slider.js
181
+ - public/server/foundation-5.2.2/js/foundation/foundation.tab.js
182
+ - public/server/foundation-5.2.2/js/foundation/foundation.tooltip.js
183
+ - public/server/foundation-5.2.2/js/foundation/foundation.topbar.js
184
+ - public/server/foundation-5.2.2/js/vendor/fastclick.js
185
+ - public/server/foundation-5.2.2/js/vendor/jquery.cookie.js
186
+ - public/server/foundation-5.2.2/js/vendor/jquery.js
187
+ - public/server/foundation-5.2.2/js/vendor/modernizr.js
188
+ - public/server/foundation-5.2.2/js/vendor/placeholder.js
189
+ - public/server/foundation-5.2.2/robots.txt
190
+ - public/server/jquery-2.1.1/jquery.js
191
+ - public/server/jquery-2.1.1/jquery.min.js
192
+ - public/server/jquery-2.1.1/jquery.min.map
160
193
  - spec/spec_helper.rb
161
194
  - spec/woyo/server/1_server_spec.rb
162
195
  - spec/woyo/server/runner_spec.rb
163
196
  - tmux
164
- - views/layout.haml
165
- - views/location.haml
166
- - world/default.rb
197
+ - views/server/layout.haml
198
+ - views/server/location.haml
167
199
  - woyo-server.gemspec
168
200
  homepage: ''
169
201
  licenses:
data/public/default.html DELETED
@@ -1,15 +0,0 @@
1
- <html>
2
- <head>
3
- <title>Welcome to WOYO - World Of Your Own</title>
4
- </head>
5
- <body>
6
- <h1>Welcome to WOYO - World Of Your Own</h1>
7
- <p>This is the default page on a Woyo server. You are seeing this page because the Woyo World has not been created yet.</p>
8
- <p>To create the World, create and edit .rb files in the world/ directory.</p>
9
- <h2>Links</h2>
10
- <ul>
11
- <li><a href='http://github.com/iqeo/woyo'>Woyo on github</a></li>
12
- <li>...</li>
13
- </ul>
14
- </body>
15
- </html>
data/views/layout.haml DELETED
@@ -1,6 +0,0 @@
1
- %html
2
- %head
3
- %title The Title
4
- %body
5
- = yield
6
-
data/world/default.rb DELETED
@@ -1,76 +0,0 @@
1
-
2
- =begin
3
-
4
- # there may be multiple files in this world/ directory
5
- # this is a Woyo world file
6
- # it describe objects in a Woyo world
7
- # it has an .rb extension
8
- # it is just Ruby
9
- # it is evaluated in the context of a Woyo::World instance
10
- # methods avalable for World object creation include
11
- # location
12
- # character
13
- # item
14
- # etc...
15
-
16
- # to see this example world in action delete the =begin and =end lines at the top and bottom of this file
17
-
18
- location :home do
19
-
20
- name 'Home'
21
- description 'Where the heart is.'
22
-
23
- way :out do
24
- name 'Door'
25
- description 'A sturdy wooden door, old fashioned farmhouse style of a bygone era.'
26
- to :garden
27
- end
28
-
29
- way :down do
30
- name 'Stairs'
31
- description 'Rickety stairs lead down into darkness. A dank smell emanates from the darkness below'
32
- to :cellar
33
- end
34
-
35
- end
36
-
37
- location :garden do
38
-
39
- name 'Garden'
40
- description 'A peaceful green oasis of life in the midst of a gray city'
41
-
42
- way :in do
43
- name 'Door'
44
- description 'Door leads inside a cute cottage'
45
- to :home
46
- end
47
-
48
- way :down do
49
- name 'Bulkhead'
50
- description 'Rusty bulkhead door and stairs'
51
- to :cellar
52
- end
53
-
54
- end
55
-
56
- location :cellar do
57
-
58
- name 'Cellar'
59
- description 'Dark and damp, full of shadows and strange sounds'
60
-
61
- way :out do
62
- name 'Bulkhead'
63
- description 'Rusty bulkhead stairs and door'
64
- to :garden
65
- end
66
-
67
- way :up do
68
- name 'Stairs'
69
- description 'Rickety stairs lead up into light'
70
- to :home
71
- end
72
-
73
- end
74
-
75
- =end
76
-