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,698 @@
1
+ /*
2
+
3
+ This is a modified version of the ExtJS Codemirror component from
4
+ http://www.mzsolutions.eu/Extjs-CodeMirror-component.html. It's been
5
+ modified to remove the toolbar and also it uses delorean mode by
6
+ default.
7
+
8
+ */
9
+
10
+ /**
11
+ * @private
12
+ * @class Ext.ux.layout.component.field.CodeMirror
13
+ * @extends Ext.layout.component.field.Field
14
+ * @author Adrian Teodorescu (ateodorescu@gmail.com)
15
+ *
16
+ * Layout class for {@link Ext.ux.form.field.CodeMirror} fields. Handles sizing the codemirror field.
17
+ */
18
+ Ext.define('Ext.ux.layout.component.field.CodeMirror', {
19
+ extend: 'Ext.layout.component.Auto',
20
+ alias: ['layout.codemirror'],
21
+
22
+ type: 'codemirror',
23
+
24
+ beginLayout: function(ownerContext) {
25
+ this.callParent(arguments);
26
+
27
+ ownerContext.textAreaContext = ownerContext.getEl('textareaEl');
28
+ ownerContext.editorContext = ownerContext.getEl('editorEl');
29
+ },
30
+
31
+ renderItems: Ext.emptyFn,
32
+
33
+ getRenderTarget: function() {
34
+ return this.owner.bodyEl;
35
+ },
36
+
37
+ publishInnerHeight: function (ownerContext, height) {
38
+ var me = this,
39
+ innerHeight = height - me.measureLabelErrorHeight(ownerContext) -
40
+ ownerContext.bodyCellContext.getPaddingInfo().height;
41
+ if (Ext.isNumber(innerHeight)) {
42
+ ownerContext.textAreaContext.setHeight(innerHeight);
43
+ ownerContext.editorContext.setHeight(innerHeight);
44
+ } else {
45
+ me.done = false;
46
+ }
47
+ },
48
+
49
+ publishInnerWidth: function (ownerContext, width) {
50
+ var me = this;
51
+
52
+ if (Ext.isNumber(width)) {
53
+ ownerContext.textAreaContext.setWidth(width);
54
+ ownerContext.editorContext.setWidth(width);
55
+ } else {
56
+ me.done = false;
57
+ }
58
+ }
59
+ });
60
+
61
+ Ext.define('Ext.ux.form.field.CodeMirror', {
62
+ extend: 'Ext.Component',
63
+ mixins: {
64
+ labelable: 'Ext.form.Labelable',
65
+ field: 'Ext.form.field.Field'
66
+ },
67
+ alias: 'widget.codemirror',
68
+ alternateClassName: 'Ext.form.CodeMirror',
69
+ requires: [
70
+ 'Ext.tip.QuickTipManager',
71
+ 'Ext.util.Format',
72
+ 'Ext.ux.layout.component.field.CodeMirror'
73
+ ],
74
+
75
+ childEls: [
76
+ 'editorEl', 'textareaEl'
77
+ ],
78
+
79
+ fieldSubTpl: [
80
+ '<textarea id="{cmpId}-textareaEl" name="{name}" tabIndex="-1" class="{textareaCls}" ',
81
+ 'style="{size}" autocomplete="off"></textarea>',
82
+ '<div id="{cmpId}-editorEl" class="{editorCls}" name="{editorName}" style="{size}"></div>',
83
+ {
84
+ disableFormats: true
85
+ }
86
+ ],
87
+
88
+ // FIXME: the layout mechanism is currently busted
89
+ // componentLayout: 'codemirror',
90
+
91
+ editorWrapCls: Ext.baseCSSPrefix + 'html-editor-wrap',
92
+
93
+ maskOnDisable: true,
94
+
95
+ afterBodyEl: '</div>',
96
+
97
+ /*
98
+ // map tabs to 4 spaces -- arman (doesn't work - may need new version)
99
+ extraKeys: {
100
+ "Tab": function() {
101
+ editor.replaceSelection(" " , "end");
102
+ }
103
+ },
104
+ */
105
+
106
+ /**
107
+ * @cfg {String} mode The default mode to use when the editor is initialized. When not given, this will default to the first mode that was loaded.
108
+ * It may be a string, which either simply names the mode or is a MIME type associated with the mode. Alternatively,
109
+ * it may be an object containing configuration options for the mode, with a name property that names the mode
110
+ * (for example {name: "javascript", json: true}). The demo pages for each mode contain information about what
111
+ * configuration parameters the mode supports.
112
+ */
113
+ mode: 'text/plain',
114
+
115
+ /**
116
+ * @cfg {Boolean} showAutoIndent Enable auto indent button for indenting the selected range
117
+ */
118
+ showAutoIndent: true,
119
+
120
+ /**
121
+ * @cfg {Boolean} showLineNumbers Enable line numbers button in the toolbar.
122
+ */
123
+ showLineNumbers: true,
124
+
125
+ /**
126
+ * @cfg {Boolean} enableMatchBrackets Force matching-bracket-highlighting to happen
127
+ */
128
+ enableMatchBrackets: true,
129
+
130
+ /**
131
+ * @cfg {Boolean} enableElectricChars Configures whether the editor should re-indent the current line when a character is typed
132
+ * that might change its proper indentation (only works if the mode supports indentation).
133
+ */
134
+ enableElectricChars: false,
135
+
136
+ /**
137
+ * @cfg {Boolean} enableIndentWithTabs Whether, when indenting, the first N*tabSize spaces should be replaced by N tabs.
138
+ */
139
+ enableIndentWithTabs: true,
140
+
141
+ /**
142
+ * @cfg {Boolean} enableSmartIndent Whether to use the context-sensitive indentation that the mode provides (or just indent the same as the line before).
143
+ */
144
+ enableSmartIndent: true,
145
+
146
+ /**
147
+ * @cfg {Boolean} enableLineWrapping Whether CodeMirror should scroll or wrap for long lines.
148
+ */
149
+ enableLineWrapping: false,
150
+
151
+ /**
152
+ * @cfg {Boolean} enableLineNumbers Whether to show line numbers to the left of the editor.
153
+ */
154
+ enableLineNumbers: true,
155
+
156
+ /**
157
+ * @cfg {Boolean} enableGutter Can be used to force a 'gutter' (empty space on the left of the editor) to be shown even
158
+ * when no line numbers are active. This is useful for setting markers.
159
+ */
160
+ enableGutter: true,
161
+
162
+ /**
163
+ * @cfg {Boolean} enableFixedGutter When enabled (off by default), this will make the gutter stay visible when the
164
+ * document is scrolled horizontally.
165
+ */
166
+ enableFixedGutter: false,
167
+
168
+ /**
169
+ * @cfg {Number} firstLineNumber At which number to start counting lines.
170
+ */
171
+ firstLineNumber: 1,
172
+
173
+ /**
174
+ * @cfg {Boolean} readOnly <tt>true</tt> to mark the field as readOnly.
175
+ */
176
+ readOnly : false,
177
+
178
+ /**
179
+ * @cfg {Number} pollInterval Indicates how quickly (miliseconds) CodeMirror should poll its input textarea for changes.
180
+ * Most input is captured by events, but some things, like IME input on some browsers, doesn't generate events
181
+ * that allow CodeMirror to properly detect it. Thus, it polls.
182
+ */
183
+ pollInterval: 100,
184
+
185
+ /**
186
+ * @cfg {Number} indentUnit How many spaces a block (whatever that means in the edited language) should be indented.
187
+ */
188
+ indentUnit: 4,
189
+
190
+ /**
191
+ * @cfg {Number} tabSize The width of a tab character.
192
+ */
193
+ tabSize: 4,
194
+
195
+ /**
196
+ * @cfg {String} theme The theme to style the editor with. You must make sure the CSS file defining the corresponding
197
+ * .cm-s-[name] styles is loaded (see the theme directory in the distribution). The default is "default", for which
198
+ * colors are included in codemirror.css. It is possible to use multiple theming classes at once—for example
199
+ * "foo bar" will assign both the cm-s-foo and the cm-s-bar classes to the editor.
200
+ */
201
+ theme: 'default',
202
+
203
+ /**
204
+ * @property {String} pathModes Path to the modes folder to dinamically load the required scripts. You could also
205
+ * include all your required modes in a big script file and this path will be ignored.
206
+ * Do not fill in the trailing slash.
207
+ */
208
+ pathModes: 'mode',
209
+
210
+ /**
211
+ * @property {String} pathExtensions Path to the extensions folder to dinamically load the required scripts. You could also
212
+ * include all your required extensions in a big script file and this path will be ignored.
213
+ * Do not fill in the trailing slash.
214
+ */
215
+ pathExtensions: 'lib/util',
216
+
217
+ /**
218
+ * @property {Array} extensions Define here extensions script dependencies; This is used by toolbar buttons to automatically
219
+ * load the scripts before using an extension.
220
+ */
221
+ extensions:{
222
+ format: {
223
+ dependencies: ['formatting.js']
224
+ }
225
+ },
226
+
227
+ scriptsLoaded: [],
228
+ lastMode: '',
229
+
230
+ initComponent : function(){
231
+ var me = this;
232
+
233
+ me.callParent(arguments);
234
+
235
+ me.initLabelable();
236
+ me.initField();
237
+
238
+ /*
239
+ Fix resize issues as suggested by user koblass on the Extjs forums
240
+ http://www.sencha.com/forum/showthread.php?167047-Ext.ux.form.field.CodeMirror-for-Ext-4.x&p=860535&viewfull=1#post860535
241
+ */
242
+ me.on('resize', function() {
243
+ if (me.editor) {
244
+ me.editor.refresh();
245
+ }
246
+ }, me);
247
+ },
248
+
249
+ getMaskTarget: function(){
250
+ return this.bodyEl;
251
+ },
252
+
253
+ /**
254
+ * @private override
255
+ */
256
+ getSubTplData: function() {
257
+ var cssPrefix = Ext.baseCSSPrefix;
258
+ return {
259
+ $comp : this,
260
+ cmpId : this.id,
261
+ id : this.getInputId(),
262
+ toolbarWrapCls : cssPrefix + 'html-editor-tb',
263
+ textareaCls : cssPrefix + 'hidden',
264
+ editorCls : cssPrefix + 'codemirror',
265
+ editorName : Ext.id(),
266
+ //size : 'height:100px;width:100%'
267
+ // PennyMac: setting height to 100%.
268
+ size : 'height:100%;width:100%',
269
+ };
270
+ },
271
+
272
+ getSubTplMarkup: function() {
273
+ return this.getTpl('fieldSubTpl').apply(this.getSubTplData());
274
+ },
275
+
276
+ /**
277
+ * @private override
278
+ */
279
+ onRender: function() {
280
+ var me = this;
281
+
282
+ me.callParent(arguments);
283
+ me.editorEl = me.getEl('editorEl');
284
+ me.bodyEl = me.getEl('bodyEl');
285
+
286
+ me.disableItems(true);
287
+ me.initEditor();
288
+
289
+ me.rendered = true;
290
+ },
291
+
292
+ initRenderData: function() {
293
+ this.beforeSubTpl = '<div class="' + this.editorWrapCls + '">';
294
+ return Ext.applyIf(this.callParent(), this.getLabelableRenderData());
295
+ },
296
+
297
+ /**
298
+ * @private override
299
+ */
300
+ initEditor : function(){
301
+ var me = this,
302
+ mode = "text/x-delorean";
303
+
304
+ // if no mode is loaded we could get an error like "Object #<Object> has no method 'startState'"
305
+ // search mime to find script dependencies
306
+ var item = me.getMime(me.mode);
307
+ if(item) {
308
+ mode = me.getMimeMode(me.mode);
309
+ if(!mode){
310
+ mode = "text/x-delorean";
311
+ }
312
+ }
313
+
314
+ me.editor = CodeMirror(me.editorEl, {
315
+ matchBrackets: me.enableMatchBrackets,
316
+ electricChars: me.enableElectricChars,
317
+ autoClearEmptyLines:true,
318
+ value: me.rawValue,
319
+ indentUnit: me.indentUnit,
320
+ smartIndent: me.enableSmartIndent,
321
+ indentWithTabs: me.indentWithTabs,
322
+ pollInterval: me.pollInterval,
323
+ lineNumbers: me.enableLineNumbers,
324
+ lineWrapping: me.enableLineWrapping,
325
+ firstLineNumber: me.firstLineNumber,
326
+ tabSize: me.tabSize,
327
+ gutter: me.enableGutter,
328
+ fixedGutter: me.enableFixedGutter,
329
+ theme: me.theme,
330
+ mode: mode,
331
+ onChange: function(editor, tc){
332
+ me.checkChange();
333
+ //me.fireEvent('change', me, tc.from, tc.to, tc.text, tc.next || null);
334
+ },
335
+ onCursorActivity: function(editor){
336
+ me.fireEvent('cursoractivity', me);
337
+ },
338
+ onGutterClick: function(editor, line, event){
339
+ me.fireEvent('gutterclick', me, line, event);
340
+ },
341
+ onFocus: function(editor){
342
+ me.fireEvent('activate', me);
343
+ },
344
+ onBlur: function(editor){
345
+ me.fireEvent('deactivate', me);
346
+ },
347
+ onScroll: function(editor){
348
+ me.fireEvent('scroll', me);
349
+ },
350
+ onHighlightComplete: function(editor){
351
+ me.fireEvent('highlightcomplete', me);
352
+ },
353
+ onUpdate: function(editor){
354
+ me.fireEvent('update', me);
355
+ },
356
+ onKeyEvent: function(editor, event){
357
+ event.cancelBubble = true; // fix suggested by koblass user on Sencha forums (http://www.sencha.com/forum/showthread.php?167047-Ext.ux.form.field.CodeMirror-for-Ext-4.x&p=862029&viewfull=1#post862029)
358
+ me.fireEvent('keyevent', me, event);
359
+ }
360
+ });
361
+ //me.editor.setValue(me.rawValue);
362
+ me.setMode(me.mode);
363
+ me.setReadOnly(me.readOnly);
364
+ me.fireEvent('initialize', me);
365
+
366
+ // change the codemirror css
367
+ var css = Ext.util.CSS.getRule('.CodeMirror');
368
+ if(css){
369
+ css.style.height = '100%';
370
+ css.style.position = 'relative';
371
+ css.style.overflow = 'hidden';
372
+ }
373
+ var css = Ext.util.CSS.getRule('.CodeMirror-Scroll');
374
+ if(css){
375
+ css.style.height = '100%';
376
+ }
377
+
378
+ // PennyMac: align the body to the top. Otherwise it ends up
379
+ // in the center of the enclosing table.
380
+ var el = document.getElementById(me.bodyEl.id);
381
+ el.setAttribute("valign", "top");
382
+ },
383
+
384
+ /**
385
+ * @private
386
+ */
387
+ relayBtnCmd: function(btn){
388
+ this.relayCmd(btn.getItemId());
389
+ },
390
+
391
+ /**
392
+ * @private
393
+ */
394
+ relayCmd: function(cmd){
395
+ Ext.defer(function() {
396
+ var me = this;
397
+ me.editor.focus();
398
+ switch(cmd){
399
+ // auto formatting
400
+ case 'justifycenter':
401
+ if(!CodeMirror.extensions.autoIndentRange){
402
+ me.loadDependencies(me.extensions.format, me.pathExtensions, me.doIndentSelection, me);
403
+ }else{
404
+ me.doIndentSelection();
405
+ }
406
+ break;
407
+
408
+ // line numbers
409
+ case 'insertorderedlist':
410
+ me.doChangeLineNumbers();
411
+ break;
412
+ }
413
+ }, 10, this);
414
+ },
415
+
416
+ /**
417
+ * @private
418
+ * Reload all CodeMirror extensions for the current instance;
419
+ *
420
+ */
421
+ reloadExtentions: function(){
422
+ var me = this;
423
+
424
+ for (var ext in CodeMirror.extensions)
425
+ if (CodeMirror.extensions.propertyIsEnumerable(ext) &&
426
+ !me.editor.propertyIsEnumerable(ext))
427
+ me.editor[ext] = CodeMirror.extensions[ext];
428
+ },
429
+
430
+ doChangeLineNumbers: function(){
431
+ var me = this;
432
+
433
+ me.enableLineNumbers = !me.enableLineNumbers;
434
+ me.editor.setOption('lineNumbers', me.enableLineNumbers);
435
+ },
436
+
437
+ /**
438
+ * @private
439
+ */
440
+ doIndentSelection: function(){
441
+ var me = this;
442
+
443
+ me.reloadExtentions();
444
+
445
+ try{
446
+ var range = { from: me.editor.getCursor(true), to: me.editor.getCursor(false) };
447
+ me.editor.autoIndentRange(range.from, range.to);
448
+ }catch(err){}
449
+ },
450
+
451
+ modes: [
452
+ {
453
+ mime: ["text/x-delorean"],
454
+ dependencies: []
455
+ },
456
+ ],
457
+
458
+ /**
459
+ * @private
460
+ */
461
+ getMime: function(mime){
462
+ var me = this, item, found = false;
463
+
464
+ for(var i=0;i<me.modes.length;i++){
465
+ item = me.modes[i];
466
+ if(Ext.isArray(item.mime)){
467
+ if(Ext.Array.contains(item.mime, mime)){
468
+ found = true;
469
+ break;
470
+ }
471
+ }else{
472
+ if(item == mime){
473
+ found = true;
474
+ break;
475
+ }
476
+ }
477
+ }
478
+ if(found)
479
+ return item;
480
+ else
481
+ return null;
482
+ },
483
+
484
+ /**
485
+ * @private
486
+ */
487
+ loadDependencies: function(item, path, handler, scope){
488
+ var me = this;
489
+
490
+ me.scripts = [];
491
+ me.scriptIndex = -1;
492
+
493
+ // load the dependencies
494
+ for(var i=0; i < item.dependencies.length; i++){
495
+ if(!Ext.Array.contains(me.scriptsLoaded, path + '/' + item.dependencies[i])){
496
+ var options = {
497
+ url: path + '/' + item.dependencies[i],
498
+ index: ++me.scriptIndex,
499
+ onLoad: function(options){
500
+ var ok = true;
501
+ for(j=0; j < me.scripts.length; j++){
502
+ if(me.scripts[j].called) {// this event could be raised before one script if fetched
503
+ ok = ok && me.scripts[j].success;
504
+ if(me.scripts[j].success && !Ext.Array.contains(me.scriptsLoaded, me.scripts[j].url)){
505
+ me.scriptsLoaded.push(me.scripts[j].url);
506
+ }
507
+ }else{
508
+ ok = false;
509
+ }
510
+ }
511
+ if(ok){
512
+ handler.call(scope || me.editor);
513
+ }
514
+ }
515
+ };
516
+
517
+ me.scripts[me.scriptIndex] = {
518
+ url: options.url,
519
+ success: true,
520
+ called: false,
521
+ options: options,
522
+ onLoad: options.onLoad || Ext.emptyFn,
523
+ onError: options.onError || Ext.emptyFn
524
+ };
525
+ }
526
+ }
527
+ for(var i=0; i < me.scripts.length; i++){
528
+ me.loadScript(me.scripts[i].options);
529
+ }
530
+ },
531
+
532
+ /**
533
+ * @private
534
+ */
535
+ loadScript: function(options){
536
+ var me = this;
537
+ Ext.Ajax.request({
538
+ url: options.url,
539
+ scriptIndex: options.index,
540
+ success: function(response, options) {
541
+ var script = 'Ext.getCmp("' + this.id + '").scripts[' + options.scriptIndex + ']';
542
+ window.setTimeout('try { ' + response.responseText + ' } catch(e) { '+script+'.success = false; '+script+'.onError('+script+'.options, e); }; ' + script + '.called = true; if ('+script+'.success) '+script+'.onLoad('+script+'.options);', 0);
543
+ },
544
+ failure: function(response, options) {
545
+ var script = this.scripts[options.scriptIndex];
546
+ script.success = false;
547
+ script.called = true;
548
+ script.onError(script.options, response.status);
549
+ },
550
+ scope: me
551
+ });
552
+ },
553
+
554
+ /**
555
+ * @private
556
+ * Return mode depending on the mime; If the mime is not loaded then return null
557
+ *
558
+ * @param mime
559
+ */
560
+ getMimeMode: function(mime){
561
+ var mode = null;
562
+ var mimes = CodeMirror.listMIMEs();
563
+ for(var i=0; i<mimes.length; i++){
564
+ if(mimes[i].mime == mime){
565
+ mode = mimes[i].mode;
566
+ if(typeof mode == "object")
567
+ mode = mode.name;
568
+ break;
569
+ }
570
+ }
571
+ return mode;
572
+ },
573
+
574
+ /**
575
+ * Change the CodeMirror mode to the specified mime.
576
+ *
577
+ * @param {String} mime The MIME value according to the CodeMirror documentation
578
+ */
579
+ setMode: function(mime){
580
+ var me = this,
581
+ found = false;
582
+ // search mime to find script dependencies
583
+ var item = me.getMime(mime);
584
+
585
+ if(!item) {
586
+ // mime not found
587
+ return;
588
+ }
589
+
590
+ var mode = me.getMimeMode(mime);
591
+
592
+ if(!mode){
593
+ me.loadDependencies(item, me.pathModes, function(){
594
+ var mode = me.getMimeMode(mime);
595
+ if(typeof mode == "string")
596
+ me.editor.setOption('mode', mime);
597
+ else
598
+ me.editor.setOption('mode', mode);
599
+ });
600
+ }else{
601
+ if(typeof mode == "string")
602
+ me.editor.setOption('mode', mime);
603
+ else
604
+ me.editor.setOption('mode', mode);
605
+ }
606
+
607
+ if(me.modesSelect){
608
+ me.modesSelect.dom.value = mime;
609
+ }
610
+ try{
611
+ me.fireEvent('modechanged', me, mime, me.lastMode);
612
+ me.lastMode = mime;
613
+ }catch(err){}
614
+ },
615
+
616
+ /**
617
+ * Set the editor as read only
618
+ *
619
+ * @param {Boolean} readOnly
620
+ */
621
+ setReadOnly: function(readOnly) {
622
+ var me = this;
623
+
624
+ if(me.editor){
625
+ me.editor.setOption('readOnly', readOnly);
626
+ me.disableItems(readOnly);
627
+ }
628
+ },
629
+
630
+ onDisable: function() {
631
+ this.bodyEl.mask();
632
+ this.callParent(arguments);
633
+ },
634
+
635
+ onEnable: function() {
636
+ this.bodyEl.unmask();
637
+ this.callParent(arguments);
638
+ },
639
+
640
+ disableItems: function(disabled) {
641
+ },
642
+
643
+ /**
644
+ * Sets a data value into the field and runs the change detection.
645
+ * @param {Mixed} value The value to set
646
+ * @return {Ext.ux.form.field.CodeMirror} this
647
+ */
648
+ setValue: function(value){
649
+ var me = this;
650
+
651
+ me.mixins.field.setValue.call(me, value);
652
+ me.rawValue = value;
653
+ if(me.editor)
654
+ me.editor.setValue(value);
655
+ return me;
656
+ },
657
+
658
+ /**
659
+ * Return submit value to the owner form.
660
+ * @return {Mixed} The field value
661
+ */
662
+ getSubmitValue: function(){
663
+ var me = this;
664
+ return me.getValue();
665
+ },
666
+
667
+ /**
668
+ * Return the value of the CodeMirror editor
669
+ * @return {Mixed} The field value
670
+ */
671
+ getValue: function(){
672
+ var me = this;
673
+
674
+ if(me.editor)
675
+ return me.editor.getValue();
676
+ else
677
+ return null;
678
+ },
679
+
680
+ /**
681
+ * @private
682
+ */
683
+ onDestroy: function(){
684
+ var me = this;
685
+ if(me.rendered){
686
+ try {
687
+ Ext.EventManager.removeAll(me.editor);
688
+ for (prop in me.editor) {
689
+ if (me.editor.hasOwnProperty(prop)) {
690
+ delete me.editor[prop];
691
+ }
692
+ }
693
+ }catch(e){}
694
+ }
695
+ me.callParent();
696
+ },
697
+
698
+ });