ronin 0.2.4 → 0.3.0

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 (240) hide show
  1. data.tar.gz.sig +0 -0
  2. data/History.txt +95 -0
  3. data/Manifest.txt +55 -25
  4. data/README.txt +64 -52
  5. data/Rakefile +21 -14
  6. data/bin/ronin +1 -1
  7. data/bin/ronin-add +1 -1
  8. data/bin/ronin-console +1 -1
  9. data/bin/ronin-help +1 -1
  10. data/bin/ronin-install +1 -1
  11. data/bin/ronin-list +1 -1
  12. data/bin/ronin-remove +1 -1
  13. data/bin/ronin-uninstall +1 -1
  14. data/bin/ronin-update +1 -1
  15. data/lib/ronin.rb +2 -4
  16. data/lib/ronin/arch.rb +66 -21
  17. data/lib/ronin/author.rb +27 -18
  18. data/lib/ronin/cacheable.rb +63 -23
  19. data/lib/ronin/code/emittable.rb +1 -4
  20. data/lib/ronin/code/reference.rb +2 -5
  21. data/lib/ronin/code/symbol_table.rb +1 -4
  22. data/lib/ronin/code/token.rb +1 -4
  23. data/lib/ronin/config.rb +31 -10
  24. data/lib/ronin/database.rb +1 -4
  25. data/lib/ronin/database/database.rb +42 -23
  26. data/lib/ronin/database/exceptions.rb +1 -4
  27. data/lib/ronin/database/exceptions/invalid_config.rb +1 -4
  28. data/lib/ronin/environment.rb +1 -5
  29. data/lib/ronin/extensions.rb +1 -5
  30. data/lib/ronin/extensions/array.rb +8 -6
  31. data/lib/ronin/extensions/file.rb +9 -4
  32. data/lib/ronin/extensions/ip_addr.rb +33 -13
  33. data/lib/ronin/extensions/kernel.rb +44 -9
  34. data/lib/ronin/extensions/meta.rb +1 -4
  35. data/lib/ronin/extensions/string.rb +8 -7
  36. data/lib/ronin/extensions/uri.rb +1 -4
  37. data/lib/ronin/extensions/uri/http.rb +1 -48
  38. data/lib/ronin/extensions/uri/query_params.rb +27 -8
  39. data/lib/ronin/formatting.rb +1 -4
  40. data/lib/ronin/formatting/binary.rb +1 -4
  41. data/lib/ronin/formatting/digest.rb +1 -4
  42. data/lib/ronin/formatting/extensions.rb +1 -4
  43. data/lib/ronin/formatting/extensions/binary.rb +1 -4
  44. data/lib/ronin/formatting/extensions/binary/file.rb +3 -28
  45. data/lib/ronin/formatting/extensions/binary/integer.rb +31 -12
  46. data/lib/ronin/formatting/extensions/binary/string.rb +59 -36
  47. data/lib/ronin/formatting/extensions/digest.rb +1 -4
  48. data/lib/ronin/formatting/extensions/digest/string.rb +31 -9
  49. data/lib/ronin/formatting/extensions/http.rb +1 -4
  50. data/lib/ronin/formatting/extensions/http/string.rb +16 -9
  51. data/lib/ronin/formatting/extensions/text.rb +1 -4
  52. data/lib/ronin/formatting/extensions/text/array.rb +17 -7
  53. data/lib/ronin/formatting/extensions/text/string.rb +70 -27
  54. data/lib/ronin/formatting/http.rb +1 -4
  55. data/lib/ronin/formatting/text.rb +1 -4
  56. data/lib/ronin/license.rb +72 -65
  57. data/lib/ronin/model.rb +1 -4
  58. data/lib/ronin/model/has_description.rb +37 -8
  59. data/lib/ronin/model/has_license.rb +12 -8
  60. data/lib/ronin/model/has_name.rb +10 -7
  61. data/lib/ronin/model/has_version.rb +14 -4
  62. data/lib/ronin/model/model.rb +71 -14
  63. data/lib/ronin/network.rb +1 -4
  64. data/lib/ronin/network/esmtp.rb +1 -4
  65. data/lib/ronin/network/extensions.rb +1 -4
  66. data/lib/ronin/network/extensions/esmtp.rb +1 -4
  67. data/lib/ronin/network/extensions/esmtp/net.rb +49 -21
  68. data/lib/ronin/network/extensions/http.rb +1 -4
  69. data/lib/ronin/network/extensions/http/net.rb +319 -531
  70. data/lib/ronin/network/extensions/imap.rb +1 -4
  71. data/lib/ronin/network/extensions/imap/net.rb +50 -23
  72. data/lib/ronin/network/extensions/pop3.rb +1 -4
  73. data/lib/ronin/network/extensions/pop3/net.rb +40 -17
  74. data/lib/ronin/network/extensions/smtp.rb +1 -4
  75. data/lib/ronin/network/extensions/smtp/net.rb +49 -21
  76. data/lib/ronin/network/extensions/tcp.rb +1 -4
  77. data/lib/ronin/network/extensions/tcp/net.rb +234 -31
  78. data/lib/ronin/network/extensions/telnet.rb +1 -4
  79. data/lib/ronin/network/extensions/telnet/net.rb +83 -51
  80. data/lib/ronin/network/extensions/udp.rb +1 -4
  81. data/lib/ronin/network/extensions/udp/net.rb +164 -27
  82. data/lib/ronin/{sessions.rb → network/helpers.rb} +10 -13
  83. data/lib/ronin/network/helpers/esmtp.rb +129 -0
  84. data/lib/ronin/{sessions/session.rb → network/helpers/helper.rb} +25 -17
  85. data/lib/ronin/network/helpers/http.rb +444 -0
  86. data/lib/ronin/network/helpers/imap.rb +115 -0
  87. data/lib/ronin/network/helpers/pop3.rb +110 -0
  88. data/lib/ronin/network/helpers/smtp.rb +123 -0
  89. data/lib/ronin/network/helpers/tcp.rb +309 -0
  90. data/lib/ronin/network/helpers/telnet.rb +158 -0
  91. data/lib/ronin/network/helpers/udp.rb +197 -0
  92. data/lib/ronin/network/http.rb +3 -156
  93. data/lib/ronin/network/http/exceptions.rb +1 -4
  94. data/lib/ronin/network/http/exceptions/unknown_request.rb +1 -4
  95. data/lib/ronin/network/http/http.rb +214 -0
  96. data/lib/ronin/network/http/proxy.rb +308 -0
  97. data/lib/ronin/network/imap.rb +7 -6
  98. data/lib/ronin/network/pop3.rb +7 -6
  99. data/lib/ronin/network/smtp.rb +1 -4
  100. data/lib/ronin/network/smtp/email.rb +34 -18
  101. data/lib/ronin/network/smtp/smtp.rb +19 -7
  102. data/lib/ronin/network/tcp.rb +1 -4
  103. data/lib/ronin/network/telnet.rb +25 -12
  104. data/lib/ronin/network/udp.rb +1 -4
  105. data/lib/ronin/os.rb +43 -21
  106. data/lib/ronin/path.rb +29 -9
  107. data/lib/ronin/platform.rb +1 -4
  108. data/lib/ronin/platform/exceptions.rb +1 -4
  109. data/lib/ronin/platform/exceptions/extension_not_found.rb +1 -4
  110. data/lib/ronin/platform/exceptions/overlay_cached.rb +1 -4
  111. data/lib/ronin/platform/exceptions/overlay_not_found.rb +1 -4
  112. data/lib/ronin/platform/extension.rb +195 -52
  113. data/lib/ronin/platform/extension_cache.rb +60 -24
  114. data/lib/ronin/platform/maintainer.rb +15 -8
  115. data/lib/ronin/platform/object_cache.rb +29 -8
  116. data/lib/ronin/platform/overlay.rb +82 -26
  117. data/lib/ronin/platform/overlay_cache.rb +179 -56
  118. data/lib/ronin/platform/platform.rb +154 -58
  119. data/lib/ronin/platform/ronin.rb +38 -11
  120. data/lib/ronin/product.rb +17 -17
  121. data/lib/ronin/rpc.rb +1 -4
  122. data/lib/ronin/rpc/call.rb +1 -4
  123. data/lib/ronin/rpc/client.rb +1 -4
  124. data/lib/ronin/rpc/console.rb +1 -4
  125. data/lib/ronin/rpc/exceptions.rb +1 -4
  126. data/lib/ronin/rpc/exceptions/not_implemented.rb +1 -4
  127. data/lib/ronin/rpc/exceptions/response_missing.rb +1 -4
  128. data/lib/ronin/rpc/response.rb +1 -4
  129. data/lib/ronin/rpc/service.rb +1 -4
  130. data/lib/ronin/rpc/shell.rb +1 -4
  131. data/lib/ronin/scanners.rb +1 -4
  132. data/lib/ronin/scanners/exceptions.rb +1 -4
  133. data/lib/ronin/scanners/exceptions/unknown_category.rb +1 -4
  134. data/lib/ronin/scanners/scanner.rb +82 -26
  135. data/lib/ronin/static.rb +1 -4
  136. data/lib/ronin/static/finders.rb +1 -4
  137. data/lib/ronin/static/static.rb +16 -7
  138. data/lib/ronin/templates.rb +2 -4
  139. data/lib/ronin/templates/erb.rb +24 -10
  140. data/lib/ronin/templates/template.rb +130 -0
  141. data/lib/ronin/ui.rb +2 -6
  142. data/lib/ronin/ui/command_line.rb +1 -4
  143. data/lib/ronin/ui/command_line/command.rb +137 -68
  144. data/lib/ronin/ui/command_line/command_line.rb +52 -29
  145. data/lib/ronin/ui/command_line/commands/add.rb +39 -67
  146. data/lib/ronin/ui/command_line/commands/console.rb +23 -27
  147. data/lib/ronin/ui/command_line/commands/help.rb +10 -29
  148. data/lib/ronin/ui/command_line/commands/install.rb +31 -56
  149. data/lib/ronin/ui/command_line/commands/list.rb +34 -52
  150. data/lib/ronin/ui/command_line/commands/remove.rb +12 -32
  151. data/lib/ronin/ui/command_line/commands/uninstall.rb +11 -31
  152. data/lib/ronin/ui/command_line/commands/update.rb +15 -35
  153. data/lib/ronin/ui/command_line/exceptions.rb +1 -4
  154. data/lib/ronin/ui/command_line/exceptions/unknown_command.rb +1 -4
  155. data/lib/ronin/ui/console.rb +54 -23
  156. data/lib/ronin/ui/hexdump.rb +1 -4
  157. data/lib/ronin/ui/hexdump/extensions.rb +1 -4
  158. data/lib/ronin/ui/hexdump/extensions/file.rb +8 -6
  159. data/lib/ronin/ui/hexdump/extensions/kernel.rb +4 -5
  160. data/lib/ronin/ui/hexdump/hexdump.rb +8 -5
  161. data/lib/ronin/{sessions/exceptions.rb → ui/output.rb} +3 -5
  162. data/lib/ronin/ui/output/handler.rb +121 -0
  163. data/lib/ronin/ui/output/helpers.rb +110 -0
  164. data/lib/ronin/ui/output/output.rb +144 -0
  165. data/lib/ronin/ui/shell.rb +38 -12
  166. data/lib/ronin/version.rb +2 -5
  167. data/lib/ronin/{sessions/exceptions/variable_missing.rb → yard.rb} +2 -10
  168. data/lib/ronin/{ronin.rb → yard/handlers.rb} +5 -15
  169. data/lib/ronin/yard/handlers/ruby.rb +27 -0
  170. data/lib/ronin/yard/handlers/ruby/base.rb +27 -0
  171. data/lib/ronin/yard/handlers/ruby/belongs_to_handler.rb +45 -0
  172. data/lib/ronin/yard/handlers/ruby/eval_block_handler.rb +18 -0
  173. data/lib/ronin/yard/handlers/ruby/has_handler.rb +49 -0
  174. data/lib/ronin/yard/handlers/ruby/legacy.rb +26 -0
  175. data/lib/ronin/yard/handlers/ruby/legacy/belongs_to_handler.rb +41 -0
  176. data/lib/ronin/yard/handlers/ruby/legacy/eval_block_handler.rb +19 -0
  177. data/lib/ronin/yard/handlers/ruby/legacy/has_handler.rb +34 -0
  178. data/lib/ronin/yard/handlers/ruby/legacy/metaclass_eval_handler.rb +21 -0
  179. data/lib/ronin/yard/handlers/ruby/legacy/property_handler.rb +41 -0
  180. data/lib/ronin/yard/handlers/ruby/legacy/scanner_handler.rb +61 -0
  181. data/lib/ronin/yard/handlers/ruby/metaclass_eval_handler.rb +18 -0
  182. data/lib/ronin/yard/handlers/ruby/property_handler.rb +45 -0
  183. data/lib/ronin/yard/handlers/ruby/scanner_handler.rb +66 -0
  184. data/spec/author_spec.rb +3 -3
  185. data/spec/extensions/classes/some_class.rb +2 -0
  186. data/spec/extensions/kernel_spec.rb +17 -0
  187. data/spec/extensions/uri/http_spec.rb +0 -31
  188. data/spec/formatting/binary/integer_spec.rb +4 -0
  189. data/spec/formatting/text/string_spec.rb +96 -0
  190. data/spec/license_spec.rb +6 -6
  191. data/spec/model/classes/basic_model.rb +13 -0
  192. data/spec/model/classes/custom_model.rb +17 -0
  193. data/spec/model/classes/described_model.rb +10 -0
  194. data/spec/model/has_description_spec.rb +42 -0
  195. data/spec/model/has_license_spec.rb +18 -4
  196. data/spec/model/model_spec.rb +68 -0
  197. data/spec/network/helpers/classes/test_helper.rb +11 -0
  198. data/spec/network/helpers/classes/uses_test_helper.rb +10 -0
  199. data/spec/network/helpers/helper_spec.rb +25 -0
  200. data/spec/network/{http_spec.rb → http/http_spec.rb} +0 -0
  201. data/spec/network/http/proxy_spec.rb +116 -0
  202. data/spec/os_spec.rb +4 -4
  203. data/spec/platform/extension_cache_spec.rb +14 -0
  204. data/spec/platform/extension_spec.rb +11 -0
  205. data/spec/platform/platform_spec.rb +8 -0
  206. data/spec/product_spec.rb +9 -9
  207. data/spec/spec_helper.rb +1 -1
  208. data/spec/templates/classes/{uses_erb.rb → example_erb.rb} +1 -1
  209. data/spec/templates/classes/example_template.rb +21 -0
  210. data/spec/templates/erb_spec.rb +2 -2
  211. data/spec/templates/helpers/static.rb +5 -0
  212. data/spec/templates/helpers/static/templates/_relative.erb +1 -0
  213. data/spec/templates/helpers/static/templates/example.erb +1 -0
  214. data/spec/templates/template_spec.rb +41 -0
  215. data/spec/ui/command_line/classes/test_command.rb +23 -0
  216. data/spec/ui/command_line/command_spec.rb +31 -0
  217. data/spec/ui/output_spec.rb +29 -0
  218. data/static/ronin/platform/overlay.xsl +135 -114
  219. data/tasks/spec.rb +1 -0
  220. data/tasks/yard.rb +18 -0
  221. metadata +98 -59
  222. metadata.gz.sig +0 -0
  223. data/TODO.txt +0 -15
  224. data/lib/ronin/extensions/hash.rb +0 -62
  225. data/lib/ronin/sessions/esmtp.rb +0 -57
  226. data/lib/ronin/sessions/http.rb +0 -678
  227. data/lib/ronin/sessions/imap.rb +0 -54
  228. data/lib/ronin/sessions/pop3.rb +0 -52
  229. data/lib/ronin/sessions/smtp.rb +0 -57
  230. data/lib/ronin/sessions/tcp.rb +0 -100
  231. data/lib/ronin/sessions/telnet.rb +0 -55
  232. data/lib/ronin/sessions/udp.rb +0 -73
  233. data/lib/ronin/ui/command_line/options.rb +0 -136
  234. data/lib/ronin/ui/diagnostics.rb +0 -66
  235. data/lib/ronin/ui/verbose.rb +0 -58
  236. data/spec/extensions/hash_spec.rb +0 -38
  237. data/spec/sessions/classes/test_session.rb +0 -11
  238. data/spec/sessions/classes/uses_test_session.rb +0 -10
  239. data/spec/sessions/session_spec.rb +0 -25
  240. data/spec/ui/verbose_spec.rb +0 -17
