marty 0.5.12

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 (345) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +84 -0
  4. data/Rakefile +29 -0
  5. data/app/assets/javascripts/marty/application.js +15 -0
  6. data/app/assets/stylesheets/marty/application.css +13 -0
  7. data/app/components/marty/api_auth_view.rb +32 -0
  8. data/app/components/marty/auth_app.rb +55 -0
  9. data/app/components/marty/auth_app.rb~ +51 -0
  10. data/app/components/marty/auth_app/javascripts/auth_app.js +91 -0
  11. data/app/components/marty/auth_app/javascripts/auth_app.js~ +91 -0
  12. data/app/components/marty/cm_form_panel.rb~ +5 -0
  13. data/app/components/marty/cm_grid_panel.rb~ +35 -0
  14. data/app/components/marty/data_import_view.rb~ +142 -0
  15. data/app/components/marty/extras/layout.rb +46 -0
  16. data/app/components/marty/extras/layout.rb~ +46 -0
  17. data/app/components/marty/extras/misc.rb +18 -0
  18. data/app/components/marty/form.rb +6 -0
  19. data/app/components/marty/grid.rb +45 -0
  20. data/app/components/marty/grid_append_only.rb +12 -0
  21. data/app/components/marty/import_type_view.rb +53 -0
  22. data/app/components/marty/live_search_grid_panel.rb +46 -0
  23. data/app/components/marty/live_search_grid_panel.rb~ +49 -0
  24. data/app/components/marty/main_auth_app.rb +269 -0
  25. data/app/components/marty/main_auth_app.rb~ +238 -0
  26. data/app/components/marty/mcfly_grid_panel.rb +62 -0
  27. data/app/components/marty/mcfly_grid_panel.rb~ +80 -0
  28. data/app/components/marty/new_posting_form.rb +46 -0
  29. data/app/components/marty/new_posting_form.rb~ +46 -0
  30. data/app/components/marty/new_posting_window.rb +21 -0
  31. data/app/components/marty/new_posting_window.rb~ +21 -0
  32. data/app/components/marty/panel.rb +12 -0
  33. data/app/components/marty/pivot_grid.rb +52 -0
  34. data/app/components/marty/pivot_grid/endpoints.rb +45 -0
  35. data/app/components/marty/pivot_grid/javascripts/extensions.js +150 -0
  36. data/app/components/marty/pivot_grid/javascripts/pivot_grid.js +86 -0
  37. data/app/components/marty/pivot_grid/services.rb +44 -0
  38. data/app/components/marty/posting_grid.rb +139 -0
  39. data/app/components/marty/posting_grid.rb~ +140 -0
  40. data/app/components/marty/posting_window.rb +27 -0
  41. data/app/components/marty/promise_view.rb +177 -0
  42. data/app/components/marty/promise_view.rb~ +157 -0
  43. data/app/components/marty/promise_view/stylesheets/promise_view.css +26 -0
  44. data/app/components/marty/promise_view/stylesheets/promise_view.css~ +15 -0
  45. data/app/components/marty/report_form.rb +225 -0
  46. data/app/components/marty/report_form.rb~ +217 -0
  47. data/app/components/marty/report_select.rb +145 -0
  48. data/app/components/marty/report_select.rb~ +133 -0
  49. data/app/components/marty/reporting.rb +39 -0
  50. data/app/components/marty/reporting.rb~ +39 -0
  51. data/app/components/marty/script_detail.rb~ +430 -0
  52. data/app/components/marty/script_form.rb +233 -0
  53. data/app/components/marty/script_form.rb~ +233 -0
  54. data/app/components/marty/script_form/javascripts/Ext.ux.form.field.CodeMirror.js +698 -0
  55. data/app/components/marty/script_form/javascripts/Ext.ux.form.field.CodeMirror.js~ +909 -0
  56. data/app/components/marty/script_form/javascripts/codemirror.js +3130 -0
  57. data/app/components/marty/script_form/javascripts/mode/clike/clike.js +284 -0
  58. data/app/components/marty/script_form/javascripts/mode/clike/index.html +102 -0
  59. data/app/components/marty/script_form/javascripts/mode/clike/scala.html +766 -0
  60. data/app/components/marty/script_form/javascripts/mode/clojure/clojure.js +206 -0
  61. data/app/components/marty/script_form/javascripts/mode/clojure/index.html +67 -0
  62. data/app/components/marty/script_form/javascripts/mode/coffeescript/LICENSE +22 -0
  63. data/app/components/marty/script_form/javascripts/mode/coffeescript/coffeescript.js +346 -0
  64. data/app/components/marty/script_form/javascripts/mode/coffeescript/index.html +728 -0
  65. data/app/components/marty/script_form/javascripts/mode/commonlisp/commonlisp.js +101 -0
  66. data/app/components/marty/script_form/javascripts/mode/commonlisp/index.html +165 -0
  67. data/app/components/marty/script_form/javascripts/mode/css/css.js +448 -0
  68. data/app/components/marty/script_form/javascripts/mode/css/index.html +58 -0
  69. data/app/components/marty/script_form/javascripts/mode/css/test.js +501 -0
  70. data/app/components/marty/script_form/javascripts/mode/delorean/delorean.js +189 -0
  71. data/app/components/marty/script_form/javascripts/mode/diff/diff.js +32 -0
  72. data/app/components/marty/script_form/javascripts/mode/diff/index.html +105 -0
  73. data/app/components/marty/script_form/javascripts/mode/ecl/ecl.js +203 -0
  74. data/app/components/marty/script_form/javascripts/mode/ecl/index.html +42 -0
  75. data/app/components/marty/script_form/javascripts/mode/erlang/erlang.js +463 -0
  76. data/app/components/marty/script_form/javascripts/mode/erlang/index.html +63 -0
  77. data/app/components/marty/script_form/javascripts/mode/gfm/gfm.js +150 -0
  78. data/app/components/marty/script_form/javascripts/mode/gfm/index.html +48 -0
  79. data/app/components/marty/script_form/javascripts/mode/go/go.js +170 -0
  80. data/app/components/marty/script_form/javascripts/mode/go/index.html +73 -0
  81. data/app/components/marty/script_form/javascripts/mode/groovy/groovy.js +210 -0
  82. data/app/components/marty/script_form/javascripts/mode/groovy/index.html +72 -0
  83. data/app/components/marty/script_form/javascripts/mode/haskell/haskell.js +242 -0
  84. data/app/components/marty/script_form/javascripts/mode/haskell/index.html +61 -0
  85. data/app/components/marty/script_form/javascripts/mode/haxe/haxe.js +429 -0
  86. data/app/components/marty/script_form/javascripts/mode/haxe/index.html +91 -0
  87. data/app/components/marty/script_form/javascripts/mode/htmlembedded/htmlembedded.js +72 -0
  88. data/app/components/marty/script_form/javascripts/mode/htmlembedded/index.html +50 -0
  89. data/app/components/marty/script_form/javascripts/mode/htmlmixed/htmlmixed.js +84 -0
  90. data/app/components/marty/script_form/javascripts/mode/htmlmixed/index.html +52 -0
  91. data/app/components/marty/script_form/javascripts/mode/javascript/index.html +78 -0
  92. data/app/components/marty/script_form/javascripts/mode/javascript/javascript.js +361 -0
  93. data/app/components/marty/script_form/javascripts/mode/jinja2/index.html +38 -0
  94. data/app/components/marty/script_form/javascripts/mode/jinja2/jinja2.js +42 -0
  95. data/app/components/marty/script_form/javascripts/mode/less/index.html +740 -0
  96. data/app/components/marty/script_form/javascripts/mode/less/less.js +266 -0
  97. data/app/components/marty/script_form/javascripts/mode/lua/index.html +73 -0
  98. data/app/components/marty/script_form/javascripts/mode/lua/lua.js +140 -0
  99. data/app/components/marty/script_form/javascripts/mode/markdown/index.html +343 -0
  100. data/app/components/marty/script_form/javascripts/mode/markdown/markdown.js +382 -0
  101. data/app/components/marty/script_form/javascripts/mode/markdown/test.js +1084 -0
  102. data/app/components/marty/script_form/javascripts/mode/mysql/index.html +42 -0
  103. data/app/components/marty/script_form/javascripts/mode/mysql/mysql.js +186 -0
  104. data/app/components/marty/script_form/javascripts/mode/ntriples/index.html +33 -0
  105. data/app/components/marty/script_form/javascripts/mode/ntriples/ntriples.js +172 -0
  106. data/app/components/marty/script_form/javascripts/mode/ocaml/index.html +130 -0
  107. data/app/components/marty/script_form/javascripts/mode/ocaml/ocaml.js +114 -0
  108. data/app/components/marty/script_form/javascripts/mode/pascal/LICENSE +7 -0
  109. data/app/components/marty/script_form/javascripts/mode/pascal/index.html +49 -0
  110. data/app/components/marty/script_form/javascripts/mode/pascal/pascal.js +94 -0
  111. data/app/components/marty/script_form/javascripts/mode/perl/LICENSE +19 -0
  112. data/app/components/marty/script_form/javascripts/mode/perl/index.html +63 -0
  113. data/app/components/marty/script_form/javascripts/mode/perl/perl.js +816 -0
  114. data/app/components/marty/script_form/javascripts/mode/php/index.html +49 -0
  115. data/app/components/marty/script_form/javascripts/mode/php/php.js +148 -0
  116. data/app/components/marty/script_form/javascripts/mode/pig/index.html +43 -0
  117. data/app/components/marty/script_form/javascripts/mode/pig/pig.js +172 -0
  118. data/app/components/marty/script_form/javascripts/mode/plsql/index.html +63 -0
  119. data/app/components/marty/script_form/javascripts/mode/plsql/plsql.js +217 -0
  120. data/app/components/marty/script_form/javascripts/mode/properties/index.html +41 -0
  121. data/app/components/marty/script_form/javascripts/mode/properties/properties.js +63 -0
  122. data/app/components/marty/script_form/javascripts/mode/python/LICENSE.txt +21 -0
  123. data/app/components/marty/script_form/javascripts/mode/python/index.html +123 -0
  124. data/app/components/marty/script_form/javascripts/mode/python/python.js +338 -0
  125. data/app/components/marty/script_form/javascripts/mode/r/LICENSE +24 -0
  126. data/app/components/marty/script_form/javascripts/mode/r/index.html +74 -0
  127. data/app/components/marty/script_form/javascripts/mode/r/r.js +141 -0
  128. data/app/components/marty/script_form/javascripts/mode/rpm/changes/changes.js +19 -0
  129. data/app/components/marty/script_form/javascripts/mode/rpm/changes/index.html +54 -0
  130. data/app/components/marty/script_form/javascripts/mode/rpm/spec/index.html +100 -0
  131. data/app/components/marty/script_form/javascripts/mode/rpm/spec/spec.css +5 -0
  132. data/app/components/marty/script_form/javascripts/mode/rpm/spec/spec.js +66 -0
  133. data/app/components/marty/script_form/javascripts/mode/rst/index.html +526 -0
  134. data/app/components/marty/script_form/javascripts/mode/rst/rst.js +326 -0
  135. data/app/components/marty/script_form/javascripts/mode/ruby/LICENSE +24 -0
  136. data/app/components/marty/script_form/javascripts/mode/ruby/index.html +172 -0
  137. data/app/components/marty/script_form/javascripts/mode/ruby/ruby.js +195 -0
  138. data/app/components/marty/script_form/javascripts/mode/rust/index.html +49 -0
  139. data/app/components/marty/script_form/javascripts/mode/rust/rust.js +432 -0
  140. data/app/components/marty/script_form/javascripts/mode/scheme/index.html +65 -0
  141. data/app/components/marty/script_form/javascripts/mode/scheme/scheme.js +230 -0
  142. data/app/components/marty/script_form/javascripts/mode/shell/index.html +50 -0
  143. data/app/components/marty/script_form/javascripts/mode/shell/shell.js +118 -0
  144. data/app/components/marty/script_form/javascripts/mode/sieve/LICENSE +23 -0
  145. data/app/components/marty/script_form/javascripts/mode/sieve/index.html +81 -0
  146. data/app/components/marty/script_form/javascripts/mode/sieve/sieve.js +156 -0
  147. data/app/components/marty/script_form/javascripts/mode/smalltalk/index.html +56 -0
  148. data/app/components/marty/script_form/javascripts/mode/smalltalk/smalltalk.js +139 -0
  149. data/app/components/marty/script_form/javascripts/mode/smarty/index.html +83 -0
  150. data/app/components/marty/script_form/javascripts/mode/smarty/smarty.js +148 -0
  151. data/app/components/marty/script_form/javascripts/mode/sparql/index.html +41 -0
  152. data/app/components/marty/script_form/javascripts/mode/sparql/sparql.js +143 -0
  153. data/app/components/marty/script_form/javascripts/mode/stex/index.html +98 -0
  154. data/app/components/marty/script_form/javascripts/mode/stex/stex.js +182 -0
  155. data/app/components/marty/script_form/javascripts/mode/stex/test.js +343 -0
  156. data/app/components/marty/script_form/javascripts/mode/tiddlywiki/index.html +141 -0
  157. data/app/components/marty/script_form/javascripts/mode/tiddlywiki/tiddlywiki.css +14 -0
  158. data/app/components/marty/script_form/javascripts/mode/tiddlywiki/tiddlywiki.js +384 -0
  159. data/app/components/marty/script_form/javascripts/mode/tiki/index.html +83 -0
  160. data/app/components/marty/script_form/javascripts/mode/tiki/tiki.css +26 -0
  161. data/app/components/marty/script_form/javascripts/mode/tiki/tiki.js +309 -0
  162. data/app/components/marty/script_form/javascripts/mode/vb/LICENSE.txt +21 -0
  163. data/app/components/marty/script_form/javascripts/mode/vb/index.html +89 -0
  164. data/app/components/marty/script_form/javascripts/mode/vb/vb.js +260 -0
  165. data/app/components/marty/script_form/javascripts/mode/vbscript/index.html +43 -0
  166. data/app/components/marty/script_form/javascripts/mode/vbscript/vbscript.js +26 -0
  167. data/app/components/marty/script_form/javascripts/mode/velocity/index.html +104 -0
  168. data/app/components/marty/script_form/javascripts/mode/velocity/velocity.js +146 -0
  169. data/app/components/marty/script_form/javascripts/mode/verilog/index.html +211 -0
  170. data/app/components/marty/script_form/javascripts/mode/verilog/verilog.js +194 -0
  171. data/app/components/marty/script_form/javascripts/mode/xml/index.html +45 -0
  172. data/app/components/marty/script_form/javascripts/mode/xml/xml.js +318 -0
  173. data/app/components/marty/script_form/javascripts/mode/xquery/LICENSE +20 -0
  174. data/app/components/marty/script_form/javascripts/mode/xquery/index.html +223 -0
  175. data/app/components/marty/script_form/javascripts/mode/xquery/test/index.html +27 -0
  176. data/app/components/marty/script_form/javascripts/mode/xquery/test/testBase.js +42 -0
  177. data/app/components/marty/script_form/javascripts/mode/xquery/test/testEmptySequenceKeyword.js +16 -0
  178. data/app/components/marty/script_form/javascripts/mode/xquery/test/testMultiAttr.js +16 -0
  179. data/app/components/marty/script_form/javascripts/mode/xquery/test/testNamespaces.js +91 -0
  180. data/app/components/marty/script_form/javascripts/mode/xquery/test/testProcessingInstructions.js +16 -0
  181. data/app/components/marty/script_form/javascripts/mode/xquery/test/testQuotes.js +19 -0
  182. data/app/components/marty/script_form/javascripts/mode/xquery/xquery.js +451 -0
  183. data/app/components/marty/script_form/javascripts/mode/yaml/index.html +68 -0
  184. data/app/components/marty/script_form/javascripts/mode/yaml/yaml.js +95 -0
  185. data/app/components/marty/script_form/javascripts/util/closetag.js +164 -0
  186. data/app/components/marty/script_form/javascripts/util/dialog.css +27 -0
  187. data/app/components/marty/script_form/javascripts/util/dialog.js +70 -0
  188. data/app/components/marty/script_form/javascripts/util/foldcode.js +196 -0
  189. data/app/components/marty/script_form/javascripts/util/formatting.js +193 -0
  190. data/app/components/marty/script_form/javascripts/util/javascript-hint.js +134 -0
  191. data/app/components/marty/script_form/javascripts/util/loadmode.js +51 -0
  192. data/app/components/marty/script_form/javascripts/util/match-highlighter.js +44 -0
  193. data/app/components/marty/script_form/javascripts/util/multiplex.js +77 -0
  194. data/app/components/marty/script_form/javascripts/util/overlay.js +54 -0
  195. data/app/components/marty/script_form/javascripts/util/pig-hint.js +123 -0
  196. data/app/components/marty/script_form/javascripts/util/runmode-standalone.js +90 -0
  197. data/app/components/marty/script_form/javascripts/util/runmode.js +53 -0
  198. data/app/components/marty/script_form/javascripts/util/search.js +118 -0
  199. data/app/components/marty/script_form/javascripts/util/searchcursor.js +119 -0
  200. data/app/components/marty/script_form/javascripts/util/simple-hint.css +16 -0
  201. data/app/components/marty/script_form/javascripts/util/simple-hint.js +97 -0
  202. data/app/components/marty/script_form/javascripts/util/xml-hint.js +137 -0
  203. data/app/components/marty/script_form/stylesheets/codemirror.css +172 -0
  204. data/app/components/marty/script_form/stylesheets/delorean.css +10 -0
  205. data/app/components/marty/script_form/stylesheets/theme/ambiance.css +81 -0
  206. data/app/components/marty/script_form/stylesheets/theme/blackboard.css +25 -0
  207. data/app/components/marty/script_form/stylesheets/theme/cobalt.css +18 -0
  208. data/app/components/marty/script_form/stylesheets/theme/eclipse.css +25 -0
  209. data/app/components/marty/script_form/stylesheets/theme/elegant.css +10 -0
  210. data/app/components/marty/script_form/stylesheets/theme/erlang-dark.css +21 -0
  211. data/app/components/marty/script_form/stylesheets/theme/lesser-dark.css +44 -0
  212. data/app/components/marty/script_form/stylesheets/theme/monokai.css +28 -0
  213. data/app/components/marty/script_form/stylesheets/theme/neat.css +9 -0
  214. data/app/components/marty/script_form/stylesheets/theme/night.css +21 -0
  215. data/app/components/marty/script_form/stylesheets/theme/rubyblue.css +21 -0
  216. data/app/components/marty/script_form/stylesheets/theme/vibrant-ink.css +27 -0
  217. data/app/components/marty/script_form/stylesheets/theme/xq-dark.css +46 -0
  218. data/app/components/marty/script_grid.rb +104 -0
  219. data/app/components/marty/script_grid.rb~ +99 -0
  220. data/app/components/marty/script_tester.rb +114 -0
  221. data/app/components/marty/script_tester.rb~ +213 -0
  222. data/app/components/marty/scripting.rb +132 -0
  223. data/app/components/marty/scripting.rb~ +124 -0
  224. data/app/components/marty/select_report.rb~ +143 -0
  225. data/app/components/marty/simple_app.rb +97 -0
  226. data/app/components/marty/simple_app.rb~ +101 -0
  227. data/app/components/marty/simple_app/javascripts/simple_app.js +50 -0
  228. data/app/components/marty/simple_app/javascripts/statusbar_ext.js +8 -0
  229. data/app/components/marty/tag_grid.rb +83 -0
  230. data/app/components/marty/tag_grid.rb~ +89 -0
  231. data/app/components/marty/tree_panel.rb~ +256 -0
  232. data/app/components/marty/tree_panel/javascripts/tree_panel.js~ +317 -0
  233. data/app/components/marty/user_pivot.rb +128 -0
  234. data/app/components/marty/user_view.rb +181 -0
  235. data/app/components/marty/user_view.rb~ +188 -0
  236. data/app/controllers/marty/application_controller.rb +124 -0
  237. data/app/controllers/marty/application_controller.rb~ +133 -0
  238. data/app/controllers/marty/components_controller.rb +41 -0
  239. data/app/controllers/marty/components_controller.rb~ +37 -0
  240. data/app/controllers/marty/job_controller.rb +28 -0
  241. data/app/controllers/marty/job_controller.rb~ +28 -0
  242. data/app/controllers/marty/rpc_controller.rb +64 -0
  243. data/app/controllers/marty/rpc_controller.rb~ +61 -0
  244. data/app/helpers/marty/application_helper.rb +4 -0
  245. data/app/helpers/marty/script_set.rb +57 -0
  246. data/app/helpers/marty/script_set.rb~ +59 -0
  247. data/app/models/marty/api_auth.rb +44 -0
  248. data/app/models/marty/api_auth.rb~ +48 -0
  249. data/app/models/marty/base.rb +4 -0
  250. data/app/models/marty/data_change.rb +179 -0
  251. data/app/models/marty/data_change.rb~ +141 -0
  252. data/app/models/marty/enum.rb +22 -0
  253. data/app/models/marty/enum.rb~ +16 -0
  254. data/app/models/marty/import_type.rb +44 -0
  255. data/app/models/marty/import_type.rb~ +48 -0
  256. data/app/models/marty/poop.rb~ +169 -0
  257. data/app/models/marty/posting.rb +101 -0
  258. data/app/models/marty/posting.rb~ +86 -0
  259. data/app/models/marty/posting_type.rb +12 -0
  260. data/app/models/marty/posting_type.rb~ +21 -0
  261. data/app/models/marty/promise.rb +252 -0
  262. data/app/models/marty/promise.rb~ +196 -0
  263. data/app/models/marty/role.rb +6 -0
  264. data/app/models/marty/role.rb~ +10 -0
  265. data/app/models/marty/script.rb +144 -0
  266. data/app/models/marty/script.rb~ +62 -0
  267. data/app/models/marty/tag.rb +96 -0
  268. data/app/models/marty/tag.rb~ +91 -0
  269. data/app/models/marty/token.rb +30 -0
  270. data/app/models/marty/user.rb +146 -0
  271. data/app/models/marty/user.rb~ +148 -0
  272. data/app/models/marty/user_role.rb +7 -0
  273. data/app/models/marty/user_role.rb~ +13 -0
  274. data/app/views/layouts/marty/application.html.erb +12 -0
  275. data/app/views/layouts/marty/application.html.erb~ +11 -0
  276. data/config/locales/en.yml +134 -0
  277. data/config/routes.rb +6 -0
  278. data/config/routes.rb~ +10 -0
  279. data/db/migrate/001_create_marty_scripts.rb +14 -0
  280. data/db/migrate/003_create_marty_users.rb +12 -0
  281. data/db/migrate/004_create_marty_roles.rb +7 -0
  282. data/db/migrate/005_create_marty_user_roles.rb +14 -0
  283. data/db/migrate/006_create_marty_tokens.rb +14 -0
  284. data/db/migrate/008_create_marty_posting_types.rb +7 -0
  285. data/db/migrate/019_create_marty_postings.rb +18 -0
  286. data/db/migrate/019_create_marty_postings.rb~ +19 -0
  287. data/db/migrate/068_create_marty_import_types.rb +12 -0
  288. data/db/migrate/069_create_marty_import_synonyms.rb +15 -0
  289. data/db/migrate/070_create_versions.rb +18 -0
  290. data/db/migrate/071_add_object_changes_column_to_versions.rb +9 -0
  291. data/db/migrate/072_add_validation_function_to_import_types.rb +6 -0
  292. data/db/migrate/073_add_preprocess_function_to_import_types.rb +5 -0
  293. data/db/migrate/090_create_delayed_jobs.rb +22 -0
  294. data/db/migrate/091_create_marty_promises.rb +36 -0
  295. data/db/migrate/095_create_marty_tags.rb +14 -0
  296. data/db/migrate/095_create_marty_tags.rb~ +19 -0
  297. data/db/migrate/096_add_user_roles_to_import_types.rb +11 -0
  298. data/db/migrate/097_drop_versions.rb +9 -0
  299. data/db/migrate/098_create_marty_api_auths.rb +20 -0
  300. data/db/seeds.rb +48 -0
  301. data/lib/marty.rb +18 -0
  302. data/lib/marty.rb~ +13 -0
  303. data/lib/marty/content_handler.rb +97 -0
  304. data/lib/marty/content_handler.rb~ +93 -0
  305. data/lib/marty/data_conversion.rb +298 -0
  306. data/lib/marty/data_exporter.rb +150 -0
  307. data/lib/marty/data_exporter.rb~ +137 -0
  308. data/lib/marty/data_importer.rb +122 -0
  309. data/lib/marty/data_importer.rb~ +114 -0
  310. data/lib/marty/data_row_processor.rb~ +206 -0
  311. data/lib/marty/drop_folder_hook.rb~ +17 -0
  312. data/lib/marty/engine.rb +10 -0
  313. data/lib/marty/folder_hook.rb~ +9 -0
  314. data/lib/marty/lazy_column_loader.rb +57 -0
  315. data/lib/marty/lazy_column_loader.rb~ +47 -0
  316. data/lib/marty/mcfly_query.rb +189 -0
  317. data/lib/marty/mcfly_query.rb~ +188 -0
  318. data/lib/marty/migrations.rb +108 -0
  319. data/lib/marty/migrations.rb~ +65 -0
  320. data/lib/marty/monkey.rb +163 -0
  321. data/lib/marty/monkey.rb~ +160 -0
  322. data/lib/marty/permissions.rb +64 -0
  323. data/lib/marty/permissions.rb~ +69 -0
  324. data/lib/marty/promise.rb~ +41 -0
  325. data/lib/marty/promise_job.rb +123 -0
  326. data/lib/marty/promise_job.rb~ +121 -0
  327. data/lib/marty/promise_proxy.rb +94 -0
  328. data/lib/marty/promise_proxy.rb~ +69 -0
  329. data/lib/marty/railtie.rb +5 -0
  330. data/lib/marty/relation.rb +39 -0
  331. data/lib/marty/util.rb +110 -0
  332. data/lib/marty/util.rb~ +80 -0
  333. data/lib/marty/version.rb +3 -0
  334. data/lib/marty/version.rb~ +3 -0
  335. data/lib/marty/xl.rb +527 -0
  336. data/lib/marty/xl.rb~ +526 -0
  337. data/lib/pyxll/README.txt +19 -0
  338. data/lib/pyxll/README.txt~ +16 -0
  339. data/lib/pyxll/gemini.py +155 -0
  340. data/lib/pyxll/gemini.py~ +110 -0
  341. data/lib/pyxll/pyxll.cfg +12 -0
  342. data/lib/pyxll/pyxll.cfg~ +12 -0
  343. data/lib/pyxll/sample.xlsx +0 -0
  344. data/lib/tasks/marty_tasks.rake +37 -0
  345. metadata +517 -0
