marty 0.5.12

Sign up to get free protection for your applications and to get access to all the features.
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
+ });