@@ -11,4 +11,12 @@ describe Platform do
11
11
  it "should be able to load custom overlay caches" do
12
12
  Platform.overlays.should_not be_empty
13
13
  end
14
+
15
+ it "should have specific extensions" do
16
+ Platform.has_extension?('test').should == true
17
+ end
18
+
19
+ it "should provide the names of all available extensions" do
20
+ Platform.extension_names.should == ['hello', 'random', 'test']
21
+ end
14
22
  end
data/spec/product_spec.rb CHANGED
@@ -4,20 +4,20 @@ require 'helpers/database'
4
4
 
5
5
  describe Product do
6
6
  it "should require name and version attributes" do
7
- @product = Product.new
8
- @product.should_not be_valid
7
+ product = Product.new
8
+ product.should_not be_valid
9
9
 
10
- @product.name = 'test'
11
- @product.should_not be_valid
10
+ product.name = 'test'
11
+ product.should_not be_valid
12
12
 
13
- @product.version = '0.1.0'
14
- @product.should be_valid
13
+ product.version = '0.1.0'
14
+ product.should be_valid
15
15
  end
16
16
 
17
17
  it "should default the vendor to the name of the product" do
18
- @product = Product.new(:name => 'Adobe', :version => '0.1.0')
19
- @product.vendor.should == @product.name
18
+ product = Product.new(:name => 'Adobe', :version => '0.1.0')
19
+ product.vendor.should == product.name
20
20
 