@@ -0,0 +1,50 @@
1
+ {
2
+ initComponent: function(){
3
+ this.callParent();
4
+
5
+ this.mainPanel = this.down('panel[itemId="main_panel"]');
6
+ this.menuBar = this.down('container[itemId="menu_bar"]');
7
+ var statusBar = this.statusBar = this.down('container[itemId="status_bar"]');
8
+
9
+ // Setting the "busy" indicator for Ajax requests
10
+ Ext.Ajax.on('beforerequest', function(){ statusBar.showBusy(); });
11
+ Ext.Ajax.on('requestcomplete', function(){ statusBar.hideBusy(); });
12
+ Ext.Ajax.on('requestexception', function(){ statusBar.hideBusy(); });
13
+
14
+ this.setRouting();
15
+ },
16
+
17
+ setRouting: function(){
18
+ this.router = Ext.util.History;
19
+ this.router.init();
20
+ this.router.on('change', this.loadRoute, this);
21
+ },
22
+
23
+ loadRoute: function(token){
24
+ if (token){
25
+ this.netzkeLoadComponent(token, {container: this.mainPanel});
26
+ } else {
27
+ this.mainPanel.removeAll();
28
+ }
29
+ },
30
+
31
+ afterRender: function(){
32
+ this.callParent();
33
+ var currentToken = this.router.getToken();
34
+ if (typeof currentToken == "string" && currentToken.length > 0) {
35
+ this.loadRoute(currentToken);
36
+ }
37
+ },
38
+
39
+ appLoadComponent: function(name) {
40
+ this.router.add(name);
41
+ },
42
+
43
+ netzkeLoadComponentByAction: function(action){
44
+ this.router.add(action.name);
45
+ },
46
+
47
+ onToggleConfigMode: function(params){
48
+ this.toggleConfigMode();
49
+ }
50
+ }
@@ -0,0 +1,8 @@
1
+ Ext.override(Ext.ux.StatusBar, {
2
+ hideBusy : function(){
3
+ return this.setStatus({
4
+ text: this.defaultText,
5
+ iconCls: this.defaultIconCls
6
+ });
7
+ }
8
+ });
@@ -0,0 +1,83 @@
1
+ class Marty::TagGrid < Marty::Grid
2
+ has_marty_permissions \
3
+ read: :any,
4
+ create: :dev
5
+
6
+ def configure(c)
7
+ super
8
+
9
+ c.header = false
10
+ c.model = "Marty::Tag"
11
+ c.multi_select = false
12
+
13
+ c.columns ||= [:name, :created_dt, :user__name, :comment]
14
+
15
+ c.data_store.sorters = {
16
+ property: :created_dt,
17
+ direction: 'DESC',
18
+ }
19
+ end
20
+
21
+ endpoint :add_window__add_form__netzke_submit do |params, this|
22
+ data = ActiveSupport::JSON.decode(params[:data])
23
+
24
+ return this.netzke_feedback("Permission Denied") if
25
+ config[:prohibit_create]
26
+
27
+ # FIXME: disallow tag creation when no script has been modified?
28
+
29
+ tag = Marty::Tag.do_create(nil, data["comment"])
30
+
31
+ if tag.valid?
32
+ this.success = true
33
+ this.on_submit_success
34
+ return
35
+ end
36
+
37
+ data_adapter.errors_array(tag).each do |error|
38
+ flash :error => error
39
+ end
40
+
41
+ this.netzke_feedback(@flash)
42
+ end
43
+
44
+ action :add_in_form do |a|
45
+ a.text = I18n.t("tag_grid.new")
46
+ a.tooltip = I18n.t("tag_grid.new")
47
+ a.icon = :time_add
48
+ a.disabled = config[:prohibit_create]
49
+ end
50
+
51
+ def default_bbar
52
+ [:add_in_form]
53
+ end
54
+
55
+ def default_context_menu
56
+ []
57
+ end
58
+
59
+ def default_fields_for_forms
60
+ [:comment]
61
+ end
62
+
63
+ column :name do |c|
64
+ end
65
+
66
+ column :created_dt do |c|
67
+ c.text = "Date/Time"
68
+ c.format = "Y-m-d H:i"
69
+ c.hidden = true
70
+ end
71
+
72
+ column :user__name do |c|
73
+ c.width = 100
74
+ end
75
+
76
+ column :comment do |c|
77
+ c.width = 100
78
+ c.flex = 1
79
+ end
80
+
81
+ end
82
+
83
+ TagGrid = Marty::TagGrid
@@ -0,0 +1,89 @@
1
+ class Marty::TagGrid < Marty::CmGridPanel
2
+ has_marty_permissions read: :any,
3
+ create: :dev
4
+
5
+ def configure(c)
6
+ super
7
+
8
+ c.header = false
9
+ c.model = "Marty::Tag"
10
+ c.columns ||= [:name, :created_dt, :user__name, :comment]
11
+ c.data_store.sorters = {
12
+ property: :created_dt,
13
+ direction: 'DESC',
14
+ }
15
+ end
16
+
17
+ js_configure do |c|
18
+ c.init_component = <<-JS
19
+ function() {
20
+ this.callParent();
21
+ // Set single selection mode. FIXME: can this be done on config?
22
+ this.getSelectionModel().setSelectionMode('SINGLE');
23
+ }
24
+ JS
25
+ end
26
+
27
+ endpoint :add_window__add_form__netzke_submit do |params, this|
28
+ data = ActiveSupport::JSON.decode(params[:data])
29
+
30
+ return this.netzke_feedback("Permission Denied") if
31
+ config[:prohibit_create]
32
+
33
+ # FIXME: disallow tag creation when no script has been modified?
34
+
35
+ tag = Marty::Tag.do_create(nil, data["comment"])
36
+
37
+ if tag.valid?
38
+ this.success = true
39
+ this.on_submit_success
40
+ return
41
+ end
42
+
43
+ data_adapter.errors_array(tag).each do |error|
44
+ flash :error => error
45
+ end
46
+
47
+ this.netzke_feedback(@flash)
48
+ end
49
+
50
+ action :add_in_form do |a|
51
+ a.text = "New Tag"
52
+ a.tooltip = "New Tag"
53
+ a.icon = :time_add
54
+ a.disabled = config[:prohibit_create]
55
+ end
56
+
57
+ def default_bbar
58
+ [:add_in_form]
59
+ end
60
+
61
+ def default_context_menu
62
+ []
63
+ end
64
+
65
+ def default_fields_for_forms
66
+ [:comment]
67
+ end
68
+
69
+ column :name do |c|
70
+ end
71
+
72
+ column :created_dt do |c|
73
+ c.text = "Date/Time"
74
+ c.format = "Y-m-d H:i"
75
+ c.hidden = true
76
+ end
77
+
78
+ column :user__name do |c|
79
+ c.width = 100
80
+ end
81
+
82
+ column :comment do |c|
83
+ c.width = 100
84
+ c.flex = 1
85
+ end
86
+
87
+ end
88
+
89
+ TagGrid = Marty::TagGrid
@@ -0,0 +1,256 @@
1
+ # Ext.tree.TreePanel-based component
2
+ #
3
+ # ATTRIBUTION: this code is based on the netzke-extension module found at:
4
+ # https://github.com/phgrey/netzke-extension
5
+ # TODO: Add documentation for usage
6
+
7
+ class Marty::TreePanel < Netzke::Base
8
+ include ::Netzke::Basepack::DataAccessor
9
+ include ::Netzke::Basepack::Columns
10
+
11
+ self.default_instance_config = {
12
+ indicate_leafs: true,
13
+ auto_scroll: false,
14
+ root_visible: false,
15
+ load_inline_data: false,
16
+ enable_pagination: false,
17
+ rows_per_page: 30,
18
+ treecolumn: 'tree' # default name for tree column
19
+ }
20
+
21
+ def js_configure(c) #:nodoc:
22
+ super
23
+ c.bbar = bbar
24
+ end
25
+
26
+ js_configure do |c|
27
+ c.extend = "Ext.tree.TreePanel"
28
+ c.mixin
29
+ c.root_visible = false
30
+ end
31
+
32
+ # Configure dynamic JS properties for instantiation
33
+ def js_config
34
+ super.tap do |c|
35
+ # Hand over inline data to the js config hash
36
+ c[:inline_data] = get_data if config[:load_inline_data]
37
+ end
38
+ end
39
+
40
+ def configure(c) #:nodoc:
41
+ super
42
+ c.title ||= self.class.js_config.properties[:title] ||
43
+ data_class.name.pluralize
44
+ c.columns = final_columns(with_meta: true)
45
+
46
+ # Set it to the primary key if not given and camelize it Setting
47
+ # it to anything else than the primary key is especially useful
48
+ # when instances of different class are shown in one tree because
49
+ # the primary key MUST be unique!
50
+ c.pri = (c.pri || data_class.primary_key).to_s.camelize(:lower)
51
+
52
+ # Add extra fields for a tree: A method ':name(r)' is called for
53
+ # every record to retrieve the value
54
+ c.extra_fields ||= []
55
+
56
+ # This will call leaf?(r) for every record
57
+ c.extra_fields << {name: 'leaf', type: 'boolean'}
58
+
59
+ # This will call expanded?(r) for every record
60
+ c.extra_fields << {name: 'expanded', type: 'boolean'}
61
+
62
+ # only if the node id property is different from the data class'
63
+ # primary key, we need to add and extra field
64
+ c.extra_fields << {name: c.pri.to_s.camelize(:lower), type: 'string'} if
65
+ c.pri != data_class.primary_key
66
+ end
67
+
68
+ def config
69
+ @config ||= ActiveSupport::OrderedOptions.new.tap do |c|
70
+ # extend with data_store convenient config object
71
+ c.data_store = ActiveSupport::OrderedOptions.new
72
+ end
73
+ end
74
+
75
+ def bbar
76
+ config[:bbar]
77
+ end
78
+
79
+ # Sets the xtype to 'treecolumn' for the column with name equal to
80
+ # the :treecolumn value of the config
81
+ def set_default_xtype(c)
82
+ c[:xtype] = 'treecolumn' if c[:name].to_s == config[:treecolumn].to_s
83
+ end
84
+
85
+ # Set data_index -- The name of the field configuration of the Ext
86
+ # JS model will be set to this value This is neccessary since the
87
+ # data is serialized as a hash (with camelized keys) so the
88
+ # data_index must also be camelized
89
+ def set_default_data_index(c)
90
+ c[:data_index] = c[:name].camelize(:lower)
91
+ end
92
+
93
+ # Call super and then set the data_index
94
+ def augment_column_config(c)
95
+ super
96
+ set_default_data_index(c)
97
+ set_default_xtype c
98
+ end
99
+
100
+ # @!method get_data_endpoint
101
+ #
102
+ # Returns something like:
103
+ # [
104
+ # { 'id'=> 1, 'text'=> 'A folder Node', 'leaf'=> false },
105
+ # { 'id'=> 2, 'text'=> 'A leaf Node', 'leaf'=> true }
106
+ # ]
107
+ #
108
+ # @param [Hash] params
109
+ endpoint :get_data do |params, this|
110
+ this.merge! get_data(params)
111
+ end
112
+
113
+ # Method that is called by the get_data endpoint
114
+ # Calls the get_children method and returns the serialized records
115
+ #
116
+ # @param [] *args takes any arguments
117
+ # @return [Hash] all the serialized data
118
+ def get_data(*args)
119
+ params = args.first || {} # params are optional!
120
+
121
+ sortp = params["sort"]
122
+
123
+ # Giant hack to fix property field used in sort. Not sure why
124
+ # this is coming in camelized.
125
+ if sortp.is_a?(Array)
126
+ sortp.each { |h|
127
+ h["property"] = h["property"].underscore if
128
+ h.is_a?(Hash) && h["property"]
129
+ }
130
+ end
131
+
132
+ if !config[:prohibit_read]
133
+ {}.tap do |res|
134
+ # set children to an instance variable in order to access them later
135
+ @records = get_children(params)
136
+
137
+ # Serialize children
138
+ res[:data] = serialize_data(@records)
139
+
140
+ res[:total] = count_records(params) if
141
+ config[:enable_pagination] &&
142
+ (params[:id].nil? || params[:id] == 'root')
143
+ end
144
+ else
145
+ flash :error => "You don't have permissions to read data"
146
+ { :netzke_feedback => @flash }
147
+ end
148
+ end
149
+
150
+ # Serializes an array of objects
151
+ #
152
+ # @param [Array] records
153
+ # @return [Array] the serialized data
154
+ def serialize_data(records)
155
+ records.map { |r|
156
+ data_adapter.record_to_hash(r, final_columns(:with_meta => true)).tap { |h|
157
+
158
+ config[:extra_fields].each do |f|
159
+ name = f[:name].underscore.to_sym
160
+ h[name] = send("#{name}#{f[:type] == 'boolean' ? '?' : ''}", r)
161
+ end
162
+
163
+ inline_children = get_inline_children(r)
164
+ h[:data] = serialize_data(inline_children) unless inline_children.nil?
165
+ h
166
+ }
167
+ }
168
+ end
169
+
170
+ # Retrieves all children for a node
171
+ # Note: It's recommended to override this method
172
+ #
173
+ # @param [Hash] params
174
+ # @return [Array] array of records
175
+ def get_children(params)
176
+ scope_data_class(params) do
177
+ params[:limit] = config[:rows_per_page] if
178
+ config[:enable_pagination] && (params[:id].nil? || params[:id] == 'root')
179
+ params[:scope] = config[:scope]
180
+ data_adapter.get_records(params, final_columns)
181
+ end
182
+ end
183
+
184
+ # Scopes the data class depending on the config of the parent_key and the node
185
+ #
186
+ # @param [Hash] params
187
+ def scope_data_class(params, &block)
188
+ if config[:parent_key]
189
+ # The value of the pri property of the expanded node is passed
190
+ # as params[:id] ('root' for the root collection)
191
+ if params[:id].nil? || params[:id] == 'root'
192
+ data_class.where(config[:parent_key] => nil).scoping do
193
+ yield
194
+ end
195
+ else
196
+ data_class.where(config[:parent_key] => params[:id]).scoping do
197
+ yield
198
+ end
199
+ end
200
+ else
201
+ yield
202
+ end
203
+ end
204
+
205
+ # Counts the total records
206
+ #
207
+ # @param [Hash] params
208
+ # @return [Fixnum] The number of records
209
+ def count_records(params)
210
+ scope_data_class(params) do
211
+ params[:scope] = config[:scope]
212
+ data_adapter.count_records(params, final_columns)
213
+ end
214
+ end
215
+
216
+ # Should return all children of the record that should also be
217
+ # serialized in the current request
218
+ # Note: It's recommended to override this method
219
+ #
220
+ # @param [Object] r The record for which the inline children should be loaded
221
+ # @return [NilClass, Array] If nil is returned, the tree doesn't
222
+ # know anything about any children, so opening the node will cause
223
+ # another request. If an empty array is returned, the tree assumes
224
+ # that there are no children available for this node (and thus you
225
+ # can't open it!)
226
+ def get_inline_children(r)
227
+ nil
228
+ end
229
+
230
+ # Is the record a leaf or not?
231
+ # Note: It's recommended to override this method
232
+ #
233
+ # @param [Object] r
234
+ # @return [Boolean] Whether the node is a leaf or not
235
+ def leaf?(r)
236
+ r.children.empty?
237
+ end
238
+
239
+ # Is the record a expanded or not?
240
+ # Note: It's recommended to override this method
241
+ #
242
+ # @param [Object] r
243
+ # @return [Boolean] Whether the node is expanded or not
244
+ def expanded?(r)
245
+ false
246
+ end
247
+
248
+ # Is the record a leaf or not?
249
+ # Note: It's recommended to override this method
250
+ #
251
+ # @param [Object] r
252
+ # @return [Boolean] Whether the node is a leaf or not
253
+ def node_id(r)
254
+ r.send(data_class.primary_key)
255
+ end
256
+ end