tap-server 0.3.0 → 0.4.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 (58) hide show
  1. data/History +5 -0
  2. data/cmd/server.rb +36 -8
  3. data/lib/tap/controller/rest_routes.rb +77 -0
  4. data/lib/tap/controller/utils.rb +29 -0
  5. data/lib/tap/controller.rb +244 -145
  6. data/lib/tap/controllers/app.rb +97 -55
  7. data/lib/tap/controllers/data.rb +132 -0
  8. data/lib/tap/controllers/schema.rb +137 -223
  9. data/lib/tap/controllers/server.rb +70 -27
  10. data/lib/tap/server/data.rb +178 -0
  11. data/lib/tap/server/runner.rb +71 -0
  12. data/lib/tap/server/server_error.rb +35 -0
  13. data/lib/tap/server.rb +60 -275
  14. data/lib/tap/tasks/echo.rb +39 -6
  15. data/lib/tap/tasks/render.rb +65 -0
  16. data/public/stylesheets/tap.css +15 -2
  17. data/views/configurable/_config.erb +1 -0
  18. data/views/configurable/_configs.erb +28 -0
  19. data/views/configurable/_flag.erb +2 -0
  20. data/views/configurable/_list_select.erb +8 -0
  21. data/views/configurable/_select.erb +6 -0
  22. data/views/configurable/_switch.erb +2 -0
  23. data/views/layout.erb +1 -1
  24. data/views/object/obj.erb +1 -0
  25. data/views/tap/controllers/app/_action.erb +3 -0
  26. data/views/tap/controllers/app/build.erb +18 -0
  27. data/views/tap/controllers/app/enque.erb +13 -0
  28. data/views/tap/controllers/app/info.erb +20 -7
  29. data/views/tap/controllers/data/_controls.erb +21 -0
  30. data/views/tap/controllers/data/_index_entry.erb +1 -0
  31. data/views/tap/controllers/data/_upload.erb +8 -0
  32. data/views/tap/controllers/data/entry.erb +8 -0
  33. data/views/tap/controllers/data/index.erb +14 -0
  34. data/views/tap/controllers/schema/_build.erb +6 -0
  35. data/views/tap/controllers/schema/_index_entry.erb +6 -0
  36. data/views/tap/controllers/schema/entry.erb +135 -0
  37. data/views/tap/controllers/schema/join.erb +6 -4
  38. data/views/tap/controllers/schema/task.erb +6 -0
  39. data/views/tap/controllers/server/access.erb +4 -0
  40. data/views/tap/controllers/server/admin.erb +21 -0
  41. data/views/tap/controllers/server/help.erb +23 -0
  42. data/views/tap/controllers/server/index.erb +43 -3
  43. data/views/tap/task/input.erb +17 -0
  44. data/views/tap/tasks/load/input.erb +11 -0
  45. metadata +35 -17
  46. data/lib/tap/server_error.rb +0 -34
  47. data/lib/tap/support/persistence.rb +0 -71
  48. data/lib/tap/tasks/server.rb +0 -30
  49. data/views/tap/controllers/app/index.erb +0 -44
  50. data/views/tap/controllers/schema/config/default.erb +0 -4
  51. data/views/tap/controllers/schema/config/flag.erb +0 -3
  52. data/views/tap/controllers/schema/config/switch.erb +0 -6
  53. data/views/tap/controllers/schema/configurations.erb +0 -27
  54. data/views/tap/controllers/schema/node.erb +0 -47
  55. data/views/tap/controllers/schema/preview.erb +0 -3
  56. data/views/tap/controllers/schema/round.erb +0 -30
  57. data/views/tap/controllers/schema/schema.erb +0 -28
  58. data/views/tap/tasks/echo/result.html +0 -1
@@ -1,14 +1,47 @@
1
1
  module Tap
2
2
  module Tasks
3
3
 
4
- # ::manifest
4
+ # ::task
5
5
  class Echo < Tap::Task