21
- @product.should be_valid
21
+ product.should be_valid
22
22
  end
23
23
  end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'rubygems'
2
- gem 'rspec', '>=1.1.12'
2
+ gem 'rspec', '>=1.2.8'
3
3
  require 'spec'
4
4
 
5
5
  require 'ronin/version'
@@ -1,6 +1,6 @@
1
1
  require 'ronin/templates/erb'
2
2
 
3
- class UsesErb
3
+ class ExampleErb
4
4
 
5
5
  include Ronin::Templates::Erb
6
6
 
@@ -0,0 +1,21 @@
1
+ require 'ronin/templates/template'
2
+
3
+ class ExampleTemplate
4
+
5
+ include Ronin::Templates::Template
6
+
7
+ def enter_example_template(&block)
8
+ enter_template(File.join('templates','example.erb'),&block)
9
+ end
10
+
11
+ def enter_relative_template(&block)
12
+ enter_template(File.join('templates','example.erb')) do |path|
13
+ enter_template('_relative.erb',&block)
14
+ end
15
+ end
16
+
17
+ def enter_missing_template(&block)
18
+ enter_template('totally_missing.erb',&block)
19
+ end
20
+
21
+ end
@@ -1,11 +1,11 @@
1
1
  require 'ronin/templates/erb'
