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.
Files changed (223) hide show
  1. data/History.txt +6 -0
  2. data/INSTALL.txt +5 -0
  3. data/License.txt +18 -0
  4. data/Manifest.txt +175 -0
  5. data/README.txt +39 -0
  6. data/Rakefile +6 -0
  7. data/app_generators/actor/USAGE +6 -0
  8. data/app_generators/actor/actor_generator.rb +51 -0
  9. data/app_generators/actor/templates/actor.rb +4 -0
  10. data/app_generators/actor/templates/spec.rb +11 -0
  11. data/app_generators/actor/templates/unit_test.rb +9 -0
  12. data/app_generators/commands/console.rb +6 -0
  13. data/{lib/rails_generator/generators/applications/shattered_app → app_generators/shattered}/USAGE +1 -1
  14. data/app_generators/shattered/shattered_generator.rb +67 -0
  15. data/{lib → app_generators/shattered}/templates/Rakefile +4 -4
  16. data/app_generators/shattered/templates/configs/game.controls +16 -0
  17. data/app_generators/shattered/templates/configs/ogre_plugins.linux.cfg +12 -0
  18. data/app_generators/shattered/templates/configs/ogre_plugins.osx.cfg +12 -0
  19. data/{lib → app_generators/shattered}/templates/configs/ogre_plugins.windows.cfg +2 -2
  20. data/app_generators/shattered/templates/game.rb +50 -0
  21. data/{lib → app_generators/shattered}/templates/media/basic.rmaterial +0 -0
  22. data/app_generators/shattered/templates/spec/game_spec.rb +5 -0
  23. data/app_generators/shattered/templates/spec/spec_helper.rb +12 -0
  24. data/bin/shattered +39 -0
  25. data/config/hoe.rb +77 -0
  26. data/config/requirements.rb +15 -0
  27. data/lib/shattered.rb +40 -0
  28. data/lib/shattered_game/actor.rb +6 -0
  29. data/lib/shattered_game/game.rb +285 -0
  30. data/lib/{tasks → shattered_game/rake_tasks}/framework.rake +19 -24
  31. data/lib/{tasks → shattered_game/rake_tasks}/log.rake +0 -0
  32. data/lib/{tasks → shattered_game/rake_tasks}/misc.rake +1 -2
  33. data/lib/{tasks → shattered_game/rake_tasks}/pre_namespace_aliases.rake +0 -0
  34. data/lib/{tasks → shattered_game/rake_tasks}/shattered.rb +0 -0
  35. data/lib/shattered_game/rake_tasks/spec.rake +9 -0
  36. data/lib/{tasks → shattered_game/rake_tasks}/statistics.rake +0 -0
  37. data/lib/shattered_game/required.rb +2 -0
  38. data/lib/shattered_game/version.rb +9 -0
  39. data/lib/shattered_model/controls.rb +67 -0
  40. data/lib/shattered_model/input.rb +171 -0
  41. data/lib/shattered_model/key_converter.rb +44 -0
  42. data/lib/shattered_model/required.rb +4 -0
  43. data/lib/shattered_model/shattered_model.rb +28 -0
  44. data/lib/shattered_model/timed_event.rb +120 -0
  45. data/lib/shattered_model/timer.rb +78 -0
  46. data/lib/shattered_support/core_ext.rb +1 -0
  47. data/lib/shattered_support/core_ext/class.rb +3 -0
  48. data/lib/shattered_support/core_ext/class/attribute_accessors.rb +44 -0
  49. data/lib/shattered_support/core_ext/class/inheritable_attributes.rb +115 -0
  50. data/lib/shattered_support/core_ext/class/removal.rb +24 -0
  51. data/lib/shattered_support/core_ext/dir.rb +5 -0
  52. data/lib/shattered_support/core_ext/dir/search.rb +25 -0
  53. data/lib/shattered_support/core_ext/file.rb +5 -0
  54. data/lib/shattered_support/core_ext/file/search.rb +64 -0
  55. data/lib/shattered_support/core_ext/numeric.rb +5 -0
  56. data/lib/shattered_support/core_ext/numeric/time.rb +72 -0
  57. data/lib/shattered_support/core_ext/string.rb +13 -0
  58. data/lib/shattered_support/core_ext/string/access.rb +58 -0
  59. data/lib/shattered_support/core_ext/string/conversions.rb +19 -0
  60. data/lib/shattered_support/core_ext/string/inflections.rb +64 -0
  61. data/lib/shattered_support/core_ext/string/iterators.rb +17 -0
  62. data/lib/shattered_support/core_ext/string/starts_ends_with.rb +20 -0
  63. data/lib/shattered_support/error.rb +12 -0
  64. data/lib/shattered_support/inflections.rb +53 -0
  65. data/lib/shattered_support/inflector.rb +178 -0
  66. data/lib/shattered_support/pre_initialize.rb +153 -0
  67. data/lib/shattered_support/required.rb +9 -0
  68. data/lib/shattered_support/unload.rb +18 -0
  69. data/lib/shattered_view/camera.rb +7 -0
  70. data/lib/shattered_view/ogrerb/base.rb +28 -0
  71. data/lib/shattered_view/ogrerb/camera.rb +14 -0
  72. data/lib/shattered_view/ogrerb/key_manager.rb +54 -0
  73. data/lib/shattered_view/ogrerb/light.rb +25 -0
  74. data/lib/shattered_view/ogrerb/material.rb +5 -0
  75. data/lib/shattered_view/ogrerb/mesh_instance.rb +85 -0
  76. data/lib/shattered_view/ogrerb/mouse_manager.rb +109 -0
  77. data/lib/shattered_view/ogrerb/particle_system.rb +24 -0
  78. data/lib/shattered_view/ogrerb/rgb.rb +6 -0
  79. data/lib/shattered_view/ogrerb/rmaterial.rb +87 -0
  80. data/lib/shattered_view/ogrerb/scene_node.rb +76 -0
  81. data/lib/shattered_view/ogrerb/vector.rb +243 -0
  82. data/lib/shattered_view/ogrerb/window_event.rb +14 -0
  83. data/lib/shattered_view/resources.rb +64 -0
  84. data/lib/shattered_view/shattered_view.rb +248 -0
  85. data/script/destroy +14 -0
  86. data/script/generate +14 -0
  87. data/setup.rb +1585 -0
  88. data/tasks/deployment.rake +30 -0
  89. data/tasks/environment.rake +7 -0
  90. data/tasks/rcov.rake +7 -0
  91. data/tasks/testing.rake +46 -0
  92. data/tasks/website.rake +15 -0
  93. data/test/acceptance/Rakefile +10 -0
  94. data/test/acceptance/config/game.controls +17 -0
  95. data/test/acceptance/config/ogre_plugins.linux.cfg +12 -0
  96. data/test/acceptance/config/ogre_plugins.osx.cfg +12 -0
  97. data/test/acceptance/config/ogre_plugins.windows.cfg +14 -0
  98. data/test/acceptance/config/ogrerb_defaults.save +8 -0
  99. data/test/acceptance/game.rb +120 -0
  100. data/test/acceptance/lib/acceptance_test.rb +20 -0
  101. data/test/acceptance/lib/console.rb +54 -0
  102. data/test/acceptance/lib/input_test.rb +8 -0
  103. data/test/acceptance/lib/label.rb +30 -0
  104. data/test/acceptance/lib/light_test.rb +60 -0
  105. data/test/acceptance/lib/mesh_test.rb +69 -0
  106. data/test/acceptance/lib/particle_test.rb +9 -0
  107. data/test/acceptance/media/GreenSkin.jpg +0 -0
  108. data/test/acceptance/media/Ogre.material +86 -0
  109. data/test/acceptance/media/WeirdEye.png +0 -0
  110. data/test/acceptance/media/basic.rmaterial +18 -0
  111. data/test/acceptance/media/console.fontdef +7 -0
  112. data/test/acceptance/media/console.material +13 -0
  113. data/test/acceptance/media/console.png +0 -0
  114. data/test/acceptance/media/console.ttf +0 -0
  115. data/test/acceptance/media/dirt01.png +0 -0
  116. data/test/acceptance/media/fountain.material +19 -0
  117. data/test/acceptance/media/fountain.particle +40 -0
  118. data/test/acceptance/media/fountain.png +0 -0
  119. data/test/acceptance/media/fountaincolors.png +0 -0
  120. data/test/acceptance/media/ogre.mesh +0 -0
  121. data/test/acceptance/media/spheremap.png +0 -0
  122. data/test/acceptance/media/win.png +0 -0
  123. data/test/acceptance/spec/spec_helper.rb +7 -0
  124. data/test/integration/actor_generator_test.rb +43 -0
  125. data/test/integration/shattered_generator_test.rb +43 -0
  126. data/test/integration/test_helper.rb +20 -0
  127. data/test/ogre_test_defaults.save +8 -0
  128. data/test/ogre_test_plugins.linux.cfg +12 -0
  129. data/test/ogre_test_plugins.osx.cfg +12 -0
  130. data/test/ogre_test_plugins.windows.cfg +14 -0
  131. data/test/test_helper.rb +109 -0
  132. data/test/unit/shattered_game/actor_test.rb +9 -0
  133. data/test/unit/shattered_game/game_test.rb +49 -0
  134. data/test/unit/shattered_game/runner_test.rb +56 -0
  135. data/test/unit/shattered_model/controls/mouse.controls +4 -0
  136. data/test/unit/shattered_model/controls/player.controls +4 -0
  137. data/test/unit/shattered_model/controls/too_many_delims.controls +1 -0
  138. data/test/unit/shattered_model/key_controls_test.rb +89 -0
  139. data/test/unit/shattered_model/key_converter_test.rb +37 -0
  140. data/test/unit/shattered_model/keyboard_input_test.rb +32 -0
  141. data/test/unit/shattered_model/mouse_controls_test.rb +50 -0
  142. data/test/unit/shattered_model/mouse_input_test.rb +61 -0
  143. data/test/unit/shattered_model/shattered_model_test.rb +117 -0
  144. data/test/unit/shattered_model/timed_event_test.rb +79 -0
  145. data/test/unit/shattered_model/timer_test.rb +325 -0
  146. data/{lib/rails_generator/generators/components/actor/templates/actor.rb → test/unit/shattered_support/directory_test/file.test} +0 -0
  147. data/test/unit/shattered_support/numeric_ext_test.rb +38 -0
  148. data/test/unit/shattered_support/pre_initialize_test.rb +63 -0
  149. data/test/unit/shattered_support/shattered_support_test.rb +39 -0
  150. data/test/unit/shattered_support/unload_test.rb +17 -0
  151. data/test/unit/shattered_view/light_test.rb +38 -0
  152. data/test/unit/shattered_view/material_test.rb +41 -0
  153. data/test/unit/shattered_view/media_test/basic.rmaterial +18 -0
  154. data/{lib/templates/configs/empty.log → test/unit/shattered_view/media_test/beltch.ogg} +0 -0
  155. data/test/unit/shattered_view/media_test/test.mesh +0 -0
  156. data/test/unit/shattered_view/mesh_test.rb +59 -0
  157. data/test/unit/shattered_view/node_test.rb +11 -0
  158. data/test/unit/shattered_view/ogrerb/camera_test.rb +12 -0
  159. data/test/unit/shattered_view/ogrerb/key_manager_test.rb +42 -0
  160. data/test/unit/shattered_view/ogrerb/media/basic.rmaterial +18 -0
  161. data/test/unit/shattered_view/ogrerb/media/test.mesh +0 -0
  162. data/test/unit/shattered_view/ogrerb/media/test.rmaterial +1 -0
  163. data/test/unit/shattered_view/ogrerb/mesh_instance_test.rb +74 -0
  164. data/test/unit/shattered_view/ogrerb/mouse_manager_test.rb +104 -0
  165. data/test/unit/shattered_view/ogrerb/ogrerb.log +51 -0
  166. data/test/unit/shattered_view/ogrerb/resolve_ogrerb_test.rb +13 -0
  167. data/test/unit/shattered_view/ogrerb/rgb_test.rb +10 -0
  168. data/test/unit/shattered_view/ogrerb/rmaterial_test.rb +28 -0
  169. data/test/unit/shattered_view/ogrerb/scene_type_test.rb +12 -0
  170. data/test/unit/shattered_view/ogrerb/vector_test.rb +206 -0
  171. data/test/unit/shattered_view/particle_test.rb +23 -0
  172. data/test/unit/shattered_view/resources_test.rb +45 -0
  173. data/test/unit/shattered_view/test_helper.rb +1 -0
  174. data/test/unit/shattered_view/window_event_test.rb +19 -0
  175. data/test/unit/test_helper.rb +1 -0
  176. metadata +205 -121
  177. data/bin/console +0 -4
  178. data/bin/destroy +0 -9
  179. data/bin/generate +0 -7
  180. data/bin/runner +0 -9
  181. data/bin/shatter +0 -22
  182. data/lib/commands/console.rb +0 -23
  183. data/lib/game_loader.rb +0 -118
  184. data/lib/rails_generator.rb +0 -43
  185. data/lib/rails_generator/base.rb +0 -203
  186. data/lib/rails_generator/commands.rb +0 -519
  187. data/lib/rails_generator/generators/applications/shattered_app/shattered_app_generator.rb +0 -103
  188. data/lib/rails_generator/generators/components/actor/actor_generator.rb +0 -22
  189. data/lib/rails_generator/generators/components/model/USAGE +0 -17
  190. data/lib/rails_generator/generators/components/model/model_generator.rb +0 -22
  191. data/lib/rails_generator/generators/components/model/templates/fixtures.yml +0 -5
  192. data/lib/rails_generator/generators/components/model/templates/model.rb +0 -2
  193. data/lib/rails_generator/generators/components/model/templates/unit_test.rb +0 -11
  194. data/lib/rails_generator/generators/components/state/USAGE +0 -30
  195. data/lib/rails_generator/generators/components/state/state_generator.rb +0 -19
  196. data/lib/rails_generator/generators/components/state/templates/state.rb +0 -20
  197. data/lib/rails_generator/generators/components/view/USAGE +0 -30
  198. data/lib/rails_generator/generators/components/view/templates/material +0 -4
  199. data/lib/rails_generator/generators/components/view/templates/view.rb +0 -7
  200. data/lib/rails_generator/generators/components/view/view_generator.rb +0 -28
  201. data/lib/rails_generator/lookup.rb +0 -209
  202. data/lib/rails_generator/manifest.rb +0 -53
  203. data/lib/rails_generator/options.rb +0 -143
  204. data/lib/rails_generator/scripts.rb +0 -83
  205. data/lib/rails_generator/scripts/destroy.rb +0 -7
  206. data/lib/rails_generator/scripts/generate.rb +0 -7
  207. data/lib/rails_generator/scripts/update.rb +0 -12
  208. data/lib/rails_generator/simple_logger.rb +0 -46
  209. data/lib/rails_generator/spec.rb +0 -44
  210. data/lib/shatter.rb +0 -7
  211. data/lib/tasks/documentation.rake +0 -46
  212. data/lib/tasks/testing.rake +0 -102
  213. data/lib/templates/MIT-LICENSE +0 -20
  214. data/lib/templates/README +0 -35
  215. data/lib/templates/configs/boot.rb +0 -35
  216. data/lib/templates/configs/ogre.cfg +0 -4
  217. data/lib/templates/configs/runner.rb +0 -5
  218. data/lib/templates/doc/README_FOR_APP +0 -2
  219. data/lib/templates/environments/environment.rb +0 -10
  220. data/lib/templates/media/default.mesh +0 -0
  221. data/lib/templates/media/default.png +0 -0
  222. data/lib/templates/media/offset_map.rmaterial +0 -117
  223. 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,5 +0,0 @@
1
- # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
- first_<%= singular_name %>:
3
- id: 1
4
- another_<%= singular_name %>:
5
- id: 2
@@ -1,2 +0,0 @@
1
- class <%= class_name %> < ShatteredModel::Base
2
- end
@@ -1,11 +0,0 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
2
-
3
- class <%= class_name %>Test < Test::Unit::TestCase
4
-
5
- def setup
6
- end
7
-
8
- # Replace this with your real tests.
9
- def test_truth
10
- end
11
- 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,4 +0,0 @@
1
- <%=class_name%>Material
2
- {
3
-
4
- }
@@ -1,7 +0,0 @@
1
- class <%= class_name %>View < ShatteredView::Base
2
- # View works by executing after any model event
3
- # This initialize will work after the model's initialize
4
- def initialize
5
- mesh = create(:mesh, "<%= class_name %>")
6
- end
7
- end
@@ -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