6
- def process(*args)
7
- args = args.flatten
8
- args << name
9
- log name, args.inspect
10
- args
6
+ config :key, 'default' # a basic config
7
+
8
+ config :flag_false, false, &c.flag # a flag config (false)
9
+ config :flag_true, true, &c.flag # a flag config (true)
10
+
11
+ config :switch_false, false, &c.switch # a switch config (false)
12
+ config :switch_true, true, &c.switch # a switch config (true)
13
+
14
+ config :string, "string", &c.string # string
15
+ #config :sym, :sym, &c.symbol # sym
16
+ config :integer, 10, &c.integer # integer
17
+ config :numeric, 10, &c.numeric # numeric
18
+ config :float, 10, &c.float # float
19
+
20
+ config :string_or_nil, nil, &c.string_or_nil # string_or_nil (nil)
21
+ #config :sym_or_nil, nil, &c.symbol_or_nil # symbol_or_nil (nil)
22
+ config :integer_or_nil, nil, &c.integer_or_nil # integer_or_nil (nil)
23
+ config :number_or_nil, nil, &c.numeric_or_nil # number_or_nil (nil)
24
+ config :float_or_nil, nil, &c.float_or_nil # float_or_nil (nil)
25
+
26
+ #config :range, 1..10, &c.range # range
27
+ #config :array, [1,2,3], &c.array # array
28
+ #config :hash, {}, &c.hash # hash
29
+ #config :regexp, /abc/, &c.regexp # regexp
30
+ config :select, 3, &c.select(12,3, &c.integer) # list
31
+ config :list_select, [3], &c.list_select(1,4,12,3, &c.integer) # list select
32
+
33
+ #
34
+ #
35
+ # config :output, $stdout, &c.io # regexp
36
+
37
+ nest :nest do # nest desc
38
+ config :a, 'default' # a nested config (before)
39
+ nest :nest do # double-nest desc
40
+ config :key, 'default' # a double-nested config
41
+ end
42
+ config :z, 'default' # a nested config (after)
11
43
  end
44
+
12
45
  end
13
46
  end
14
47
  end
@@ -0,0 +1,65 @@
1
+ require 'tap/tasks/dump'
2
+ require 'tap/env'
3
+ require 'erb'
4
+
5
+ module Tap
6
+ module Tasks
7
+ # :startdoc::task render an object
8
+ class Render < Tap::Tasks::Dump
9
+
10
+ config :dir, :views
11
+ config :path, 'obj.erb'
12
+
13
+ attr_accessor :env
14
+
15
+ def initialize(config={}, app=Tap::App.instance, env=Tap::Env.instance)
16
+ super(config, app)
17
+ @env = env
18
+ end
19
+
20
+ # Renders the specified template as ERB using the options. Options:
21
+ #
22
+ # locals:: a hash of local variables used in the template
23
+ #
24
+ # The filename used to identify errors in an erb template to a specific
25
+ def render(path, options={})
26
+ # render template
27
+ template = File.read(path)
28
+
29
+ # assign locals to the render binding
30
+ # this almost surely may be optimized...
31
+ locals = options[:locals]
32
+ binding = empty_binding
33
+
34
+ locals.each_pair do |key, value|
35
+ @assignment_value = value
36
+ eval("#{key} = remove_instance_variable(:@assignment_value)", binding)
37
+ end if locals
38
+
39
+ erb = ERB.new(template, nil, "<>")
40
+ erb.filename = path
41
+ erb.result(binding)
42
+ end
43
+
44
+ # Dumps the object to io using obj.inspect
45
+ def dump(obj, io)
46
+ template_path = env.class_path(dir, obj, path) do |file|
47
+ File.file?(file)
48
+ end
49
+
50
+ unless template_path
51
+ raise "no template for: #{obj.class}"
52
+ end
53
+
54
+ io.puts render(template_path, :locals => {:obj => obj})
55
+ end
56
+
57
+ protected
58
+
59
+ # Generates an empty binding to self without any locals assigned.
60
+ def empty_binding # :nodoc:
61
+ binding
62
+ end
63
+ end
64
+ end
65
+ end
@@ -1,6 +1,19 @@
1
1
  /*
2
2
  Tap Styles
3
3
  */