2
2
 
3
3
  require 'spec_helper'
4
- require 'templates/classes/uses_erb'
4
+ require 'templates/classes/example_erb'
5
5
 
6
6
  describe Templates::Erb do
7
7
  before(:all) do
8
- @uses_erb= UsesErb.new
8
+ @uses_erb= ExampleErb.new
9
9
  @uses_erb.x = 2
10
10
  @uses_erb.y = 3
11
11
  end
@@ -0,0 +1,5 @@
1
+ require 'ronin/static'
2
+
3
+ STATIC_TEMPLATE_DIR = File.expand_path(File.join(File.dirname(__FILE__),'static'))
4
+
5
+ Ronin::Static.directory STATIC_TEMPLATE_DIR
@@ -0,0 +1 @@
1
+ This is a template that will be called using a relative path.
@@ -0,0 +1 @@
1
+ Example template.
@@ -0,0 +1,41 @@
1
+ require 'ronin/templates/template'
2
+
3
+ require 'spec_helper'
4
+ require 'templates/classes/example_template'
5
+ require 'templates/helpers/static'
6
+
7
+ describe Templates::Template do
8
+ before(:all) do
9
+ @example_template = File.join(STATIC_TEMPLATE_DIR,'templates','example.erb')
10
+ @relative_template = File.join(STATIC_TEMPLATE_DIR,'templates','_relative.erb')
11
+ end
12
+
13
+ before(:each) do
14
+ @template = ExampleTemplate.new
15
+ end
16
+
17
+ it "should return the result of the block when entering a template" do
18
+ @template.enter_example_template { |path|
19
+ 'result'
20
+ }.should == 'result'
21
+ end
22
+
23
+ it "should be able to find templates relative to the current one" do
24
+ @template.enter_example_template do |path|
25
+ path.should == @example_template
26
+ end
27
+ end
28
+
29
+ it "should be able to find static templates" do
30
+ @template.enter_relative_template do |path|
31
+ path.should == @relative_template
32
+ end
33
+ end
34
+
35
+ it "should raise a RuntimeError when entering an unknown template" do
36
+ lambda {
37
+ @template.enter_missing_template do |path|
38
+ end
39
+ }.should raise_error(RuntimeError)
40
+ end
41
+ end
@@ -0,0 +1,23 @@
1
+ require 'ronin/ui/command_line/command'
2
+
3
+ class TestCommand < Ronin::UI::CommandLine::Command
4
+
5
+ map '-m' => :mapped_task
6
+
7
+ no_tasks do
8
+ def test_name
9
+ self.name
10
+ end
11
+ end
12
+
13
+ desc 'default [ARGS]', 'Tests the default task'
14
+ def default(*arguments)
15
+ 'default task'
16
+ end
17
+
18
+ desc "mapped_task", "An example mapped task"
19
+ def mapped_task
20
+ 'mapped task'
21
+ end
22
+
23
+ end
@@ -0,0 +1,31 @@
1
+ require 'ronin/ui/command_line/command'
2
+
3
+ require 'spec_helper'
4
+ require 'ui/command_line/classes/test_command'
5
+
6
+ describe UI::CommandLine::Command do
7
+ it "should provide a help task by default" do
8
+ UI::CommandLine::Command.tasks['help'].should_not be_nil
9
+ end
10
+
11
+ it "should have a name" do
12
+ TestCommand.new.test_name.should == 'test_command'
13
+ end
14
+
15
+ it "should have a default task" do
16
+ TestCommand.start([]).should == 'default task'
17
+ end
18
+
19
+ it "should call the default task for missing tasks" do
20
+ TestCommand.start(['missing']).should == 'default task'
21
+ end
22
+
23
+ it "should still respond to option mappings" do
24
+ TestCommand.start(['-m']).should == 'mapped task'
25
+ end
26
+
27
+ it "should have zero indentation by default" do
28
+ command = TestCommand.new
29
+ command.instance_variable_get('@indent').should == 0
30
+ end
31
+ end
@@ -0,0 +1,29 @@
1
+ require 'ronin/ui/output'
2
+
3
+ require 'spec_helper'
4
+
5
+ describe UI::Output do
6
+ it "should be quiet by default" do
7
+ UI::Output.should be_quiet
8
+ end
9
+
10
+ it "may become verbose or quiet" do
11
+ UI::Output.verbose = true
12
+ UI::Output.should be_verbose
13
+ UI::Output.should_not be_quiet
14
+
15
+ UI::Output.verbose = false
16
+ UI::Output.should be_quiet
17
+ UI::Output.should_not be_verbose
18
+ end
19
+
20
+ it "may become silent or quiet" do
21
+ UI::Output.silent = false
22
+ UI::Output.should be_quiet
23
+ UI::Output.should_not be_silent
24
+
25
+ UI::Output.silent = true
26
+ UI::Output.should be_silent
27
+ UI::Output.should_not be_quiet
28
+ end
29
+ end
@@ -5,155 +5,128 @@
5
5
  <xsl:template match="/ronin-overlay">
