toolbox 0.1.3 → 0.2.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 (98) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data/bake/ruby/gdb.rb +135 -0
  4. data/bake/toolbox/gdb.rb +137 -0
  5. data/bake/toolbox/lldb.rb +137 -0
  6. data/context/fiber-debugging.md +171 -0
  7. data/context/getting-started.md +178 -0
  8. data/context/heap-debugging.md +351 -0
  9. data/context/index.yaml +28 -0
  10. data/context/object-inspection.md +208 -0
  11. data/context/stack-inspection.md +188 -0
  12. data/data/toolbox/command.py +254 -0
  13. data/data/toolbox/constants.py +200 -0
  14. data/data/toolbox/context.py +295 -0
  15. data/data/toolbox/debugger/__init__.py +99 -0
  16. data/data/toolbox/debugger/gdb_backend.py +595 -0
  17. data/data/toolbox/debugger/lldb_backend.py +885 -0
  18. data/data/toolbox/fiber.py +885 -0
  19. data/data/toolbox/format.py +200 -0
  20. data/data/toolbox/heap.py +669 -0
  21. data/data/toolbox/init.py +85 -0
  22. data/data/toolbox/object.py +84 -0
  23. data/data/toolbox/rarray.py +124 -0
  24. data/data/toolbox/rbasic.py +103 -0
  25. data/data/toolbox/rbignum.py +52 -0
  26. data/data/toolbox/rclass.py +136 -0
  27. data/data/toolbox/readme.md +214 -0
  28. data/data/toolbox/rexception.py +150 -0
  29. data/data/toolbox/rfloat.py +98 -0
  30. data/data/toolbox/rhash.py +159 -0
  31. data/data/toolbox/rstring.py +234 -0
  32. data/data/toolbox/rstruct.py +157 -0
  33. data/data/toolbox/rsymbol.py +302 -0
  34. data/data/toolbox/stack.py +630 -0
  35. data/data/toolbox/value.py +183 -0
  36. data/lib/toolbox/gdb.rb +21 -0
  37. data/lib/toolbox/lldb.rb +21 -0
  38. data/lib/toolbox/version.rb +7 -1
  39. data/lib/toolbox.rb +9 -24
  40. data/license.md +21 -0
  41. data/readme.md +64 -0
  42. data/releases.md +9 -0
  43. data.tar.gz.sig +2 -0
  44. metadata +95 -165
  45. metadata.gz.sig +0 -0
  46. data/Rakefile +0 -57
  47. data/lib/dirs.rb +0 -9
  48. data/lib/toolbox/config.rb +0 -211
  49. data/lib/toolbox/default_controller.rb +0 -393
  50. data/lib/toolbox/helpers.rb +0 -11
  51. data/lib/toolbox/rendering.rb +0 -413
  52. data/lib/toolbox/searching.rb +0 -85
  53. data/lib/toolbox/session_params.rb +0 -63
  54. data/lib/toolbox/sorting.rb +0 -74
  55. data/locale/de/LC_MESSAGES/toolbox.mo +0 -0
  56. data/public/images/add.png +0 -0
  57. data/public/images/arrow_down.gif +0 -0
  58. data/public/images/arrow_up.gif +0 -0
  59. data/public/images/close.png +0 -0
  60. data/public/images/edit.gif +0 -0
  61. data/public/images/email.png +0 -0
  62. data/public/images/page.png +0 -0
  63. data/public/images/page_acrobat.png +0 -0
  64. data/public/images/page_add.png +0 -0
  65. data/public/images/page_copy.png +0 -0
  66. data/public/images/page_delete.png +0 -0
  67. data/public/images/page_edit.png +0 -0
  68. data/public/images/page_excel.png +0 -0
  69. data/public/images/page_list.png +0 -0
  70. data/public/images/page_save.png +0 -0
  71. data/public/images/page_word.png +0 -0
  72. data/public/images/remove.png +0 -0
  73. data/public/images/show.gif +0 -0
  74. data/public/images/spinner.gif +0 -0
  75. data/public/javascripts/popup.js +0 -498
  76. data/public/javascripts/toolbox.js +0 -18
  77. data/public/stylesheets/context_menu.css +0 -168
  78. data/public/stylesheets/popup.css +0 -30
  79. data/public/stylesheets/toolbox.css +0 -107
  80. data/view/toolbox/_collection.html.erb +0 -24
  81. data/view/toolbox/_collection_header.html.erb +0 -7
  82. data/view/toolbox/_context_menu.html.erb +0 -17
  83. data/view/toolbox/_dialogs.html.erb +0 -6
  84. data/view/toolbox/_form.html.erb +0 -30
  85. data/view/toolbox/_form_collection_row.html.erb +0 -18
  86. data/view/toolbox/_form_fieldset.html.erb +0 -30
  87. data/view/toolbox/_form_fieldset_row.html.erb +0 -19
  88. data/view/toolbox/_list.html.erb +0 -25
  89. data/view/toolbox/_list_row.html.erb +0 -10
  90. data/view/toolbox/_menu.html.erb +0 -7
  91. data/view/toolbox/_search_field.html.erb +0 -8
  92. data/view/toolbox/_show.html.erb +0 -12
  93. data/view/toolbox/_show_collection_row.html.erb +0 -6
  94. data/view/toolbox/_show_fieldset.html.erb +0 -21
  95. data/view/toolbox/edit.html.erb +0 -5
  96. data/view/toolbox/index.html.erb +0 -3
  97. data/view/toolbox/new.html.erb +0 -9
  98. data/view/toolbox/show.html.erb +0 -39