4
- form {
5
- border: black solid thin;
4
+
5
+ /* schema */
6
+ form.build, form.rename, form.duplicate, form.delete {
7
+ display: inline;
8
+ }
9
+
10
+ li.task, li.join, li.queue {
11
+ border-top: thin solid black;
12
+ padding: 0.5em;
13
+ }
14
+
15
+ pre.yaml {
16
+ padding: 1em;
17
+ background-color: 99FFCC;
18
+ overflow: hidden;
6
19
  }
@@ -0,0 +1 @@
1
+ <input name="<%= name %>" type="text" value="<%= escape_html(value) %>" />
@@ -0,0 +1,28 @@
1
+ <dl class="configs">
2
+ <% configurations.each_pair do |key, config| %>
3
+ <% next if config[:type] == :hidden %>
4
+ <% if config.is_nest? %>
5
+ <dt class="name"><%= key %></dt>
6
+ <dd class="nested-configs">
7
+ <%= module_render("_configs.erb", obj, :locals => {
8
+ :id => id,
9
+ :name => "#{name}[#{key}]",
10
+ :configurations => config.default(false).delegates,
11
+ :values => values[key.to_s]
12
+ }) %>
13
+ </dd>
14
+ <% else %>
15
+ <dt><%= key %></dt>
16
+ <dd class="config">
17
+ <%= render(
18
+ :file => module_path("_#{config[:type]}.erb", obj) || module_path("_config.erb", obj),
19
+ :locals => {
20
+ :id => "#{id}_config_#{key}",
21
+ :obj => obj,
22
+ :name => "#{name}[#{key}]",
23
+ :config => config,
24
+ :value => values[key.to_s]}) %>
25
+ </dd>
26
+ <% end %>
27
+ <% end %>
28
+ </dl>
@@ -0,0 +1,2 @@
1
+ <input name="<%= name %>" type="hidden" value="false" />
2
+ <input name="<%= name %>" type="checkbox" value="true" <%= value == "true" ? 'checked="true"' : '' %> />
@@ -0,0 +1,8 @@
1
+ <input type="hidden" name="<%= name %>[][]" value="" />
2
+ <select name="<%= name %>[]" multiple="true">
3
+ <% value.collect! {|val| stringify(val) } %>
4
+ <% (config[:options] || []).each do |option| %>
5
+ <% option = stringify(option) %>
6
+ <option value="<%= escape_html(option) %>" <%= value.include?(option) ? "selected='true' " : ""%>><%= option %></option>
7
+ <% end %>
8
+ </select>
@@ -0,0 +1,6 @@
1
+ <select name="<%= name %>">
2
+ <% (config[:options] || []).each do |option| %>
3
+ <% option = stringify(option) %>
4
+ <option value="<%= escape_html(option) %>" <%= value == option ? "selected='true' " : ""%>><%= option %></option>
5
+ <% end %>
6
+ </select>
@@ -0,0 +1,2 @@
1
+ <input name="<%= name %>" type="radio" value="true" <%= value == "true" ? 'checked="true" ' : '' %>>on</input>
2
+ <input name="<%= name %>" type="radio" value="false" <%= value == "false" ? 'checked="true" ' : '' %>>off</input>
data/views/layout.erb CHANGED
@@ -1,6 +1,6 @@
1
1
  <html>
2
2
  <head>
3
- <title>Tap (Task Application)</title>
3
+ <title>Tap (Server)</title>
4
4
  <link rel="stylesheet" type="text/css" href="/stylesheets/tap.css" />
5
5
  <script src="/javascripts/prototype.js"></script>
6
6
  <script src="/javascripts/tap.js"></script>
@@ -0,0 +1 @@
1
+ <%= obj.inspect %>
@@ -0,0 +1,3 @@
1
+ <form action="<%= uri action %>" style="display:inline" method="post">
2
+ <input type="submit" value="<%= action %>" />
3
+ </form>
@@ -0,0 +1,18 @@
1
+ <form action="<%= uri :build %>" method="post">
2
+ <textarea rows="10" cols="40" name="schema">
3
+ tasks:
4
+ load:
5
+ id: load
6
+ dump:
7
+ id: dump
8
+ joins:
9
+ - - [load]
10
+ - [dump]
11
+ </textarea><br/>
12
+ <input type="checkbox" name="reset">reset</input>
13
+ <input type="checkbox" name="run">run</input>
14
+ <input type="submit" value="build" />
15
+ </form>
16
+ <ul>
17
+ <li><a href="<%= uri :info %>">Info</a></li>
18
+ </ul>
@@ -0,0 +1,13 @@
1
+ <form action="<%= uri :enque %>" method="post">
2
+ <textarea rows="10" cols="40" name="queue">
3
+ - - load
4
+ - - goodnight moon
5
+ - - load
6
+ - - hello world
7
+ </textarea><br/>
8
+ <input type="hidden" name="load" value="on" />
9
+ <input type="submit" value="enque" />
10
+ </form>
11
+ <ul>
12
+ <li><a href="<%= uri :info %>">Info</a></li>
13
+ </ul>
@@ -1,8 +1,21 @@
1
- <% id = app.hash %>
2
- <% update_info = "Tap.App.info('/app/info', 'update-#{id}', 'info-#{id}', 1000);" %>
3
- <div class="info">
4
- <input class="update-" id="update-<%= id %>" type="checkbox" <%= update ? "checked='true' " : "" %>onchange="<%= update_info %>" />
5
- <a href="/app/info">update</a>
6
- <span class="info" id="info-<%= id %>"><%= content %></span>
1
+ <div>
2
+ <% actions.each do |action| %>
3
+ <%= render "_action.erb", :locals => {:action => action } %>
4
+ <% end %>
5
+ <%= app.info %>
7
6
  </div>
8
- <script type="text/javascript"><%= update ? update_info : "" %></script>
7
+ <ul>
8
+ <li><a href="<%= uri :schema %>">Build</a> (<a href="<%= uri :build %>">manual</a>)</li>
9
+ <li><a href="<%= uri :data %>">Enque</a> (<a href="<%= uri :enque %>">manual</a>)</li>
10
+ </ul>
11
+
12
+ <h3>Current Build:</h3>
13
+ <% if tasks.empty? %>
14
+ <span>(no workflow built)</span>
15
+ <% end %>
16
+ <dl>
17
+ <% tasks.each_pair do |key, task| %>
18
+ <dt><%= key %></dt>
19
+ <dd><%= task.class %></dd>
20
+ <% end %>
21
+ </dl>
@@ -0,0 +1,21 @@
1
+ <form id="rename_<%= id %>" class="rename" method="post" action="<%= uri(id) %>">
2
+ <input type="text" name="new_id" value="<%= id %>" />
3
+ <input type="hidden" name="_method" value="rename" />
4
+ <input type="submit" value="Rename" />
5
+ </form>
6
+
7
+ <form id="duplicate_<%= id %>" class="duplicate" method="post" action="<%= uri(id) %>">
8
+ <input type="hidden" name="_method" value="duplicate" />
9
+ <input type="submit" value="Duplicate" />
10
+ </form>
11
+
12
+ <form id="delete_<%= id %>" class="delete" method="post" action="<%= uri(id) %>">
13
+ <input class="action" type="hidden" name="_method" value="delete" />
14
+ <input type="submit" value="Delete" />
15
+ </form>
16
+
17
+ <ul>
18
+ <li><a href="<%= uri %>">index</a></li>
19
+ <li><a href="<%= uri(id, :as => :preview) %>">preview</a></li>
20
+ <li><a href="<%= uri(id, :as => :download) %>">download</a></li>
21
+ </ul>
@@ -0,0 +1 @@
1
+ <%= data.cache[type].include?(id) ? "*" : "" %><a href="<%= uri(id) %>"><%= id %></a>
@@ -0,0 +1,8 @@
1
+ <form class="upload" enctype="multipart/form-data" method="post" action="<%= uri %>">
2
+ <input type="hidden" name="_method" value="upload" />
3
+ <ul>
4
+ <li><input type="file" name="<%= type %>" /></li>
5
+ <li><input type="text" name="id" value="" /> Id (if other than file name)</li>
6
+ </ul>
7
+ <input type="submit" value="Upload" />
8
+ </form>
@@ -0,0 +1,8 @@
1
+ <%= render('_controls.erb', :locals => {:id => id}) %>
2
+
3
+ <form class="<%= type %>" method="post" action="<%= uri %>">
4
+ <input type="hidden" name="_method" value="<%= id == 'new' ? 'create' : 'update' %>" />
5
+ <input type="hidden" name="id" value="<%= id %>" />
6
+ <textarea name="<%= type %>"><%= content %></textarea>
7
+ <input type="submit" value="Save" />
8
+ </form>
@@ -0,0 +1,14 @@
1
+ <h1><%= type %></h1>
2
+ <%= render('_upload.erb') %>
3
+ <form id="select_<%= type %>" class="select" method="post" action="<%= uri %>">
4
+ <input type="hidden" name="_method" value="select" />
5
+
6
+ <ul>
7
+ <% data.index(type).each do |id| %>
8
+ <li><input type="checkbox" name="id[]" value="<%= id %>" /> <%= render('_index_entry.erb', :locals => {:id => id})%></li>
9
+ <% end %>
10
+ <li><a href="<%= uri('new') %>">new</a></li>
11
+ </ul>
12
+
13
+ <input type="submit" value="Select" />
14
+ </form>
@@ -0,0 +1,6 @@
1
+ <form id="build_<%= id %>" class="build" method="post" action="<%= uri("../build") %>">
2
+ <input type="hidden" name="_method" value="build" />
3
+ <input type="hidden" name="id" value="<%= id %>" />
4
+ <input type="hidden" name="reset" value="on" />
5
+ <input type="submit" value="Build" />
6
+ </form>
@@ -0,0 +1,6 @@
1
+ <%= data.cache[type].include?(id) ? "*" : "" %><%= id %>
2
+ <ul>
3
+ <li><a href="<%= uri(id) %>">edit</a></li>
4
+ <li><a href="<%= uri(id, :as => :preview) %>">preview</a></li>
5
+ <li><a href="<%= uri(id, :as => :download) %>">download</a></li>
6
+ </ul>
@@ -0,0 +1,135 @@
1
+ <%= render('_build.erb', :locals => {:id => id}) %>
2
+ <%= render('_controls.erb', :locals => {:id => id}) %>
3
+
4
+ <h2>Design:</h2>
5
+ <!-- add form -->
6
+ <% traverse = schema.traverse %>
7
+ <form id="add_<%= id %>" class="add" method="post" action="<%= uri(id) %>">
8
+ <input type="hidden" name="_method" value="add" />
9
+
10
+ <table>
11
+ <% traverse.each do |(key, inputs, outputs)| %>
12
+ <tr>
13
+ <td><input name="outputs[]" value="<%= key %>" type="checkbox" /></td>
14
+ <td><a href="#task_<%= key %>"><%= key %></a></td>
15
+ <td><input name="inputs[]" value="<%= key %>" type="checkbox" /></td>
16
+ <td>[<% inputs.each do |index| %><a href="#join_<%= index %>"><%= index %></a> <% end %>]</td>
17
+ <td>[<% outputs.each do |index| %><a href="#join_<%= index %>"><%= index %></a> <% end %>]</td>
18
+ </tr>
19
+ <% end %>
20
+ </table>
21
+
22
+ <ul>
23
+ <% server.env.minimap.each do |(env_name, env)| %>
24
+ <% env.manifest(:task).minimap.each do |(name, const)| %>
25
+ <% key = "#{env_name}:#{name}" %>
26
+ <li><input name="tasks[]" value="<%= key %>" type="checkbox"><%= key %></input></li>
27
+ <% end %>
28
+ <% end %>
29
+ </ul>
30
+
31
+ <ul>
32
+ <% traverse.each do |(key, inputs, outputs)| %>
33
+ <li><input name="queue[]" value="<%= key %>" type="checkbox"><%= key %></input></li>
34
+ <% end %>
35
+ </ul>
36
+
37
+ <input type="submit" value="Add" />
38
+ </form>
39
+
40
+ <!-- remove form -->
41
+ <form id="remove_<%= id %>" class="remove" method="post" action="<%= uri(id) %>">
42
+ <input type="hidden" name="_method" value="remove" />
43
+
44
+ <ul>
45
+ <% traverse.each do |(key, inputs, outputs)| %>
46
+ <li>
47
+ <input name="tasks[]" value="<%= key %>" type="checkbox" />
48
+ <a href="#task_<%= key %>"><%= key %></a>
49
+ </li>
50
+ <% end %>
51
+ </ul>
52
+
53
+ <ul>
54
+ <% schema.joins.each_index do |index| %>
55
+ <li>
56
+ <input name="joins[]" value="<%= index %>" type="checkbox" />
57
+ <a href="#join_<%= index %>"><%= index %></a>
58
+ </li>
59
+ <% end %>
60
+ </ul>
61
+
62
+ <ul>
63
+ <% schema.queue.each_index do |index| %>
64
+ <li>
65
+ <input name="queue[]" value="<%= index %>" type="checkbox" />
66
+ <a href="#queue_<%= index %>"><%= index %></a>
67
+ </li>
68
+ <% end %>
69
+ </ul>
70
+
71
+ <input type="submit" value="Remove" />
72
+ </form>
73
+
74
+ <!-- configure form -->
75
+ <form id="configure_<%= id %>" class="configure" method="post" action="<%= uri(id) %>">
76
+ <input type="hidden" name="_method" value="configure" />
77
+
78
+ <h2>Configure:</h2>
79
+ <ul class="tasks">
80
+ <% schema.tasks.each_pair do |key, task| %>
81
+ <% name = "schema[tasks][#{key}]" %>
82
+ <% task_class = task['class'] %>
83
+ <li id="task_<%= key %>" class="task">
84
+ <h3><a href="#add_<%= id %>"><%= key %></a></h3>
85
+
86
+ <input type="hidden" name="<%= name %>[id]" value="<%= task['id'] %>">
87
+ <%= module_render('task.erb', task_class, :locals => {
88
+ :id => "#{id}_task_#{key}",
89
+ :name => name,
90
+ :values => task['config'] || default_config(task_class),
91
+ :task => task }) %>
92
+ </li>
93
+ <% end %>
94
+ </ul>
95
+
96
+ <ul class="joins">
97
+ <% schema.joins.each_with_index do |(inputs, outputs, join), index| %>
98
+ <% name = "schema[joins][]" %>
99
+ <% join_class = join['class'] %>
100
+ <li id="join_<%= index %>" class="join">
101
+ <h3><a href="#add_<%= id %>"><%= index %></a></h3>
102
+ <% inputs.each do |input| %>
103
+ <input type="hidden" name="<%= name %>[0][]" value="<%= input %>">
104
+ <% end %>
105
+ <% outputs.each do |output| %>
106
+ <input type="hidden" name="<%= name %>[1][]" value="<%= output %>">
107
+ <% end %>
108
+ <input type="hidden" name="<%= name %>[2][id]" value="<%= join['id'] || 'join' %>">
109
+ <%= module_render('join.erb', join_class, :locals => {
110
+ :id => "#{id}_join_#{index}",
111
+ :name => "#{name}[2]",
112
+ :values => join['config'] || default_config(join_class),
113
+ :join => join }) %>
114
+ </li>
115
+ <% end %>
116
+ </ul>
117
+
118
+ <h2>Enque:</h2>
119
+ <ul class="queue">
120
+ <% schema.queue.each_with_index do |(key, args), index| %>
121
+ <% name = "schema[queue][]" %>
122
+ <% task = schema.tasks[key] %>
123
+ <li id="queue_<%= index %>" class="queue">
124
+ <h3><%= key %></h3>
125
+ <input type="hidden" name="<%= name %>[0]" value="<%= key %>">
126
+ <%= module_render('input.erb', task['class'], :locals => {
127
+ :id => id,
128
+ :name => "#{name}[1]",
129
+ :args => args || [],
130
+ :task => task }) %>
131
+ </li>
132
+ <% end %>
133
+ </ul>
134
+ <input type="submit" value="Save" />
135
+ </form>
@@ -1,4 +1,6 @@
1
- [<% nodes.each do |node| %>
2
- <% index = schema.index(node) %>
3
- <a href="#node_<%= index %>"><%= index %></a>
4
- <% end %>]
1
+ <%= module_render("_configs.erb", obj, :locals => {
2
+ :id => id,
3
+ :name => "#{name}[config]",
4
+ :configurations => obj.configurations,
5
+ :values => values || {}
6
+ }) %>
@@ -0,0 +1,6 @@
1
+ <%= module_render("_configs.erb", obj, :locals => {
2
+ :id => id,
3
+ :name => "#{name}[config]",
4
+ :configurations => obj.configurations,
5
+ :values => values
6
+ }) %>
@@ -0,0 +1,4 @@
1
+ <form action="<%= uri :access %>" method="post">
2
+ <input type="input" name="secret" value="<%= secret %>" />
3
+ <input type="submit" value="access" />
4
+ </form>
@@ -0,0 +1,21 @@
1
+ <div>Ruby <%= RUBY_VERSION %> (<%= RUBY_PLATFORM %>)</div>
2
+ <div>Tap <%= Tap::VERSION %></div>
3
+ <div>
4
+ Server:
5
+ <% config = server.config.to_hash %>
6
+ <% config.delete(:env) %>
7
+ <pre class="yaml"><%= YAML.dump(config) %></pre>
8
+ </div>
9
+ <% if Object.const_defined?(:Gem) %>
10
+ <div>
11
+ Active Gems:
12
+ <ul>
13
+ <% Gem.loaded_specs.each_pair do |key, spec| %>
14
+ <li><%= spec.full_name %></li>
15
+ <% end %>
16
+ </ul>
17
+ </div>
18
+ <% end %>
19
+ <form action="<%= uri :shutdown, :secret => secret %>" method="post">
20
+ <input type="submit" value="shutdown" />
21
+ </form>
@@ -0,0 +1,23 @@
1
+ <h1 class="class"><%= obj %></h1>
2
+ <span class="summary"><%= obj.desc.subject %></span>
3
+
4
+ <h2>Documentation</h2>
5
+ <pre class="desc"><%= obj.desc.wrap %></pre>
6
+
7
+ <h2>Attributes</h2>
8
+ <table>
9
+ <tr class="source_file">
10
+ <td>Source File</td>
11
+ <td><%= obj.source_file %></td>
12
+ <tr>
13
+ <tr class="ancestors">
14
+ <td>Ancestors</td>
15
+ <td>
16
+ <ul>
17
+ <% obj.ancestors.each do |ancestor| %>
18
+ <li><%= ancestor %></li>
19
+ <% end %>
20
+ </ul>
21
+ </td>
22
+ <tr>
23
+ </table>
@@ -1,3 +1,43 @@
1
- <% if shutdown_key %>
2
- <a href="<%= uri(:shutdown) %>?shutdown_key=<%= shutdown_key %>">shutdown</a>
3
- <% end %>
1
+ <div id="branding">
2
+ <h1><a href="<%= Tap::WEBSITE %>">Tap (<ins>T</ins>ask <ins>Ap</ins>plication) <%= Tap::VERSION %> </a></h1>
3
+ </div>
4
+
5
+ <div id="content_main">
6
+ <dl id="envs" class="manifest">
7
+ <% env_keys = server.env.minihash(true) %>
8
+ <% server.env.each do |env| %>
9
+ <% root = env.root %>
10
+ <% env_key = env_keys[env] %>
11
+ <dt class="key"><%= env_key %> (<%= root.root %>)</dt>
12
+ <dd class="value">
13
+ <% controllers = env.manifest(:controller) %>
14
+ <% unless controllers.empty? %>
15
+ <dl id="controllers" class="manifest">
16
+ <dt class="key">controllers</dt>
17
+ <dd class="value">
18
+ <ol>
19
+ <% controllers.minimap.each do |(key, const)| %>
20
+ <li><a href="<%= escape(key) %>"><%= key %></a> (<a href="<%= help_uri('controller', key) %>"><%= const.require_path %></a>)</li>
21
+ <% end %>
22
+ </ol>
23
+ </dd>
24
+ </dl>
25
+ <% end %>
26
+
27
+ <% tasks = env.manifest(:task) %>
28
+ <% unless tasks.empty? %>
29
+ <dl id="tasks" class="manifest">
30
+ <dt class="key">tasks</dt>
31
+ <dd class="value">
32
+ <ol>
33
+ <% tasks.minimap.each do |(key, const)| %>
34
+ <li><%= key %> (<a href="<%= help_uri('task', key) %>"><%= const.require_path %></a>)</li>
35
+ <% end %>
36
+ </ol>
37
+ </dd>
38
+ </dl>
39
+ <% end %>
40
+ </dd>
41
+ <% end %>
42
+ </dl>
43
+ </div>
@@ -0,0 +1,17 @@
1
+ <ul>
2
+ <% obj.args.arguments.each do |argument| %>
3
+ <li class="input">
4
+ <input name="<%= name %>[]" value="<%= args.shift %>" />
5
+ <span><%= argument %></span>
6
+ <% if argument =~ /\.{3}\z/ %>
7
+ <% args << '' %>
8
+ <% args.each do |arg| %>
9
+ </li>
10
+ <li class="input">
11
+ <input name="<%= name %>[]" value="<%= arg %>" />
12
+ <span>...</span>
13
+ <% end %>
14
+ <% end %>
15
+ </li>
16
+ <% end %>
17
+ </ul>
@@ -0,0 +1,11 @@
1
+ <ul>
2
+ <li class="input">
3
+ <% config = task['config'] %>
4
+ <% if config && config['file'] == 'true' %>
5
+ <input name="<%= name %>[]" value="<%= args[0] %>" />
6
+ <% else %>
7
+ <textarea name="<%= name %>[]"><%= args[0] %></textarea>
8
+ <% end %>
9
+ <span>Data</span>
10
+ </li>
11
+ </ul>