6
6
  <html>
7
7
  <head>
8
- <title>Ronin Overlay :: <xsl:value-of select="/ronin-overlay/title/." /></title>
8
+ <title>Ronin Overlay :: <xsl:value-of select="title/." /></title>
9
9
  <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
10
10
  <style type="text/css">
11
+ html {
12
+ height: 100%;
13
+ }
14
+
11
15
  body {
12
- font-family: sans-serif;
13
- font-size: 0.9em;
16
+ height: 100%;
14
17
  margin: 0;
15
18
  padding: 0;
19
+ font-family: sans-serif;
20
+ font-size: 1.0em;
21
+ background: url(http://ronin.rubyforge.org/images/diamond.png) repeat top left;
22
+ over-flow: auto;
16
23
  }
17
24
 
18
- #overlay {
19
- margin: 1em;
20
- padding: 1em;
21
- border: 20px solid black;
22
- }
23
-
24
- #overlay p {
25
- margin: 0.125em;
26
- padding: 0;
25
+ img {
26
+ border: none;
27
27
  }
28
28
 
29
- #overlay strong {
30
- margin-right: 1em;
29
+ #content {
30
+ margin: 1em 10em 1em 10em;
31
+ padding: 1em 1em 1em 1em;
32
+ border: 20px solid black;
33
+ background-color: white;
31
34
  }