@@ -1,107 +0,0 @@
1
-
2
- td.record, td.record-title {
3
- padding: 3px 4px;
4
- background-color: #fff;
5
- /*border-bottom: solid 1px #cc341f;
6
- border-left: solid 1px #cc341f;*/
7
- }
8
-
9
- tr.record:hover td.hover {
10
- background-color: lightblue; /*#cc341f;*/
11
- color: black;
12
- cursor: pointer;
13
- /*border-left: solid 1px white;*/
14
- }
15
-
16
- td.even-record {
17
- background-color: #ccc;
18
- }
19
-
20
- td.record-title {
21
- background-color: #fff;
22
- border-bottom: solid 2px #cc341f;
23
- }
24
-
25
- a.sort-asc:after {
26
- content: url(/images/toolbox/arrow_up.gif);
27
- }
28
-
29
- a.sort-desc:after {
30
- content: url(/images/toolbox/arrow_down.gif);
31
- }
32
-
33
- a.sort-none:after {
34
- content: url(/images/clear.gif);
35
- width: 16px;
36
- height: 7px;
37
- }
38
-
39
- fieldset {
40
- float: left;
41
- }
42
-
43
- .error {
44
- background-color: red;
45
- }
46
-
47
- div.show_value {
48
- float: left;
49
- }
50
-
51
- div.show_value ul {
52
- margin:0;
53
- padding:0;
54
- width:100%;
55
- list-style-type:none;
56
- }
57
-
58
- div.show_value ul li {
59
- margin: 0;
60
- }
61
-
62
- div.toolbar
63
- {
64
- clear: left;
65
- padding-top: 5px;
66
- }
67
-
68
- div.searchfield {
69
- float: right;
70
- }
71
-
72
- form {
73
- display: inline;
74
- }
75
-
76
- form.inplaceeditor-form input {
77
- margin-right: 10px;
78
- }
79
-
80
- div.auto_complete {
81
- width: 350px;
82
- background: #fff;
83
- }
84
-
85
- div.auto_complete ul {
86
- border:1px solid #888;
87
- margin:0;
88
- padding:0;
89
- width:100%;
90
- list-style-type:none;
91
- }
92
-
93
- div.auto_complete ul li {
94
- margin:0;
95
- padding:3px;
96
- }
97
-
98
- div.auto_complete ul li.selected {
99
- background-color: #ffb;
100
- }
101
-
102
- div.auto_complete ul strong.highlight {
103
- color: #800;
104
- margin:0;
105
- padding:0;
106
- }
107
-
@@ -1,24 +0,0 @@
1
- <%
2
- no_form = local_assigns[:form].nil?
3
- rec = collection # just for more readable code
4
- collection = rec.send(widgetset.collection_config.model_method) if widgetset.collection_config.model_method.is_a?(Symbol)
5
- collection = widgetset.collection_config.model_method.call(rec) if widgetset.collection_config.model_method.is_a?(Proc)
6
- locals = {:parent => rec, :widgetset => widgetset, :renderers => renderers}
7
- id = widgetset.collection_config.object_id.to_s + '_' + dom_id(rec)
8
- unless no_form and collection.empty? and widgetset.collection_config.hide_empty
9
- field_set_tag widgetset.label do %>
10
- <table id="<%= id %>">
11
- <%= render :partial => 'toolbox/collection_header', :locals => locals %>
12
- <%= render :partial => no_form ? 'toolbox/show_collection_row' : 'toolbox/form_collection_row', :collection => collection, :locals => locals %>
13
- </table>
14
- <% unless no_form %>
15
- <%=
16
-
17
- link_to_function image_tag('toolbox/add.png', :border => 0) do |page|
18
- page.insert_html :bottom, id, :partial => 'toolbox/form_collection_row', :object => widgetset.collection_config.type.new, :locals => locals.merge({:auto_id => true})
19
- end
20
- %>
21
- <% end %>
22
- <% end %>
23
- <% end %>
24
-
@@ -1,7 +0,0 @@
1
- <% unless widgetset.collection_config.suppress_table_header %>
2
- <tr>
3
- <% renderers.each do |renderer| %>
4
- <th class="record-title"><%= renderer.label %></th>
5
- <% end %>
6
- </tr>
7
- <% end %>
@@ -1,17 +0,0 @@
1
- <%
2
- rec = context_menu
3
- renderer = widget_list.widgets.map { |a| Toolbox::ActionRenderer.new self, a }
4
- %>
5
- <ul>
6
- <li style="color: darkgray; text-align:center;"><%= s_(rec.class.name.underscore.humanize.downcase) %></li>
7
- <li class="separator"></li>
8
- <% renderer.each do |r|
9
- a = r.render_action rec, context
10
- if a.is_a? String
11
- %>
12
- <li><%= a %></li>
13
- <% else %>
14
- <li class="<%= a.to_s %>"></li>
15
- <% end %>
16
- <% end %>
17
- </ul>
@@ -1,6 +0,0 @@
1
- <div id="dialog_id" class="popup" style="display:none"></div>
2
- <%= javascript_tag "new Popup('dialog_id', null, {modal:true, disable_auto_hide: true, duration: 0.2});" %>
3
-
4
- <div id="context_menu_id" class="menu desktop" style="display:none">
5
- </div>
6
- <%= javascript_tag "new Popup('context_menu_id', null, {menu:true, position:'auto', duration: 0.2});" %>
@@ -1,30 +0,0 @@
1
- <% # Aufruf: render :partial => "toolbox/form", :object => @article, :locals => { :fsets => ..., :options => ... } %>
2
- <%
3
- rec = form # just for more readable code
4
- dialog = false unless dialog
5
- form_method = dialog ? :remote_form_for : :form_for
6
-
7
- %>
8
- <% send(form_method, rec, {:html => { :multipart => true}}) do |frm| %>
9
- <%= frm.error_messages %>
10
- <% widgetsets.each do |widgetset|
11
- renderers = widgetset.widget_list.widgets.map { |w| Toolbox::ControlRenderer.new(self, w, dialog) }
12
- if widgetset.condition == nil || widgetset.condition.call(rec)
13
- partial = widgetset.partial || (widgetset.collection_config ? 'toolbox/collection': 'toolbox/form_fieldset')
14
- %>
15
- <%= render :partial => partial,
16
- :object => rec,
17
- :locals => {:form => frm, :widgetset => widgetset, :renderers => renderers} %>
18
- <% end %>
19
- <% end %>
20
- <div class="toolbar">
21
- <%= frm.submit(rec.new_record?() ? Toolbox::Messages.create : Toolbox::Messages.save, :name => :save) %>
22
- <% if dialog %>
23
- <%= button_to_function Toolbox::Messages.cancel, "$('dialog_id').popup.hide()" %>
24
- <% else %>
25
- <%= frm.submit Toolbox::Messages.cancel, :name => :cancel %>
26
- <% end %>
27
- </div>
28
- <% end %>
29
-
30
-
@@ -1,18 +0,0 @@
1
- <%
2
- rec = form_collection_row # just for more readable code
3
- parent_object_name = ActionController::RecordIdentifier.singular_class_name(parent)
4
- collection_attribute_name = Toolbox::Helpers.collection_attribute_name(widgetset.collection_config, rec)
5
- prefix = "#{parent_object_name}[#{collection_attribute_name}][]"
6
- has_error = parent.errors.on(widgetset.collection_config.model_method)
7
- %>
8
- <% fields_for prefix, rec do |frm| %>
9
- <tr>
10
- <% renderers.each do |control_renderer| %>
11
- <td><%= control_renderer.render_control(frm, rec, has_error) %></td>
12
- <% end %>
13
- <td>
14
- <%= link_to_function image_tag('toolbox/remove.png', :border => 0), "$(this).up('tr').remove()" %>
15
- </td>
16
- </tr>
17
- <% end %>
18
-
@@ -1,30 +0,0 @@
1
- <% # renders a fieldset with a normal label: value structure %>
2
- <%
3
- locals = {:renderers => renderers }
4
- if widgetset.aggregation_config
5
- parent = form_fieldset
6
- rec = parent.send(widgetset.aggregation_config.model_method) if widgetset.aggregation_config.model_method.is_a?(Symbol)
7
- rec = widgetset.aggregation_config.model_method.call(rec) if widgetset.aggregation_config.model_method.is_a?(Proc)
8
- rec = widgetset.aggregation_config.type.new unless rec
9
- parent_object_name = ActionController::RecordIdentifier.singular_class_name(parent)
10
- prefix = "#{parent_object_name}[#{widgetset.aggregation_config.model_method.to_s}_attributes]"
11
- has_error = parent.errors.on(widgetset.aggregation_config.model_method)
12
- locals[:has_error] = has_error
13
- else
14
- rec = form_fieldset # just for more readable code
15
- end
16
-
17
- field_set_tag widgetset.label do
18
- %>
19
- <table border="0">
20
- <% if widgetset.aggregation_config %>
21
- <% fields_for prefix, rec do |frm| %>
22
- <%= render :partial => 'toolbox/form_fieldset_row', :object => rec, :locals => locals.merge(:frm => frm) %>
23
- <% end %>
24
- <% else %>
25
- <%= render :partial => 'toolbox/form_fieldset_row', :object => rec, :locals => locals.merge(:frm => form) %>
26
- <% end %>
27
- </table>
28
- <%= footer if defined? footer %>
29
- <% end %>
30
-
@@ -1,19 +0,0 @@
1
- <%
2
- rec =form_fieldset_row
3
- renderers.each do |renderer|
4
- has_error = rec.errors.on(renderer.widget_config.name) unless defined? has_error
5
- if renderer.widget_config.type == :hidden
6
- %>
7
- <%= renderer.render_control(frm, rec, has_error) %>
8
- <% else %>
9
- <tr>
10
- <td>
11
- <% unless renderer.widget_config.suppress_label%>
12
- <%= renderer.widget_config.label if renderer.widget_config.label %>
13
- <%= frm.label renderer.widget_config.name unless renderer.widget_config.label %>
14
- <% end %>
15
- </td>
16
- <td ><%= renderer.render_control(frm, rec, has_error) %></td>
17
- </tr>
18
- <% end %>
19
- <% end %>
@@ -1,25 +0,0 @@
1
- <%
2
- # render(:partial => "toolbox/list", :object => @recs,
3
- # :locals => { :field_list => ..., # column configuration
4
- # :prefix => ... # optional
5
- # })
6
-
7
- %>
8
- <%
9
- recs = list # just for more readable code
10
- prefix = nil unless prefix
11
- field_renderers = widget_list.widgets.map { |f| Toolbox::FieldRenderer.new self, f }
12
- %>
13
- <p><%= will_paginate recs, :param_name => (prefix ? "#{prefix}-page".to_sym : :page) %></p>
14
- <table>
15
- <tr>
16
- <% field_renderers.each do |field_renderer| %>
17
- <th class="record-title"><%= field_renderer.sort_link(params, prefix) %></th>
18
- <% end %>
19
- <th></th>
20
- </tr>
21
- <%= render :partial => 'toolbox/list_row', :collection => recs, :locals => {:field_renderers => field_renderers} %>
22
- </table>
23
- <%= Toolbox::Messages.nothing_found if recs.length == 0 %>
24
- <p><%= will_paginate recs, :param_name => (prefix ? "#{prefix}-page".to_sym : :page) %></p>
25
-
@@ -1,10 +0,0 @@
1
- <% classAttr = cycle("", "even-record") -%>
2
- <% rec = list_row %>
3
- <tr id="<%= dom_id(rec) %>">
4
- <% field_renderers.each do |field_renderer| %>
5
- <td class="record <%= classAttr %>" onclick="window.location.href='<%= polymorphic_url(rec) %>';">
6
- <%= field_renderer.render_value(rec) %>
7
- </td>
8
- <% end %>
9
- <td><%= context_menu_link rec %></td>
10
- </tr>
@@ -1,7 +0,0 @@
1
- <%
2
- rec = get_record
3
- actions = controller.menu_config rec, nil
4
- renderer = actions.widgets.map { |a| Toolbox::ActionRenderer.new self, a }
5
- links = renderer.map {|r| r.render_action rec, nil, params[:action] }.select {|l| l }
6
- %>
7
- <div class="submenu"><%= links.join ' | ' %></div>
@@ -1,8 +0,0 @@
1
- <% obj_class = controller.controller_name.singularize %>
2
- <div class="searchfield">
3
- <% form_tag({:action => 'index'},{:method => 'get'}) do %>
4
- Suche hier: <input type="text" size="30" name="query" value="<%= h params[:query]%>">
5
- <%= submit_tag _('Search'), :title => search_field_hint(controller.search_fields) %>
6
- <% end %>
7
- </div>
8
-
@@ -1,12 +0,0 @@
1
- <% rec = show %>
2
- <% widgetsets.each do |widgetset|
3
- renderers = widgetset.widget_list.widgets.map { |w| Toolbox::FieldRenderer.new(self, w) }
4
- if widgetset.condition == nil || widgetset.condition.call(rec)
5
- partial = widgetset.partial || (widgetset.collection_config ? 'toolbox/collection': 'toolbox/show_fieldset')
6
- %>
7
- <%= render :partial => partial,
8
- :object => rec,
9
- :locals => { :widgetset => widgetset, :renderers => renderers} %>
10
- <% end %>
11
- <% end %>
12
-
@@ -1,6 +0,0 @@
1
- <% rec = show_collection_row %>
2
- <tr id="<%= dom_id(rec) %>">
3
- <% renderers.each do |field_renderer| %>
4
- <td class="show_value"><%= field_renderer.render_value(rec) %></td>
5
- <% end %>
6
- </tr>
@@ -1,21 +0,0 @@
1
- <%
2
- rec = show_fieldset
3
- field_set_tag widgetset.label do %>
4
- <table border="0">
5
- <%
6
- renderers.each do |renderer|
7
- value = renderer.render_value(rec)
8
- label = renderer.label
9
- # value is nil if the hide empty option is set. '&nbsp' would be returned else
10
- if value
11
- %>
12
- <tr>
13
- <td><%= content_tag(:label, label + ':', :class => 'show_label') if label %></td>
14
- <td><%= content_tag(:div, value, :class => 'show_value') %></td>
15
- </tr>
16
- <%
17
- end
18
- end
19
- %>
20
- </table>
21
- <% end %>
@@ -1,5 +0,0 @@
1
- <% model_name = controller.model_name %>
2
- <% rec = get_record %>
3
- <%= render :partial => "toolbox/form",
4
- :object => rec,
5
- :locals => {:widgetsets => controller.edit_config(rec).controlsets } %>
@@ -1,3 +0,0 @@
1
- <%= render :partial => "toolbox/list",
2
- :object => @recs,
3
- :locals => { :widget_list => controller.index_config(@recs) } %>
@@ -1,9 +0,0 @@
1
- <%
2
- model_name = controller.model_name
3
- rec = get_record
4
- %>
5
- <h1><%= _('Create new %{object}') % { :object => s_(model_name.humanize.downcase)} %></h1>
6
-
7
- <%= render :partial => "toolbox/form",
8
- :object => rec,
9
- :locals => {:widgetsets => controller.edit_config(rec).controlsets } %>
@@ -1,39 +0,0 @@
1
- <%
2
- rec = get_record
3
- %>
4
- <%=
5
- begin
6
- render :partial =>"#{controller.controller_name}/show_header", :object => rec
7
- rescue ActionView::MissingTemplate
8
- end
9
- %>
10
- <%= render :partial => 'toolbox/show', :object => rec, :locals => { :widgetsets => @show_config.fieldsets} %>
11
-
12
- <% if @embedded_list
13
- sub_menu = []
14
- @show_config.embedded_lists.each do |embedded_list|
15
- sub_menu << link_to_if(embedded_list.prefix != @embedded_list.prefix,
16
- "#{embedded_list.label} (#{rec.send(embedded_list.collection_config.model_method).count})",
17
- params.merge(:list => embedded_list.prefix))
18
- end
19
-
20
- pag_options = {}
21
- pag_options[:page] = params["#{@embedded_list.prefix}-page".to_sym]
22
- pag_options[:order] = Toolbox::Sorting.order_by params, @embedded_list.widget_list.widgets, @embedded_list.prefix
23
- pag_options[:include] = @embedded_list.include_assoc if @embedded_list.include_assoc
24
- data = rec.send(@embedded_list.collection_config.model_method).paginate(pag_options)
25
- %>
26
- <div style="clear: left; padding-top: 10px"><%= sub_menu.join ' | ' %>
27
- <%= render :partial => "toolbox/list", :object => data, :locals => {:widget_list => @embedded_list.widget_list, :prefix => @embedded_list.prefix} %>
28
- </div>
29
- <% end %>
30
-
31
- <%=
32
- begin
33
- render :partial =>"#{controller.controller_name}/show_footer", :object => rec
34
- rescue ActionView::MissingTemplate
35
- end
36
- %>
37
-
38
- <div style="clear: left"><%= "#{s_("#{rec.class.name}|Created at")} #{rec.created_at.to_s(:local_datetime)} (#{rec.creator}), #{s_("#{rec.class.name}|Updated at")} #{rec.updated_at.to_s(:local_datetime)} (#{rec.updater})" %></div>
39
-