shattered 0.5.0.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +6 -0
- data/INSTALL.txt +5 -0
- data/License.txt +18 -0
- data/Manifest.txt +175 -0
- data/README.txt +39 -0
- data/Rakefile +6 -0
- data/app_generators/actor/USAGE +6 -0
- data/app_generators/actor/actor_generator.rb +51 -0
- data/app_generators/actor/templates/actor.rb +4 -0
- data/app_generators/actor/templates/spec.rb +11 -0
- data/app_generators/actor/templates/unit_test.rb +9 -0
- data/app_generators/commands/console.rb +6 -0
- data/{lib/rails_generator/generators/applications/shattered_app → app_generators/shattered}/USAGE +1 -1
- data/app_generators/shattered/shattered_generator.rb +67 -0
- data/{lib → app_generators/shattered}/templates/Rakefile +4 -4
- data/app_generators/shattered/templates/configs/game.controls +16 -0
- data/app_generators/shattered/templates/configs/ogre_plugins.linux.cfg +12 -0
- data/app_generators/shattered/templates/configs/ogre_plugins.osx.cfg +12 -0
- data/{lib → app_generators/shattered}/templates/configs/ogre_plugins.windows.cfg +2 -2
- data/app_generators/shattered/templates/game.rb +50 -0
- data/{lib → app_generators/shattered}/templates/media/basic.rmaterial +0 -0
- data/app_generators/shattered/templates/spec/game_spec.rb +5 -0
- data/app_generators/shattered/templates/spec/spec_helper.rb +12 -0
- data/bin/shattered +39 -0
- data/config/hoe.rb +77 -0
- data/config/requirements.rb +15 -0
- data/lib/shattered.rb +40 -0
- data/lib/shattered_game/actor.rb +6 -0
- data/lib/shattered_game/game.rb +285 -0
- data/lib/{tasks → shattered_game/rake_tasks}/framework.rake +19 -24
- data/lib/{tasks → shattered_game/rake_tasks}/log.rake +0 -0
- data/lib/{tasks → shattered_game/rake_tasks}/misc.rake +1 -2
- data/lib/{tasks → shattered_game/rake_tasks}/pre_namespace_aliases.rake +0 -0
- data/lib/{tasks → shattered_game/rake_tasks}/shattered.rb +0 -0
- data/lib/shattered_game/rake_tasks/spec.rake +9 -0
- data/lib/{tasks → shattered_game/rake_tasks}/statistics.rake +0 -0
- data/lib/shattered_game/required.rb +2 -0
- data/lib/shattered_game/version.rb +9 -0
- data/lib/shattered_model/controls.rb +67 -0
- data/lib/shattered_model/input.rb +171 -0
- data/lib/shattered_model/key_converter.rb +44 -0
- data/lib/shattered_model/required.rb +4 -0
- data/lib/shattered_model/shattered_model.rb +28 -0
- data/lib/shattered_model/timed_event.rb +120 -0
- data/lib/shattered_model/timer.rb +78 -0
- data/lib/shattered_support/core_ext.rb +1 -0
- data/lib/shattered_support/core_ext/class.rb +3 -0
- data/lib/shattered_support/core_ext/class/attribute_accessors.rb +44 -0
- data/lib/shattered_support/core_ext/class/inheritable_attributes.rb +115 -0
- data/lib/shattered_support/core_ext/class/removal.rb +24 -0
- data/lib/shattered_support/core_ext/dir.rb +5 -0
- data/lib/shattered_support/core_ext/dir/search.rb +25 -0
- data/lib/shattered_support/core_ext/file.rb +5 -0
- data/lib/shattered_support/core_ext/file/search.rb +64 -0
- data/lib/shattered_support/core_ext/numeric.rb +5 -0
- data/lib/shattered_support/core_ext/numeric/time.rb +72 -0
- data/lib/shattered_support/core_ext/string.rb +13 -0
- data/lib/shattered_support/core_ext/string/access.rb +58 -0
- data/lib/shattered_support/core_ext/string/conversions.rb +19 -0
- data/lib/shattered_support/core_ext/string/inflections.rb +64 -0
- data/lib/shattered_support/core_ext/string/iterators.rb +17 -0
- data/lib/shattered_support/core_ext/string/starts_ends_with.rb +20 -0
- data/lib/shattered_support/error.rb +12 -0
- data/lib/shattered_support/inflections.rb +53 -0
- data/lib/shattered_support/inflector.rb +178 -0
- data/lib/shattered_support/pre_initialize.rb +153 -0
- data/lib/shattered_support/required.rb +9 -0
- data/lib/shattered_support/unload.rb +18 -0
- data/lib/shattered_view/camera.rb +7 -0
- data/lib/shattered_view/ogrerb/base.rb +28 -0
- data/lib/shattered_view/ogrerb/camera.rb +14 -0
- data/lib/shattered_view/ogrerb/key_manager.rb +54 -0
- data/lib/shattered_view/ogrerb/light.rb +25 -0
- data/lib/shattered_view/ogrerb/material.rb +5 -0
- data/lib/shattered_view/ogrerb/mesh_instance.rb +85 -0
- data/lib/shattered_view/ogrerb/mouse_manager.rb +109 -0
- data/lib/shattered_view/ogrerb/particle_system.rb +24 -0
- data/lib/shattered_view/ogrerb/rgb.rb +6 -0
- data/lib/shattered_view/ogrerb/rmaterial.rb +87 -0
- data/lib/shattered_view/ogrerb/scene_node.rb +76 -0
- data/lib/shattered_view/ogrerb/vector.rb +243 -0
- data/lib/shattered_view/ogrerb/window_event.rb +14 -0
- data/lib/shattered_view/resources.rb +64 -0
- data/lib/shattered_view/shattered_view.rb +248 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/setup.rb +1585 -0
- data/tasks/deployment.rake +30 -0
- data/tasks/environment.rake +7 -0
- data/tasks/rcov.rake +7 -0
- data/tasks/testing.rake +46 -0
- data/tasks/website.rake +15 -0
- data/test/acceptance/Rakefile +10 -0
- data/test/acceptance/config/game.controls +17 -0
- data/test/acceptance/config/ogre_plugins.linux.cfg +12 -0
- data/test/acceptance/config/ogre_plugins.osx.cfg +12 -0
- data/test/acceptance/config/ogre_plugins.windows.cfg +14 -0
- data/test/acceptance/config/ogrerb_defaults.save +8 -0
- data/test/acceptance/game.rb +120 -0
- data/test/acceptance/lib/acceptance_test.rb +20 -0
- data/test/acceptance/lib/console.rb +54 -0
- data/test/acceptance/lib/input_test.rb +8 -0
- data/test/acceptance/lib/label.rb +30 -0
- data/test/acceptance/lib/light_test.rb +60 -0
- data/test/acceptance/lib/mesh_test.rb +69 -0
- data/test/acceptance/lib/particle_test.rb +9 -0
- data/test/acceptance/media/GreenSkin.jpg +0 -0
- data/test/acceptance/media/Ogre.material +86 -0
- data/test/acceptance/media/WeirdEye.png +0 -0
- data/test/acceptance/media/basic.rmaterial +18 -0
- data/test/acceptance/media/console.fontdef +7 -0
- data/test/acceptance/media/console.material +13 -0
- data/test/acceptance/media/console.png +0 -0
- data/test/acceptance/media/console.ttf +0 -0
- data/test/acceptance/media/dirt01.png +0 -0
- data/test/acceptance/media/fountain.material +19 -0
- data/test/acceptance/media/fountain.particle +40 -0
- data/test/acceptance/media/fountain.png +0 -0
- data/test/acceptance/media/fountaincolors.png +0 -0
- data/test/acceptance/media/ogre.mesh +0 -0
- data/test/acceptance/media/spheremap.png +0 -0
- data/test/acceptance/media/win.png +0 -0
- data/test/acceptance/spec/spec_helper.rb +7 -0
- data/test/integration/actor_generator_test.rb +43 -0
- data/test/integration/shattered_generator_test.rb +43 -0
- data/test/integration/test_helper.rb +20 -0
- data/test/ogre_test_defaults.save +8 -0
- data/test/ogre_test_plugins.linux.cfg +12 -0
- data/test/ogre_test_plugins.osx.cfg +12 -0
- data/test/ogre_test_plugins.windows.cfg +14 -0
- data/test/test_helper.rb +109 -0
- data/test/unit/shattered_game/actor_test.rb +9 -0
- data/test/unit/shattered_game/game_test.rb +49 -0
- data/test/unit/shattered_game/runner_test.rb +56 -0
- data/test/unit/shattered_model/controls/mouse.controls +4 -0
- data/test/unit/shattered_model/controls/player.controls +4 -0
- data/test/unit/shattered_model/controls/too_many_delims.controls +1 -0
- data/test/unit/shattered_model/key_controls_test.rb +89 -0
- data/test/unit/shattered_model/key_converter_test.rb +37 -0
- data/test/unit/shattered_model/keyboard_input_test.rb +32 -0
- data/test/unit/shattered_model/mouse_controls_test.rb +50 -0
- data/test/unit/shattered_model/mouse_input_test.rb +61 -0
- data/test/unit/shattered_model/shattered_model_test.rb +117 -0
- data/test/unit/shattered_model/timed_event_test.rb +79 -0
- data/test/unit/shattered_model/timer_test.rb +325 -0
- data/{lib/rails_generator/generators/components/actor/templates/actor.rb → test/unit/shattered_support/directory_test/file.test} +0 -0
- data/test/unit/shattered_support/numeric_ext_test.rb +38 -0
- data/test/unit/shattered_support/pre_initialize_test.rb +63 -0
- data/test/unit/shattered_support/shattered_support_test.rb +39 -0
- data/test/unit/shattered_support/unload_test.rb +17 -0
- data/test/unit/shattered_view/light_test.rb +38 -0
- data/test/unit/shattered_view/material_test.rb +41 -0
- data/test/unit/shattered_view/media_test/basic.rmaterial +18 -0
- data/{lib/templates/configs/empty.log → test/unit/shattered_view/media_test/beltch.ogg} +0 -0
- data/test/unit/shattered_view/media_test/test.mesh +0 -0
- data/test/unit/shattered_view/mesh_test.rb +59 -0
- data/test/unit/shattered_view/node_test.rb +11 -0
- data/test/unit/shattered_view/ogrerb/camera_test.rb +12 -0
- data/test/unit/shattered_view/ogrerb/key_manager_test.rb +42 -0
- data/test/unit/shattered_view/ogrerb/media/basic.rmaterial +18 -0
- data/test/unit/shattered_view/ogrerb/media/test.mesh +0 -0
- data/test/unit/shattered_view/ogrerb/media/test.rmaterial +1 -0
- data/test/unit/shattered_view/ogrerb/mesh_instance_test.rb +74 -0
- data/test/unit/shattered_view/ogrerb/mouse_manager_test.rb +104 -0
- data/test/unit/shattered_view/ogrerb/ogrerb.log +51 -0
- data/test/unit/shattered_view/ogrerb/resolve_ogrerb_test.rb +13 -0
- data/test/unit/shattered_view/ogrerb/rgb_test.rb +10 -0
- data/test/unit/shattered_view/ogrerb/rmaterial_test.rb +28 -0
- data/test/unit/shattered_view/ogrerb/scene_type_test.rb +12 -0
- data/test/unit/shattered_view/ogrerb/vector_test.rb +206 -0
- data/test/unit/shattered_view/particle_test.rb +23 -0
- data/test/unit/shattered_view/resources_test.rb +45 -0
- data/test/unit/shattered_view/test_helper.rb +1 -0
- data/test/unit/shattered_view/window_event_test.rb +19 -0
- data/test/unit/test_helper.rb +1 -0
- metadata +205 -121
- data/bin/console +0 -4
- data/bin/destroy +0 -9
- data/bin/generate +0 -7
- data/bin/runner +0 -9
- data/bin/shatter +0 -22
- data/lib/commands/console.rb +0 -23
- data/lib/game_loader.rb +0 -118
- data/lib/rails_generator.rb +0 -43
- data/lib/rails_generator/base.rb +0 -203
- data/lib/rails_generator/commands.rb +0 -519
- data/lib/rails_generator/generators/applications/shattered_app/shattered_app_generator.rb +0 -103
- data/lib/rails_generator/generators/components/actor/actor_generator.rb +0 -22
- data/lib/rails_generator/generators/components/model/USAGE +0 -17
- data/lib/rails_generator/generators/components/model/model_generator.rb +0 -22
- data/lib/rails_generator/generators/components/model/templates/fixtures.yml +0 -5
- data/lib/rails_generator/generators/components/model/templates/model.rb +0 -2
- data/lib/rails_generator/generators/components/model/templates/unit_test.rb +0 -11
- data/lib/rails_generator/generators/components/state/USAGE +0 -30
- data/lib/rails_generator/generators/components/state/state_generator.rb +0 -19
- data/lib/rails_generator/generators/components/state/templates/state.rb +0 -20
- data/lib/rails_generator/generators/components/view/USAGE +0 -30
- data/lib/rails_generator/generators/components/view/templates/material +0 -4
- data/lib/rails_generator/generators/components/view/templates/view.rb +0 -7
- data/lib/rails_generator/generators/components/view/view_generator.rb +0 -28
- data/lib/rails_generator/lookup.rb +0 -209
- data/lib/rails_generator/manifest.rb +0 -53
- data/lib/rails_generator/options.rb +0 -143
- data/lib/rails_generator/scripts.rb +0 -83
- data/lib/rails_generator/scripts/destroy.rb +0 -7
- data/lib/rails_generator/scripts/generate.rb +0 -7
- data/lib/rails_generator/scripts/update.rb +0 -12
- data/lib/rails_generator/simple_logger.rb +0 -46
- data/lib/rails_generator/spec.rb +0 -44
- data/lib/shatter.rb +0 -7
- data/lib/tasks/documentation.rake +0 -46
- data/lib/tasks/testing.rake +0 -102
- data/lib/templates/MIT-LICENSE +0 -20
- data/lib/templates/README +0 -35
- data/lib/templates/configs/boot.rb +0 -35
- data/lib/templates/configs/ogre.cfg +0 -4
- data/lib/templates/configs/runner.rb +0 -5
- data/lib/templates/doc/README_FOR_APP +0 -2
- data/lib/templates/environments/environment.rb +0 -10
- data/lib/templates/media/default.mesh +0 -0
- data/lib/templates/media/default.png +0 -0
- data/lib/templates/media/offset_map.rmaterial +0 -117
- data/lib/templates/test/test_helper.rb +0 -5
@@ -1,103 +0,0 @@
|
|
1
|
-
require 'rbconfig'
|
2
|
-
|
3
|
-
class ShatteredAppGenerator < Rails::Generator::Base #:nodoc:all
|
4
|
-
DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
|
5
|
-
Config::CONFIG['ruby_install_name'])
|
6
|
-
|
7
|
-
default_options :gem => true, :shebang => DEFAULT_SHEBANG
|
8
|
-
mandatory_options :source => "#{File.dirname(__FILE__)}/../../../.."
|
9
|
-
|
10
|
-
def initialize(runtime_args, runtime_options = {})
|
11
|
-
super
|
12
|
-
usage if args.empty?
|
13
|
-
@destination_root = args.shift
|
14
|
-
end
|
15
|
-
|
16
|
-
def manifest
|
17
|
-
script_options = { :chmod => 0755, :shebang => options[:shebang] }
|
18
|
-
|
19
|
-
record do |m|
|
20
|
-
# Root directory and all subdirectories.
|
21
|
-
m.directory ''
|
22
|
-
BASEDIRS.each { |path| m.directory path }
|
23
|
-
|
24
|
-
# Root
|
25
|
-
m.file "templates/Rakefile", "Rakefile"
|
26
|
-
m.file "templates/README", "README"
|
27
|
-
|
28
|
-
# ogre plugins and configuration
|
29
|
-
m.file "templates/configs/ogre_plugins.windows.cfg", "config/ogre_plugins.windows.cfg"
|
30
|
-
m.template "templates/configs/ogre.cfg", "config/ogre.cfg"
|
31
|
-
m.template "templates/configs/boot.rb", "config/boot.rb"
|
32
|
-
|
33
|
-
# Environments
|
34
|
-
m.file "templates/environments/environment.rb", "config/environment.rb"
|
35
|
-
|
36
|
-
# Testing
|
37
|
-
m.file "templates/test/test_helper.rb", "test/test_helper.rb"
|
38
|
-
|
39
|
-
# Mac OSX
|
40
|
-
# TODO: OSX support needs to be revisited.
|
41
|
-
#m.file "templates/configs/Mac/shattered.app/Contents/Info.plist", "config/Mac/shattered.app/Contents/Info.plist"
|
42
|
-
#m.file "templates/configs/Mac/shattered.app/Contents/MacOS/shattered_mac", "config/Mac/shattered.app/Contents/MacOS/shattered_mac"
|
43
|
-
#m.file "templates/configs/Mac/shattered.app/Contents/pbdevelopment.plist", "config/Mac/shattered.app/Contents/pbdevelopment.plist"
|
44
|
-
#m.file "templates/configs/Mac/shattered.app/Contents/PkgInfo", "config/Mac/shattered.app/Contents/PkgInfo"
|
45
|
-
#m.file "templates/configs/Mac/shattered.app/Contents/Resources/English.lproj/InfoPlist.strings", "config/Mac/shattered.app/Contents/Resources/English.lproj/InfoPlist.strings"
|
46
|
-
#m.file "templates/configs/Mac/shattered.app/Contents/Resources/English.lproj/MainMenu.nib/classes.nib", "config/Mac/shattered.app/Contents/Resources/English.lproj/MainMenu.nib/classes.nib"
|
47
|
-
#m.file "templates/configs/Mac/shattered.app/Contents/Resources/English.lproj/MainMenu.nib/info.nib", "config/Mac/shattered.app/Contents/Resources/English.lproj/MainMenu.nib/info.nib"
|
48
|
-
#m.file "templates/configs/Mac/shattered.app/Contents/Resources/English.lproj/MainMenu.nib/objects.nib", "config/Mac/shattered.app/Contents/Resources/English.lproj/MainMenu.nib/objects.nib"
|
49
|
-
#m.file "templates/configs/Mac/shattered.app/Contents/Resources/rb_main.rb", "config/Mac/shattered.app/Contents/Resources/rb_main.rb"
|
50
|
-
|
51
|
-
# Scripts
|
52
|
-
%w( generate runner console destroy ).each do |file|
|
53
|
-
m.file "../bin/#{file}", "script/#{file}", script_options
|
54
|
-
end
|
55
|
-
|
56
|
-
m.file "templates/configs/runner.rb", "script/runner.rb"
|
57
|
-
|
58
|
-
# Docs
|
59
|
-
m.file "templates/doc/README_FOR_APP", "doc/README_FOR_APP"
|
60
|
-
|
61
|
-
# Logs
|
62
|
-
%w(ogre shattered).each { |file|
|
63
|
-
m.file "templates/configs/empty.log", "log/#{file}.log", :chmod => 0666
|
64
|
-
}
|
65
|
-
|
66
|
-
# basic rmaterial
|
67
|
-
m.file "templates/media/basic.rmaterial", "app/media/common/templates/basic.rmaterial"
|
68
|
-
m.file "templates/media/offset_map.rmaterial", "app/media/common/templates/offset_map.rmaterial"
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
protected
|
73
|
-
def banner
|
74
|
-
"Usage: #{$0} /path/to/your/app [options]"
|
75
|
-
end
|
76
|
-
|
77
|
-
def add_options!(opt)
|
78
|
-
opt.separator ''
|
79
|
-
opt.separator 'Options:'
|
80
|
-
opt.on("--ruby [#{DEFAULT_SHEBANG}]",
|
81
|
-
"Path to the Ruby binary of your choice.") { |options[:shebang]| }
|
82
|
-
opt.on("--without-gems",
|
83
|
-
"Don't use the Shattered gems for your app.",
|
84
|
-
"This does not currently work.") { |options[:gem]| }
|
85
|
-
end
|
86
|
-
|
87
|
-
|
88
|
-
# Installation skeleton. Intermediate directories are automatically
|
89
|
-
# created so don't sweat their absence here.
|
90
|
-
BASEDIRS = %w(
|
91
|
-
app/models
|
92
|
-
app/views
|
93
|
-
app/media/common/programs
|
94
|
-
app/media/common/templates
|
95
|
-
doc
|
96
|
-
config
|
97
|
-
log
|
98
|
-
script
|
99
|
-
test/unit
|
100
|
-
vendor
|
101
|
-
vendor/plugins
|
102
|
-
)
|
103
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# require File.dirname(__FILE__) + '/../config/environment'
|
2
|
-
# require 'rails_generator'
|
3
|
-
# require 'rails_generator/scripts/generate'
|
4
|
-
|
5
|
-
# ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
6
|
-
# Rails::Generator::Scripts::Generate.new.run(ARGV)
|
7
|
-
require File.dirname(__FILE__) + '/../model/model_generator'
|
8
|
-
require File.dirname(__FILE__) + '/../view/view_generator'
|
9
|
-
|
10
|
-
class ActorGenerator < Rails::Generator::NamedBase #:nodoc:
|
11
|
-
def manifest
|
12
|
-
generators = [ModelGenerator, ViewGenerator]
|
13
|
-
record do |m|
|
14
|
-
generators.each do |generator|
|
15
|
-
generator.check_collisions(m, class_path, class_name)
|
16
|
-
end
|
17
|
-
generators.each do |generator|
|
18
|
-
generator.generate(m, class_path, file_name)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
Description:
|
2
|
-
The model generator creates stubs for a new model.
|
3
|
-
|
4
|
-
The generator takes a model name as its argument. The model name may be
|
5
|
-
given in CamelCase or under_score and should not be suffixed with 'Model'.
|
6
|
-
|
7
|
-
The generator creates a model class in app/models, a test suite in
|
8
|
-
test/unit, and test fixtures in test/fixtures/singular_name.yml.
|
9
|
-
|
10
|
-
Example:
|
11
|
-
./script/generate model Account
|
12
|
-
|
13
|
-
This will create an Account model:
|
14
|
-
Model: app/models/account.rb
|
15
|
-
Test: test/unit/account_test.rb
|
16
|
-
Fixtures: test/fixtures/accounts.yml
|
17
|
-
|
@@ -1,22 +0,0 @@
|
|
1
|
-
class ModelGenerator < Rails::Generator::NamedBase #:nodoc:
|
2
|
-
def manifest
|
3
|
-
record do |m|
|
4
|
-
self.class.check_collisions(m, class_path, class_name)
|
5
|
-
self.class.generate(m, class_path, file_name)
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.check_collisions(m, class_path, class_name)
|
10
|
-
# Check for class naming collisions.
|
11
|
-
m.class_collisions class_path, class_name, "#{class_name}Test"
|
12
|
-
end
|
13
|
-
def self.generate(m, class_path, file_name)
|
14
|
-
# Model, test, and fixture directories.
|
15
|
-
m.directory File.join('app/models', class_path)
|
16
|
-
m.directory File.join('test/unit', class_path)
|
17
|
-
|
18
|
-
# Model class, unit test, and fixtures.
|
19
|
-
m.template '../../model/templates/model.rb', File.join('app/models', class_path, "#{file_name}.rb")
|
20
|
-
m.template '../../model/templates/unit_test.rb', File.join('test/unit', class_path, "#{file_name}_test.rb")
|
21
|
-
end
|
22
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
Description:
|
2
|
-
The controller generator creates stubs for a new controller and its views.
|
3
|
-
|
4
|
-
The generator takes a controller name and a list of views as arguments.
|
5
|
-
The controller name may be given in CamelCase or under_score and should
|
6
|
-
not be suffixed with 'Controller'. To create a controller within a
|
7
|
-
module, specify the controller name as 'module/controller'.
|
8
|
-
|
9
|
-
The generator creates a controller class in app/controllers with view
|
10
|
-
templates in app/views/controller_name, a helper class in app/helpers,
|
11
|
-
and a functional test suite in test/functional.
|
12
|
-
|
13
|
-
Example:
|
14
|
-
./script/generate controller CreditCard open debit credit close
|
15
|
-
|
16
|
-
Credit card controller with URLs like /credit_card/debit.
|
17
|
-
Controller: app/controllers/credit_card_controller.rb
|
18
|
-
Views: app/views/credit_card/debit.rhtml [...]
|
19
|
-
Helper: app/helpers/credit_card_helper.rb
|
20
|
-
Test: test/functional/credit_card_controller_test.rb
|
21
|
-
|
22
|
-
Modules Example:
|
23
|
-
./script/generate controller 'admin/credit_card' suspend late_fee
|
24
|
-
|
25
|
-
Credit card admin controller with URLs /admin/credit_card/suspend.
|
26
|
-
Controller: app/controllers/admin/credit_card_controller.rb
|
27
|
-
Views: app/views/admin/credit_card/debit.rhtml [...]
|
28
|
-
Helper: app/helpers/admin/credit_card_helper.rb
|
29
|
-
Test: test/functional/admin/credit_card_controller_test.rb
|
30
|
-
|
@@ -1,19 +0,0 @@
|
|
1
|
-
class StateGenerator < Rails::Generator::NamedBase #:nodoc:
|
2
|
-
def manifest
|
3
|
-
record do |m|
|
4
|
-
# Check for class naming collisions.
|
5
|
-
m.class_collisions class_path, "#{class_name}State"
|
6
|
-
|
7
|
-
# Controller, helper, views, and test directories.
|
8
|
-
m.directory File.join('app/states', class_path)
|
9
|
-
|
10
|
-
# Controller class, functional test, and helper class.
|
11
|
-
m.template 'state.rb',
|
12
|
-
File.join('app/states',
|
13
|
-
class_path,
|
14
|
-
"#{file_name}_state.rb")
|
15
|
-
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
class <%= class_name %>State < ShatteredState::Base
|
2
|
-
key :pressed => :escape, :action => :quit
|
3
|
-
|
4
|
-
def initialize
|
5
|
-
# The different types of scene managers provided by Ogre are:
|
6
|
-
# :general
|
7
|
-
# :terrain
|
8
|
-
# :nature
|
9
|
-
# :paging
|
10
|
-
# :indoor
|
11
|
-
scene_manager = create_scene_manager :general
|
12
|
-
|
13
|
-
camera = scene_manager.create_camera("camera")
|
14
|
-
camera.position = v(0,0,-200)
|
15
|
-
camera.look_at v(0,0,0)
|
16
|
-
|
17
|
-
viewport = create_viewport(camera)
|
18
|
-
viewport.set_background_colour Ogre::ColourValue.new(0.8, 0.5, 0.5)
|
19
|
-
end
|
20
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
Description:
|
2
|
-
The controller generator creates stubs for a new controller and its views.
|
3
|
-
|
4
|
-
The generator takes a controller name and a list of views as arguments.
|
5
|
-
The controller name may be given in CamelCase or under_score and should
|
6
|
-
not be suffixed with 'Controller'. To create a controller within a
|
7
|
-
module, specify the controller name as 'module/controller'.
|
8
|
-
|
9
|
-
The generator creates a controller class in app/controllers with view
|
10
|
-
templates in app/views/controller_name, a helper class in app/helpers,
|
11
|
-
and a functional test suite in test/functional.
|
12
|
-
|
13
|
-
Example:
|
14
|
-
./script/generate controller CreditCard open debit credit close
|
15
|
-
|
16
|
-
Credit card controller with URLs like /credit_card/debit.
|
17
|
-
Controller: app/controllers/credit_card_controller.rb
|
18
|
-
Views: app/views/credit_card/debit.rhtml [...]
|
19
|
-
Helper: app/helpers/credit_card_helper.rb
|
20
|
-
Test: test/functional/credit_card_controller_test.rb
|
21
|
-
|
22
|
-
Modules Example:
|
23
|
-
./script/generate controller 'admin/credit_card' suspend late_fee
|
24
|
-
|
25
|
-
Credit card admin controller with URLs /admin/credit_card/suspend.
|
26
|
-
Controller: app/controllers/admin/credit_card_controller.rb
|
27
|
-
Views: app/views/admin/credit_card/debit.rhtml [...]
|
28
|
-
Helper: app/helpers/admin/credit_card_helper.rb
|
29
|
-
Test: test/functional/admin/credit_card_controller_test.rb
|
30
|
-
|
@@ -1,28 +0,0 @@
|
|
1
|
-
class ViewGenerator < Rails::Generator::NamedBase #:nodoc:
|
2
|
-
def manifest
|
3
|
-
record do |m|
|
4
|
-
self.class.check_collisions(m, class_path, class_name)
|
5
|
-
self.class.generate(m, class_path, file_name)
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.check_collisions(m, class_path, class_name)
|
10
|
-
# Check for class naming collisions.
|
11
|
-
m.class_collisions class_path, "#{class_name}View"
|
12
|
-
end
|
13
|
-
def self.generate(m, class_path, file_name)
|
14
|
-
# Controller, helper, views, and test directories.
|
15
|
-
m.directory File.join('app/views', class_path)
|
16
|
-
m.directory File.join('app/media', class_path, file_name)
|
17
|
-
|
18
|
-
# Controller class, functional test, and helper class.
|
19
|
-
m.template '../../view/templates/view.rb',
|
20
|
-
File.join('app/views',
|
21
|
-
class_path,
|
22
|
-
"#{file_name}_view.rb")
|
23
|
-
m.file "../../../../../templates/media/default.mesh",
|
24
|
-
File.join( 'app/media', class_path, file_name, "#{file_name}.mesh")
|
25
|
-
m.file "../../../../../templates/media/default.png",
|
26
|
-
File.join( 'app/media', class_path, file_name, "#{file_name}.png")
|
27
|
-
end
|
28
|
-
end
|
@@ -1,209 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/spec'
|
2
|
-
|
3
|
-
class Object
|
4
|
-
class << self
|
5
|
-
# Lookup missing generators using const_missing. This allows any
|
6
|
-
# generator to reference another without having to know its location:
|
7
|
-
# RubyGems, ~/.rails/generators, and SHATTERED_ROOT/generators.
|
8
|
-
def lookup_missing_generator(class_id)
|
9
|
-
if md = /(.+)Generator$/.match(class_id.to_s)
|
10
|
-
name = md.captures.first.demodulize.underscore
|
11
|
-
Rails::Generator::Base.lookup(name).klass
|
12
|
-
else
|
13
|
-
const_missing_before_generators(class_id)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
unless respond_to?(:const_missing_before_generators)
|
18
|
-
alias_method :const_missing_before_generators, :const_missing
|
19
|
-
alias_method :const_missing, :lookup_missing_generator
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
# User home directory lookup adapted from RubyGems.
|
25
|
-
def Dir.user_home
|
26
|
-
if ENV['HOME']
|
27
|
-
ENV['HOME']
|
28
|
-
elsif ENV['USERPROFILE']
|
29
|
-
ENV['USERPROFILE']
|
30
|
-
elsif ENV['HOMEDRIVE'] and ENV['HOMEPATH']
|
31
|
-
"#{ENV['HOMEDRIVE']}:#{ENV['HOMEPATH']}"
|
32
|
-
else
|
33
|
-
File.expand_path '~'
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
module Rails
|
39
|
-
module Generator
|
40
|
-
|
41
|
-
# Generator lookup is managed by a list of sources which return specs
|
42
|
-
# describing where to find and how to create generators. This module
|
43
|
-
# provides class methods for manipulating the source list and looking up
|
44
|
-
# generator specs, and an #instance wrapper for quickly instantiating
|
45
|
-
# generators by name.
|
46
|
-
#
|
47
|
-
# A spec is not a generator: it's a description of where to find
|
48
|
-
# the generator and how to create it. A source is anything that
|
49
|
-
# yields generators from #each. PathSource and GemSource are provided.
|
50
|
-
module Lookup
|
51
|
-
def self.included(base)
|
52
|
-
base.extend(ClassMethods)
|
53
|
-
base.use_component_sources!
|
54
|
-
end
|
55
|
-
|
56
|
-
# Convenience method to instantiate another generator.
|
57
|
-
def instance(generator_name, args, runtime_options = {})
|
58
|
-
self.class.instance(generator_name, args, runtime_options)
|
59
|
-
end
|
60
|
-
|
61
|
-
module ClassMethods
|
62
|
-
# The list of sources where we look, in order, for generators.
|
63
|
-
def sources
|
64
|
-
read_inheritable_attribute(:sources) or use_component_sources!
|
65
|
-
end
|
66
|
-
|
67
|
-
# Add a source to the end of the list.
|
68
|
-
def append_sources(*args)
|
69
|
-
sources.concat(args.flatten)
|
70
|
-
invalidate_cache!
|
71
|
-
end
|
72
|
-
|
73
|
-
# Add a source to the beginning of the list.
|
74
|
-
def prepend_sources(*args)
|
75
|
-
write_inheritable_array(:sources, args.flatten + sources)
|
76
|
-
invalidate_cache!
|
77
|
-
end
|
78
|
-
|
79
|
-
# Reset the source list.
|
80
|
-
def reset_sources
|
81
|
-
write_inheritable_attribute(:sources, [])
|
82
|
-
invalidate_cache!
|
83
|
-
end
|
84
|
-
|
85
|
-
# Use application generators (app, ?).
|
86
|
-
def use_application_sources!
|
87
|
-
reset_sources
|
88
|
-
sources << PathSource.new(:builtin, "#{File.dirname(__FILE__)}/generators/applications")
|
89
|
-
end
|
90
|
-
|
91
|
-
# Use component generators (model, controller, etc).
|
92
|
-
# 1. Rails application. If SHATTERED_ROOT is defined we know we're
|
93
|
-
# generating in the context of a Rails application, so search
|
94
|
-
# SHATTERED_ROOT/generators.
|
95
|
-
# 2. User home directory. Search ~/.rails/generators.
|
96
|
-
# 3. RubyGems. Search for gems named *_generator.
|
97
|
-
# 4. Builtins. Model, controller, mailer, scaffold.
|
98
|
-
def use_component_sources!
|
99
|
-
reset_sources
|
100
|
-
if defined? ::SHATTERED_ROOT
|
101
|
-
sources << PathSource.new(:lib, "#{::SHATTERED_ROOT}/lib/generators")
|
102
|
-
sources << PathSource.new(:vendor, "#{::SHATTERED_ROOT}/vendor/generators")
|
103
|
-
sources << PathSource.new(:plugins, "#{::SHATTERED_ROOT}/vendor/plugins/**/generators")
|
104
|
-
end
|
105
|
-
sources << PathSource.new(:user, "#{Dir.user_home}/.rails/generators")
|
106
|
-
sources << GemSource.new if Object.const_defined?(:Gem)
|
107
|
-
sources << PathSource.new(:builtin, "#{File.dirname(__FILE__)}/generators/components")
|
108
|
-
end
|
109
|
-
|
110
|
-
# Lookup knows how to find generators' Specs from a list of Sources.
|
111
|
-
# Searches the sources, in order, for the first matching name.
|
112
|
-
def lookup(generator_name)
|
113
|
-
@found ||= {}
|
114
|
-
generator_name = generator_name.to_s.downcase
|
115
|
-
@found[generator_name] ||= cache.find { |spec| spec.name == generator_name }
|
116
|
-
unless @found[generator_name]
|
117
|
-
chars = generator_name.scan(/./).map{|c|"#{c}.*?"}
|
118
|
-
rx = /^#{chars}$/
|
119
|
-
gns = cache.select{|spec| spec.name =~ rx }
|
120
|
-
@found[generator_name] ||= gns.first if gns.length == 1
|
121
|
-
raise GeneratorError, "Pattern '#{generator_name}' matches more than one generator: #{gns.map{|sp|sp.name}.join(', ')}" if gns.length > 1
|
122
|
-
end
|
123
|
-
@found[generator_name] or raise GeneratorError, "Couldn't find '#{generator_name}' generator"
|
124
|
-
end
|
125
|
-
|
126
|
-
# Convenience method to lookup and instantiate a generator.
|
127
|
-
def instance(generator_name, args = [], runtime_options = {})
|
128
|
-
lookup(generator_name).klass.new(args, full_options(runtime_options))
|
129
|
-
end
|
130
|
-
|
131
|
-
private
|
132
|
-
# Lookup and cache every generator from the source list.
|
133
|
-
def cache
|
134
|
-
@cache ||= sources.inject([]) { |cache, source| cache + source.map }
|
135
|
-
end
|
136
|
-
|
137
|
-
# Clear the cache whenever the source list changes.
|
138
|
-
def invalidate_cache!
|
139
|
-
@cache = nil
|
140
|
-
end
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
# Sources enumerate (yield from #each) generator specs which describe
|
145
|
-
# where to find and how to create generators. Enumerable is mixed in so,
|
146
|
-
# for example, source.collect will retrieve every generator.
|
147
|
-
# Sources may be assigned a label to distinguish them.
|
148
|
-
class Source
|
149
|
-
include Enumerable
|
150
|
-
|
151
|
-
attr_reader :label
|
152
|
-
def initialize(label)
|
153
|
-
@label = label
|
154
|
-
end
|
155
|
-
|
156
|
-
# The each method must be implemented in subclasses.
|
157
|
-
# The base implementation raises an error.
|
158
|
-
def each
|
159
|
-
raise NotImplementedError
|
160
|
-
end
|
161
|
-
|
162
|
-
# Return a convenient sorted list of all generator names.
|
163
|
-
def names
|
164
|
-
map { |spec| spec.name }.sort
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
|
169
|
-
# PathSource looks for generators in a filesystem directory.
|
170
|
-
class PathSource < Source
|
171
|
-
attr_reader :path
|
172
|
-
|
173
|
-
def initialize(label, path)
|
174
|
-
super label
|
175
|
-
@path = path
|
176
|
-
end
|
177
|
-
|
178
|
-
# Yield each eligible subdirectory.
|
179
|
-
def each
|
180
|
-
Dir["#{path}/[a-z]*"].each do |dir|
|
181
|
-
if File.directory?(dir)
|
182
|
-
yield Spec.new(File.basename(dir), dir, label)
|
183
|
-
end
|
184
|
-
end
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
|
189
|
-
# GemSource hits the mines to quarry for generators. The latest versions
|
190
|
-
# of gems named *_generator are selected.
|
191
|
-
class GemSource < Source
|
192
|
-
def initialize
|
193
|
-
super :RubyGems
|
194
|
-
end
|
195
|
-
|
196
|
-
# Yield latest versions of generator gems.
|
197
|
-
def each
|
198
|
-
Gem::cache.search(/_generator$/).inject({}) { |latest, gem|
|
199
|
-
hem = latest[gem.name]
|
200
|
-
latest[gem.name] = gem if hem.nil? or gem.version > hem.version
|
201
|
-
latest
|
202
|
-
}.values.each { |gem|
|
203
|
-
yield Spec.new(gem.name.sub(/_generator$/, ''), gem.full_gem_path, label)
|
204
|
-
}
|
205
|
-
end
|
206
|
-
end
|
207
|
-
|
208
|
-
end
|
209
|
-
end
|