32
35
 
33
- #overlay a {
36
+ #content a {
34
37
  color: black;
35
38
  font-weight: bold;
36
39
  text-decoration: none;
37
40
  }
38
41
 
39
- #overlay a:hover {
40
- color: #BD0000;
42
+ #content pre.shell {
43
+ margin: 0.5em 0 0.5em 0;
44
+ padding: 0.5em;
45
+ color: white;
46
+ background-color: black;
47
+ white-space: pre;
48
+ over-flow: auto;
41
49
  }
42
50
 
43
- #overlay-title {
44
- }
45
-
46
- #overlay-license {
47
- }
48
-
49
- #overlay-url {
50
- }
51
-
52
- #overlay-description {
51
+ #content a:hover {
52
+ color: #BD0000;
53
53
  }
54
54
  </style>
55
55
  <style type="text/css" media="print">
56
- #overlay {
56
+ #content {
57
57
  border: none;
58
58
  }
59
59
 
60
- #overlay a {
60
+ #content a {
61
61
  font-weight: normal;
62
62
  }
63
63
  </style>
64
64
  </head>
65
65
 
66
66
  <body>
67
- <table id="overlay">
68
- <xsl:apply-templates />
69
- </table>
67
+ <div id="page">
68
+ <div id="banner">
69
+ <a href="http://ronin.rubyforge.org/">
70
+ <img id="logo" src="http://ronin.rubyforge.org/images/logo.png" />
71
+ </a>
72
+ </div>
73
+
74
+ <div id="content">
75
+ <h2><xsl:value-of select="title/." /></h2>
76
+ <xsl:apply-templates select="description" />
77
+
78
+ <xsl:apply-templates select="dependencies" />
79
+
80
+ <xsl:apply-templates select="source" />
81
+
82
+ <xsl:apply-templates select="maintainers" />
83
+
84
+ <xsl:apply-templates select="license" />
85
+ </div>
86
+ </div>
70
87
  </body>
71
88
  </html>
72
89
  </xsl:template>
73
90
 
74
- <xsl:template match="/ronin-overlay/title">
75
- <tr id="overlay-title">
76
- <td valign="top">
77
- <p><strong>Title:</strong></p>
78
- </td>
79
- <td valign="top">
80
- <p><xsl:value-of select="." /></p>
81
- </td>
82
- </tr>
91
+ <xsl:template match="/ronin-overlay/description">
92
+ <p><xsl:value-of select="." /></p>
93
+
94
+ <xsl:if test="@href">
95
+ <p>
96
+ <a>
97
+ <xsl:attribute name="href"><xsl:value-of select="@href" /></xsl:attribute>
98
+ [ Continued ]
99
+ </a>
100
+ </p>
101
+ </xsl:if>
83
102
  </xsl:template>
84
103
 
85
- <xsl:template match="/ronin-overlay/license">
86
- <tr id="overlay-license">
87
- <td valign="top">
88
- <p><strong>License:</strong></p>
89
- </td>
90
- <td valign="top">
91
- <p><xsl:value-of select="." /></p>
92
- </td>
93
- </tr>
94
- </xsl:template>
104
+ <xsl:template match="/ronin-overlay/dependencies">
105
+ <h2>Dependencies</h2>
95
106
 
96
- <xsl:template match="/ronin-overlay/source">
97
- <tr id="overlay-source">
98
- <td valign="top">
99
- <p><strong>Source:</strong></p>
100
- </td>
101
- <td valign="top">
102
- <p>
103
- <a>
104
- <xsl:attribute name="href"><xsl:value-of select="." /></xsl:attribute>
105
- <xsl:value-of select="." />
106
- </a>
107
- </p>
108
- </td>
109
- </tr>
107
+ <p>Before installing this Overlay you will need to install some other things first.</p>
108
+ <xsl:if test="gem">
109
+ <pre class="shell">$ <xsl:for-each select="gem"> <xsl:value-of select="." /></xsl:for-each></pre>
110
+ </xsl:if>
110
111
  </xsl:template>
111
112
 
112
- <xsl:template match="/ronin-overlay/source-view">
113
- <tr id="overlay-source-view">
114
- <td valign="top">
115
- <p><strong>View Source:</strong></p>
116
- </td>
117
- <td valign="top">
118
- <p>
119
- <a>
120
- <xsl:attribute name="href"><xsl:value-of select="." /></xsl:attribute>
121
- <xsl:value-of select="." />
122
- </a>
123
- </p>
124
- </td>
125
- </tr>
126
- </xsl:template>
113
+ <xsl:template match="/ronin-overlay/source">
114
+ <h2>Install</h2>
127
115
 
128
- <xsl:template match="/ronin-overlay/website">
129
- <tr id="overlay-website">
130
- <td valign="top">
131
- <p><strong>Website:</strong></p>
132
- </td>
133
- <td valign="top">
134
- <p>
135
- <a>
136
- <xsl:attribute name="href"><xsl:value-of select="." /></xsl:attribute>
137
- <xsl:value-of select="." />
138
- </a>
139
- </p>
140
- </td>
141
- </tr>
116
+ <p>To install this Overlay, simply run the following command:</p>
117
+ <pre class="shell">$ ronin install <xsl:value-of select="." /></pre>
142
118
  </xsl:template>
143
119
 
144
120
  <xsl:template match="/ronin-overlay/maintainers">
145
- <tr id="overlay-maintainers">
146
- <td valign="top">
147
- <p><strong>Maintainers:</strong></p>
148
- </td>
149
- <td valign="top">
150
- <xsl:apply-templates />
151
- </td>
152
- </tr>
121
+ <h2>Maintainers</h2>
122
+
123
+ <ul>
124
+ <xsl:apply-templates select="maintainer" />
125
+ </ul>
153
126
  </xsl:template>
154
127
 
155
128
  <xsl:template match="/ronin-overlay/maintainers/maintainer">
156
- <p class="maintainer">
129
+ <li>
157
130
  <xsl:choose>
158
131
  <xsl:when test="email">
159
132
  <a>
@@ -163,20 +136,68 @@
163
136
  </xsl:when>
164
137
 
165
138
  <xsl:otherwise>
166
- <strong><xsl:value-of select="name/." /></strong>
139
+ <xsl:value-of select="name/." />
167
140
  </xsl:otherwise>
168
141
  </xsl:choose>
169
- </p>
142
+ </li>
170
143
  </xsl:template>
171
144
 
172
- <xsl:template match="/ronin-overlay/description">
173
- <tr id="overlay-description">
174
- <td valign="top">
175
- <p><strong>Description:</strong></p>
176
- </td>
177
- <td valign="top">
178
- <p><xsl:value-of select="." /></p>
179
- </td>
180
- </tr>
145
+ <xsl:template match="/ronin-overlay/license">
146
+ <h2>License</h2>
147
+
148
+ <p>
149
+ This Overlay is licensed under the
150
+ <a>
151
+ <xsl:attribute name="target">blank</xsl:attribute>
152
+
153
+ <xsl:choose>
154
+ <xsl:when test="@href">
155
+ <xsl:attribute name="href"><xsl:value-of select="@href" /></xsl:attribute>
156
+ </xsl:when>
157
+
158
+ <xsl:when test=". = 'GPL-2'">
159
+ <xsl:attribute name="href">http://www.gnu.org/licenses/gpl-2.0.html</xsl:attribute>
160
+ </xsl:when>
161
+
162
+ <xsl:when test=". = 'GPL-3'">
163
+ <xsl:attribute name="href">http://www.gnu.org/licenses/gpl-3.0.html</xsl:attribute>
164
+ </xsl:when>
165
+
166
+ <xsl:when test=". = 'BSD'">
167
+ <xsl:attribute name="href">http://www.opensource.org/licenses/bsd-license.php</xsl:attribute>
168
+ </xsl:when>
169
+
170
+ <xsl:when test=". = 'MIT'">
171
+ <xsl:attribute name="href">http://www.opensource.org/licenses/mit-license.html</xsl:attribute>
172
+ </xsl:when>
173
+
174
+ <xsl:when test=". = 'CC-by'">
175
+ <xsl:attribute name="href">http://creativecommons.org/licenses/by/3.0/</xsl:attribute>
176
+ </xsl:when>
177
+
178
+ <xsl:when test=". = 'CC-by-nd'">
179
+ <xsl:attribute name="href">http://creativecommons.org/licenses/by-nd/3.0/</xsl:attribute>
180
+ </xsl:when>
181
+
182
+ <xsl:when test=". = 'CC-by-nc-nd'">
183
+ <xsl:attribute name="href">http://creativecommons.org/licenses/by-nc-nd/3.0/</xsl:attribute>
184
+ </xsl:when>
185
+
186
+ <xsl:when test=". = 'CC-by-nc'">
187
+ <xsl:attribute name="href">http://creativecommons.org/licenses/by-nc/3.0/</xsl:attribute>
188
+ </xsl:when>
189
+
190
+ <xsl:when test=". = 'CC-by-nc-sa'">
191
+ <xsl:attribute name="href">http://creativecommons.org/licenses/by-nc-sa/3.0/</xsl:attribute>
192
+ </xsl:when>
193
+
194
+ <xsl:when test=". = 'CC-sa'">
195
+ <xsl:attribute name="href">http://creativecommons.org/licenses/sa/3.0/</xsl:attribute>
196
+ </xsl:when>
197
+ </xsl:choose>
198
+
199
+ <xsl:value-of select="." />
200
+ </a> license.
201
+ </p>
181
202
  </xsl:template>
182
203
  </xsl:stylesheet>