mumuki-laboratory 7.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (937) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +661 -0
  3. data/README.md +599 -0
  4. data/Rakefile +35 -0
  5. data/app/assets/config/mumuki_laboratory_engine.js +2 -0
  6. data/app/assets/images/logo.png +0 -0
  7. data/app/assets/images/user_shape.png +0 -0
  8. data/app/assets/javascripts/mumuki_laboratory/application.js +37 -0
  9. data/app/assets/javascripts/mumuki_laboratory/application/alias-modes.js +20 -0
  10. data/app/assets/javascripts/mumuki_laboratory/application/assets-loader.js +26 -0
  11. data/app/assets/javascripts/mumuki_laboratory/application/bridge.js +68 -0
  12. data/app/assets/javascripts/mumuki_laboratory/application/button.js +36 -0
  13. data/app/assets/javascripts/mumuki_laboratory/application/characters.js +26 -0
  14. data/app/assets/javascripts/mumuki_laboratory/application/codemirror-builder.js +100 -0
  15. data/app/assets/javascripts/mumuki_laboratory/application/codemirror.js +99 -0
  16. data/app/assets/javascripts/mumuki_laboratory/application/confirmation.js +17 -0
  17. data/app/assets/javascripts/mumuki_laboratory/application/console.js +175 -0
  18. data/app/assets/javascripts/mumuki_laboratory/application/csrf-token.js +18 -0
  19. data/app/assets/javascripts/mumuki_laboratory/application/custom-editor.js +21 -0
  20. data/app/assets/javascripts/mumuki_laboratory/application/discussions.js +76 -0
  21. data/app/assets/javascripts/mumuki_laboratory/application/elipsis.js +31 -0
  22. data/app/assets/javascripts/mumuki_laboratory/application/free-form.js +32 -0
  23. data/app/assets/javascripts/mumuki_laboratory/application/inputs.js +12 -0
  24. data/app/assets/javascripts/mumuki_laboratory/application/interval.js +17 -0
  25. data/app/assets/javascripts/mumuki_laboratory/application/kids.js +342 -0
  26. data/app/assets/javascripts/mumuki_laboratory/application/load-analytics.js +4 -0
  27. data/app/assets/javascripts/mumuki_laboratory/application/load-error-svg.js +11 -0
  28. data/app/assets/javascripts/mumuki_laboratory/application/messages.js +93 -0
  29. data/app/assets/javascripts/mumuki_laboratory/application/multiple-choice.js +11 -0
  30. data/app/assets/javascripts/mumuki_laboratory/application/multiple-files.js +241 -0
  31. data/app/assets/javascripts/mumuki_laboratory/application/multiple-scenarios.js +152 -0
  32. data/app/assets/javascripts/mumuki_laboratory/application/pin.js +17 -0
  33. data/app/assets/javascripts/mumuki_laboratory/application/popover.js +18 -0
  34. data/app/assets/javascripts/mumuki_laboratory/application/progress.js +10 -0
  35. data/app/assets/javascripts/mumuki_laboratory/application/speech-bubble-renderer.js +99 -0
  36. data/app/assets/javascripts/mumuki_laboratory/application/submission.js +112 -0
  37. data/app/assets/javascripts/mumuki_laboratory/application/timer.js +21 -0
  38. data/app/assets/javascripts/mumuki_laboratory/application/tooltip.js +3 -0
  39. data/app/assets/javascripts/mumuki_laboratory/application/upload.js +17 -0
  40. data/app/assets/javascripts/mumuki_laboratory/application/user.js +9 -0
  41. data/app/assets/stylesheets/mumuki_laboratory/application.scss +16 -0
  42. data/app/assets/stylesheets/mumuki_laboratory/application/_alerts.scss +3 -0
  43. data/app/assets/stylesheets/mumuki_laboratory/application/_errors.scss +59 -0
  44. data/app/assets/stylesheets/mumuki_laboratory/application/_fonts.scss +2 -0
  45. data/app/assets/stylesheets/mumuki_laboratory/application/_invitations.scss +4 -0
  46. data/app/assets/stylesheets/mumuki_laboratory/application/_layout.scss +154 -0
  47. data/app/assets/stylesheets/mumuki_laboratory/application/_mixins.scss +6 -0
  48. data/app/assets/stylesheets/mumuki_laboratory/application/_modules.scss +25 -0
  49. data/app/assets/stylesheets/mumuki_laboratory/application/_tooltip.scss +4 -0
  50. data/app/assets/stylesheets/mumuki_laboratory/application/_vendor.scss +2 -0
  51. data/app/assets/stylesheets/mumuki_laboratory/application/hovers.scss +12 -0
  52. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_book_header.scss +21 -0
  53. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_breadcrumb.scss +64 -0
  54. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_chapter_show.scss +3 -0
  55. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_checkboxes.scss +34 -0
  56. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_console.scss +49 -0
  57. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_datepicker.scss +13 -0
  58. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_discussion.scss +386 -0
  59. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_dropdown.scss +3 -0
  60. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_editor.scss +119 -0
  61. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_exercise_assignment.scss +38 -0
  62. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_exercise_results.scss +40 -0
  63. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_flash.scss +57 -0
  64. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_follow_us.scss +16 -0
  65. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_gs-board.scss +8 -0
  66. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_highlight.scss +144 -0
  67. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids.scss +513 -0
  68. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids_results.scss +49 -0
  69. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_modal.scss +24 -0
  70. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_organization_chooser.scss +18 -0
  71. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_overlap.scss +29 -0
  72. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_progress_bar.scss +31 -0
  73. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_progress_listing.scss +10 -0
  74. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_timer.scss +8 -0
  75. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_upload.scss +8 -0
  76. data/app/assets/stylesheets/mumuki_laboratory/application/modules/guide-corollary.scss +9 -0
  77. data/app/assets/stylesheets/mumuki_laboratory/application/modules/popover.scss +9 -0
  78. data/app/controllers/ajax_controller.rb +9 -0
  79. data/app/controllers/api/base_controller.rb +23 -0
  80. data/app/controllers/api/courses_controller.rb +26 -0
  81. data/app/controllers/api/organizations_controller.rb +28 -0
  82. data/app/controllers/api/roles_controller.rb +53 -0
  83. data/app/controllers/api/students_controller.rb +9 -0
  84. data/app/controllers/api/teachers_controller.rb +9 -0
  85. data/app/controllers/api/users_controller.rb +18 -0
  86. data/app/controllers/appendixes_controller.rb +5 -0
  87. data/app/controllers/application_controller.rb +93 -0
  88. data/app/controllers/assets_controller.rb +14 -0
  89. data/app/controllers/book_controller.rb +7 -0
  90. data/app/controllers/book_discussions_controller.rb +7 -0
  91. data/app/controllers/chapters_controller.rb +12 -0
  92. data/app/controllers/complements_controller.rb +8 -0
  93. data/app/controllers/concerns/on_base_organization_only.rb +11 -0
  94. data/app/controllers/concerns/organizations_controller_template.rb +35 -0
  95. data/app/controllers/concerns/users_controller_template.rb +33 -0
  96. data/app/controllers/concerns/with_authorization.rb +23 -0
  97. data/app/controllers/concerns/with_errors_filter.rb +32 -0
  98. data/app/controllers/concerns/with_user_params.rb +11 -0
  99. data/app/controllers/discussions_controller.rb +85 -0
  100. data/app/controllers/discussions_messages_controller.rb +37 -0
  101. data/app/controllers/exams_controller.rb +14 -0
  102. data/app/controllers/exercise_confirmations_controller.rb +9 -0
  103. data/app/controllers/exercise_query_controller.rb +13 -0
  104. data/app/controllers/exercise_solutions_controller.rb +28 -0
  105. data/app/controllers/exercise_tries_controller.rb +16 -0
  106. data/app/controllers/exercises_controller.rb +52 -0
  107. data/app/controllers/guide_container_controller.rb +21 -0
  108. data/app/controllers/guide_progress_controller.rb +18 -0
  109. data/app/controllers/guides_controller.rb +9 -0
  110. data/app/controllers/invitations_controller.rb +40 -0
  111. data/app/controllers/lessons_controller.rb +8 -0
  112. data/app/controllers/login_controller.rb +16 -0
  113. data/app/controllers/messages_controller.rb +32 -0
  114. data/app/controllers/topics_controller.rb +5 -0
  115. data/app/controllers/users_controller.rb +32 -0
  116. data/app/helpers/application_helper.rb +41 -0
  117. data/app/helpers/assets_helper.rb +24 -0
  118. data/app/helpers/assignment_result_helper.rb +47 -0
  119. data/app/helpers/assistance_box_helper.rb +9 -0
  120. data/app/helpers/authors_helper.rb +10 -0
  121. data/app/helpers/breadcrumbs_helper.rb +59 -0
  122. data/app/helpers/choices_helper.rb +5 -0
  123. data/app/helpers/concerns/with_student_path_navigation.rb +19 -0
  124. data/app/helpers/concerns/with_student_path_navigation/continue_navigation.rb +23 -0
  125. data/app/helpers/concerns/with_student_path_navigation/finish_navigation.rb +12 -0
  126. data/app/helpers/concerns/with_student_path_navigation/navigation.rb +36 -0
  127. data/app/helpers/concerns/with_student_path_navigation/revisit_navigation.rb +23 -0
  128. data/app/helpers/contextualization_result_helper.rb +36 -0
  129. data/app/helpers/discussions_helper.rb +176 -0
  130. data/app/helpers/editor_helper.rb +13 -0
  131. data/app/helpers/editor_tabs_helper.rb +21 -0
  132. data/app/helpers/email_helper.rb +20 -0
  133. data/app/helpers/exercise_input_helper.rb +118 -0
  134. data/app/helpers/icons_helper.rb +63 -0
  135. data/app/helpers/links_helper.rb +81 -0
  136. data/app/helpers/locale_helper.rb +11 -0
  137. data/app/helpers/menu_bar_helper.rb +41 -0
  138. data/app/helpers/messages_helper.rb +25 -0
  139. data/app/helpers/multiple_file_editor_helper.rb +14 -0
  140. data/app/helpers/open_graph_helper.rb +12 -0
  141. data/app/helpers/organization_breadcrumbs_helper.rb +24 -0
  142. data/app/helpers/organization_list_helper.rb +5 -0
  143. data/app/helpers/overlapped_buttons_helper.rb +17 -0
  144. data/app/helpers/page_title_helper.rb +11 -0
  145. data/app/helpers/progress_bar_helper.rb +8 -0
  146. data/app/helpers/progress_helper.rb +19 -0
  147. data/app/helpers/runner_assets_helper.rb +9 -0
  148. data/app/helpers/version_helper.rb +5 -0
  149. data/app/mailers/application_mailer.rb +16 -0
  150. data/app/mailers/user_mailer.rb +24 -0
  151. data/app/views/appendixes/show.html.erb +7 -0
  152. data/app/views/book/show.html.erb +58 -0
  153. data/app/views/book_discussions/index.html.erb +23 -0
  154. data/app/views/chapters/show.html.erb +35 -0
  155. data/app/views/complements/show.html.erb +1 -0
  156. data/app/views/discussions/_description_message.html.erb +17 -0
  157. data/app/views/discussions/_message.html.erb +28 -0
  158. data/app/views/discussions/_message_container.html.erb +8 -0
  159. data/app/views/discussions/_new_message.html.erb +21 -0
  160. data/app/views/discussions/index.html.erb +30 -0
  161. data/app/views/discussions/show.html.erb +78 -0
  162. data/app/views/errors/forbidden.html.erb +18 -0
  163. data/app/views/errors/gone.html.erb +14 -0
  164. data/app/views/errors/internal_server_error.html.erb +19 -0
  165. data/app/views/errors/not_found.html.erb +19 -0
  166. data/app/views/errors/unauthorized.html.erb +14 -0
  167. data/app/views/exams/show.html.erb +1 -0
  168. data/app/views/exercise_solutions/_contextualization_results_body.html.erb +19 -0
  169. data/app/views/exercise_solutions/_contextualization_results_container.html.erb +4 -0
  170. data/app/views/exercise_solutions/_expectations.html.erb +13 -0
  171. data/app/views/exercise_solutions/_kids_results.html.erb +18 -0
  172. data/app/views/exercise_solutions/_kids_results_button.html.erb +11 -0
  173. data/app/views/exercise_solutions/_out_of_attempts.html.erb +5 -0
  174. data/app/views/exercise_solutions/_results.html.erb +44 -0
  175. data/app/views/exercise_solutions/_results_button.html.erb +9 -0
  176. data/app/views/exercise_solutions/_results_hidden.html.erb +5 -0
  177. data/app/views/exercise_solutions/_results_title.html.erb +3 -0
  178. data/app/views/exercises/_exercise_assignment.html.erb +20 -0
  179. data/app/views/exercises/_read_only.html.erb +106 -0
  180. data/app/views/exercises/show.html.erb +63 -0
  181. data/app/views/invitations/_invitation_form.html.erb +23 -0
  182. data/app/views/invitations/show.html.erb +17 -0
  183. data/app/views/layouts/_authoring.html.erb +12 -0
  184. data/app/views/layouts/_copyright.html.erb +2 -0
  185. data/app/views/layouts/_discussions.html.erb +68 -0
  186. data/app/views/layouts/_error.html.erb +10 -0
  187. data/app/views/layouts/_exercise_skipped.html.erb +28 -0
  188. data/app/views/layouts/_guide.html.erb +67 -0
  189. data/app/views/layouts/_kids.html.erb +24 -0
  190. data/app/views/layouts/_main.html.erb +49 -0
  191. data/app/views/layouts/_messages.html.erb +21 -0
  192. data/app/views/layouts/_mixed_results.erb +3 -0
  193. data/app/views/layouts/_organization_chooser.html.erb +28 -0
  194. data/app/views/layouts/_organizations_listing.html.erb +14 -0
  195. data/app/views/layouts/_progress.html.erb +1 -0
  196. data/app/views/layouts/_progress_bar.html.erb +6 -0
  197. data/app/views/layouts/_progress_listing.html.erb +10 -0
  198. data/app/views/layouts/_result.html.erb +4 -0
  199. data/app/views/layouts/_runner_assets.html.erb +19 -0
  200. data/app/views/layouts/_social_media.html.erb +4 -0
  201. data/app/views/layouts/_submission_result_error.html.erb +6 -0
  202. data/app/views/layouts/_submission_result_error_body.html.erb +6 -0
  203. data/app/views/layouts/_test_results.html.erb +32 -0
  204. data/app/views/layouts/_timer.html.erb +10 -0
  205. data/app/views/layouts/application.html.erb +77 -0
  206. data/app/views/layouts/embedded.html.erb +28 -0
  207. data/app/views/layouts/exercise_inputs/editors/_code.html.erb +17 -0
  208. data/app/views/layouts/exercise_inputs/editors/_custom.html.erb +7 -0
  209. data/app/views/layouts/exercise_inputs/editors/_free_form.html.erb +4 -0
  210. data/app/views/layouts/exercise_inputs/editors/_hidden.html.erb +1 -0
  211. data/app/views/layouts/exercise_inputs/editors/_multiple_choice.html.erb +10 -0
  212. data/app/views/layouts/exercise_inputs/editors/_multiple_files.html.erb +40 -0
  213. data/app/views/layouts/exercise_inputs/editors/_single_choice.html.erb +8 -0
  214. data/app/views/layouts/exercise_inputs/editors/_text.html.erb +7 -0
  215. data/app/views/layouts/exercise_inputs/editors/_upload.html.erb +4 -0
  216. data/app/views/layouts/exercise_inputs/forms/_form.html.erb +14 -0
  217. data/app/views/layouts/exercise_inputs/forms/_interactive_form.html.erb +50 -0
  218. data/app/views/layouts/exercise_inputs/forms/_kids_form.html.erb +12 -0
  219. data/app/views/layouts/exercise_inputs/forms/_playground_form.html.erb +26 -0
  220. data/app/views/layouts/exercise_inputs/forms/_problem_form.html.erb +73 -0
  221. data/app/views/layouts/exercise_inputs/forms/_reading_form.html.erb +3 -0
  222. data/app/views/layouts/exercise_inputs/layouts/_input_bottom.html.erb +15 -0
  223. data/app/views/layouts/exercise_inputs/layouts/_input_kids.html.erb +51 -0
  224. data/app/views/layouts/exercise_inputs/layouts/_input_right.html.erb +13 -0
  225. data/app/views/layouts/exercise_inputs/read_only_editors/_code.html.erb +3 -0
  226. data/app/views/layouts/exercise_inputs/read_only_editors/_custom.html.erb +6 -0
  227. data/app/views/layouts/exercise_inputs/read_only_editors/_free_form.html.erb +4 -0
  228. data/app/views/layouts/exercise_inputs/read_only_editors/_multiple_choice.html.erb +8 -0
  229. data/app/views/layouts/exercise_inputs/read_only_editors/_multiple_files.html.erb +29 -0
  230. data/app/views/layouts/exercise_inputs/read_only_editors/_single_choice.html.erb +8 -0
  231. data/app/views/layouts/exercise_inputs/read_only_editors/_text.erb +3 -0
  232. data/app/views/layouts/mailer.html.erb +487 -0
  233. data/app/views/layouts/mailer.text.erb +1 -0
  234. data/app/views/layouts/modals/_guide_corollary.html.erb +27 -0
  235. data/app/views/layouts/modals/_kids_context.html.erb +33 -0
  236. data/app/views/layouts/modals/_kids_results.html.erb +26 -0
  237. data/app/views/layouts/modals/_kids_results_aborted.html.erb +25 -0
  238. data/app/views/layouts/modals/_new_discussion.html.erb +27 -0
  239. data/app/views/layouts/modals/_new_message.html.erb +36 -0
  240. data/app/views/lessons/show.html.erb +1 -0
  241. data/app/views/messages/errors.html.erb +1 -0
  242. data/app/views/user_mailer/1st_reminder.html.erb +349 -0
  243. data/app/views/user_mailer/1st_reminder.text.erb +13 -0
  244. data/app/views/user_mailer/2nd_reminder.html.erb +349 -0
  245. data/app/views/user_mailer/2nd_reminder.text.erb +13 -0
  246. data/app/views/user_mailer/3rd_reminder.html.erb +349 -0
  247. data/app/views/user_mailer/3rd_reminder.text.erb +13 -0
  248. data/app/views/user_mailer/no_submissions_reminder.html.erb +349 -0
  249. data/app/views/user_mailer/no_submissions_reminder.text.erb +13 -0
  250. data/app/views/users/_profile_fields.html.erb +20 -0
  251. data/app/views/users/_user_form.html.erb +11 -0
  252. data/app/views/users/show.html.erb +60 -0
  253. data/config/i18n-tasks.yml +98 -0
  254. data/config/initializers/form_builder.rb +7 -0
  255. data/config/initializers/omniauth.rb +5 -0
  256. data/config/initializers/session_store.rb +1 -0
  257. data/config/routes.rb +106 -0
  258. data/lib/mumuki/laboratory.rb +48 -0
  259. data/lib/mumuki/laboratory/controllers.rb +13 -0
  260. data/lib/mumuki/laboratory/controllers/authorization.rb +10 -0
  261. data/lib/mumuki/laboratory/controllers/content.rb +12 -0
  262. data/lib/mumuki/laboratory/controllers/current_organization.rb +16 -0
  263. data/lib/mumuki/laboratory/controllers/disabling.rb +5 -0
  264. data/lib/mumuki/laboratory/controllers/dynamic_errors.rb +74 -0
  265. data/lib/mumuki/laboratory/controllers/embedded_mode.rb +45 -0
  266. data/lib/mumuki/laboratory/controllers/exercise_seed.rb +11 -0
  267. data/lib/mumuki/laboratory/controllers/nested_in_exercise.rb +11 -0
  268. data/lib/mumuki/laboratory/controllers/notifications.rb +32 -0
  269. data/lib/mumuki/laboratory/controllers/results_rendering.rb +63 -0
  270. data/lib/mumuki/laboratory/engine.rb +32 -0
  271. data/lib/mumuki/laboratory/events/events.rb +39 -0
  272. data/lib/mumuki/laboratory/extensions.rb +1 -0
  273. data/lib/mumuki/laboratory/extensions/request.rb +3 -0
  274. data/lib/mumuki/laboratory/locales/datetime.es.yml +25 -0
  275. data/lib/mumuki/laboratory/locales/en.yml +261 -0
  276. data/lib/mumuki/laboratory/locales/es.yml +288 -0
  277. data/lib/mumuki/laboratory/locales/pt.yml +264 -0
  278. data/lib/mumuki/laboratory/locales/views.es.yml +9 -0
  279. data/lib/mumuki/laboratory/version.rb +5 -0
  280. data/lib/tasks/assignments.rake +29 -0
  281. data/lib/tasks/events.rake +19 -0
  282. data/lib/tasks/messages.rake +17 -0
  283. data/lib/tasks/users.rake +12 -0
  284. data/public/422.html +67 -0
  285. data/public/character/kibi/context.svg +1 -0
  286. data/public/character/kibi/failure.svg +1 -0
  287. data/public/character/kibi/jump.svg +1 -0
  288. data/public/character/kibi/success2_l.svg +1 -0
  289. data/public/character/kibi/success_l.svg +1 -0
  290. data/public/character/magnifying_glass/apparition.svg +1 -0
  291. data/public/character/magnifying_glass/loop.svg +1 -0
  292. data/public/compass_rose.svg +1427 -0
  293. data/public/email-banner.png +0 -0
  294. data/public/favicon.ico +0 -0
  295. data/public/kibi.svg +2 -0
  296. data/public/logo-alt-large.png +0 -0
  297. data/public/logo-alt.png +0 -0
  298. data/spec/api_helper.rb +7 -0
  299. data/spec/capybara_helper.rb +12 -0
  300. data/spec/controllers/api_clients_controller.rb +26 -0
  301. data/spec/controllers/chapters_controller_spec.rb +17 -0
  302. data/spec/controllers/confirmations_controller_spec.rb +20 -0
  303. data/spec/controllers/courses_api_controller_spec.rb +28 -0
  304. data/spec/controllers/discussions_controller_spec.rb +64 -0
  305. data/spec/controllers/exercise_solutions_controller_spec.rb +88 -0
  306. data/spec/controllers/guide_progress_controller_spec.rb +40 -0
  307. data/spec/controllers/invitations_controller_spec.rb +26 -0
  308. data/spec/controllers/messages_controller_spec.rb +32 -0
  309. data/spec/controllers/organizations_api_controller_spec.rb +239 -0
  310. data/spec/controllers/students_api_controller_spec.rb +106 -0
  311. data/spec/controllers/users_api_controller_spec.rb +65 -0
  312. data/spec/controllers/users_controller_spec.rb +21 -0
  313. data/spec/dummy/Rakefile +6 -0
  314. data/spec/dummy/bin/bundle +3 -0
  315. data/spec/dummy/bin/rails +4 -0
  316. data/spec/dummy/bin/rake +4 -0
  317. data/spec/dummy/bin/setup +38 -0
  318. data/spec/dummy/bin/update +29 -0
  319. data/spec/dummy/bin/yarn +11 -0
  320. data/spec/dummy/config.ru +5 -0
  321. data/spec/dummy/config/application.rb +17 -0
  322. data/spec/dummy/config/boot.rb +5 -0
  323. data/spec/dummy/config/cable.yml +10 -0
  324. data/spec/dummy/config/database.travis.yml +4 -0
  325. data/spec/dummy/config/database.yml +19 -0
  326. data/spec/dummy/config/environment.rb +5 -0
  327. data/spec/dummy/config/environments/development.rb +55 -0
  328. data/spec/dummy/config/environments/test.rb +54 -0
  329. data/spec/dummy/config/initializers/assets.rb +14 -0
  330. data/spec/dummy/config/initializers/cookies_serializer.rb +5 -0
  331. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  332. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  333. data/spec/dummy/config/locales/en.yml +33 -0
  334. data/spec/dummy/config/puma.rb +14 -0
  335. data/spec/dummy/config/rabbit.yml +7 -0
  336. data/spec/dummy/config/routes.rb +2 -0
  337. data/spec/dummy/config/secrets.yml +5 -0
  338. data/spec/dummy/config/spring.rb +6 -0
  339. data/spec/dummy/db/schema.rb +387 -0
  340. data/spec/dummy/db/seeds.rb +32 -0
  341. data/spec/dummy/package.json +5 -0
  342. data/spec/dummy/public/character/animations.json +34 -0
  343. data/spec/dummy/public/error/401.svg +218 -0
  344. data/spec/dummy/public/error/403.svg +218 -0
  345. data/spec/dummy/public/error/404.svg +218 -0
  346. data/spec/dummy/public/error/410.svg +218 -0
  347. data/spec/dummy/public/error/500.svg +218 -0
  348. data/spec/dummy/public/error/timeout_1.svg +1 -0
  349. data/spec/dummy/public/error/timeout_2.svg +3 -0
  350. data/spec/dummy/public/error/timeout_3.svg +1 -0
  351. data/spec/evaluation_helper.rb +19 -0
  352. data/spec/features/chapter_spec.rb +53 -0
  353. data/spec/features/choose_organization_spec.rb +92 -0
  354. data/spec/features/complements_flow_spec.rb +16 -0
  355. data/spec/features/disable_user_flow_spec.rb +34 -0
  356. data/spec/features/dynamic_exam_spec.rb +40 -0
  357. data/spec/features/exams_flow_spec.rb +136 -0
  358. data/spec/features/exercise_flow_spec.rb +240 -0
  359. data/spec/features/guide_reset_spec.rb +60 -0
  360. data/spec/features/guides_flow_spec.rb +126 -0
  361. data/spec/features/home_private_flow_spec.rb +78 -0
  362. data/spec/features/home_public_flow_spec.rb +62 -0
  363. data/spec/features/invitations_flow_spec.rb +46 -0
  364. data/spec/features/lessons_flow_spec.rb +21 -0
  365. data/spec/features/links_flow_spec.rb +63 -0
  366. data/spec/features/login_flow_spec.rb +69 -0
  367. data/spec/features/menu_bar_spec.rb +116 -0
  368. data/spec/features/not_found_private_flow_spec.rb +43 -0
  369. data/spec/features/not_found_public_flow_spec.rb +40 -0
  370. data/spec/features/profile_flow_spec.rb +96 -0
  371. data/spec/features/progressive_tips_spec.rb +48 -0
  372. data/spec/features/runner_assets_spec.rb +58 -0
  373. data/spec/features/standard_flow_spec.rb +32 -0
  374. data/spec/features/topic_flow_spec.rb +27 -0
  375. data/spec/helpers/application_helper_spec.rb +29 -0
  376. data/spec/helpers/authors_helper_spec.rb +18 -0
  377. data/spec/helpers/breadcrumbs_helper_spec.rb +129 -0
  378. data/spec/helpers/email_helper_spec.rb +14 -0
  379. data/spec/helpers/exercise_input_helper_spec.rb +85 -0
  380. data/spec/helpers/icons_helper_spec.rb +22 -0
  381. data/spec/helpers/page_title_helper_spec.rb +19 -0
  382. data/spec/helpers/test_results_rendering_spec.rb +105 -0
  383. data/spec/helpers/with_choices_spec.rb +14 -0
  384. data/spec/helpers/with_navigation_spec.rb +97 -0
  385. data/spec/login_helper.rb +23 -0
  386. data/spec/mailers/previews/user_mailer_preview.rb +9 -0
  387. data/spec/mailers/user_mailer_spec.rb +181 -0
  388. data/spec/spec_helper.rb +76 -0
  389. data/vendor/assets/javascripts/analytics.js +4 -0
  390. data/vendor/assets/javascripts/codemirror-autorefresh.js +46 -0
  391. data/vendor/assets/javascripts/codemirror-modes/assembly_x86.js +967 -0
  392. data/vendor/assets/javascripts/codemirror-modes/autocomplete.js +44 -0
  393. data/vendor/assets/javascripts/codemirror-modes/clike.min.js +1 -0
  394. data/vendor/assets/javascripts/codemirror-modes/closebrackets.min.js +1 -0
  395. data/vendor/assets/javascripts/codemirror-modes/css-hint.min.js +1 -0
  396. data/vendor/assets/javascripts/codemirror-modes/css.min.js +1 -0
  397. data/vendor/assets/javascripts/codemirror-modes/elixir.js +1284 -0
  398. data/vendor/assets/javascripts/codemirror-modes/gobstones.js +71 -0
  399. data/vendor/assets/javascripts/codemirror-modes/haskell-autocomplete.js +1 -0
  400. data/vendor/assets/javascripts/codemirror-modes/haskell.min.js +1 -0
  401. data/vendor/assets/javascripts/codemirror-modes/html-hint.min.js +1 -0
  402. data/vendor/assets/javascripts/codemirror-modes/htmlmixed.min.js +1 -0
  403. data/vendor/assets/javascripts/codemirror-modes/index.js +1 -0
  404. data/vendor/assets/javascripts/codemirror-modes/javascript-hint.min.js +1 -0
  405. data/vendor/assets/javascripts/codemirror-modes/javascript.min.js +1 -0
  406. data/vendor/assets/javascripts/codemirror-modes/markdown.min.js +1 -0
  407. data/vendor/assets/javascripts/codemirror-modes/matchbrackets.min.js +1 -0
  408. data/vendor/assets/javascripts/codemirror-modes/php.js +236 -0
  409. data/vendor/assets/javascripts/codemirror-modes/placeholder.min.js +1 -0
  410. data/vendor/assets/javascripts/codemirror-modes/prolog-autocomplete.js +1 -0
  411. data/vendor/assets/javascripts/codemirror-modes/prolog.js +1089 -0
  412. data/vendor/assets/javascripts/codemirror-modes/python.min.js +1 -0
  413. data/vendor/assets/javascripts/codemirror-modes/ruby-autocomplete.js +3 -0
  414. data/vendor/assets/javascripts/codemirror-modes/ruby.min.js +1 -0
  415. data/vendor/assets/javascripts/codemirror-modes/shell.min.js +1 -0
  416. data/vendor/assets/javascripts/codemirror-modes/show-hint.min.js +1 -0
  417. data/vendor/assets/javascripts/codemirror-modes/sql-hint.min.js +1 -0
  418. data/vendor/assets/javascripts/codemirror-modes/sql.min.js +1 -0
  419. data/vendor/assets/javascripts/codemirror-modes/wollok-autocomplete.js +3 -0
  420. data/vendor/assets/javascripts/codemirror-modes/wollok.js +1035 -0
  421. data/vendor/assets/javascripts/codemirror-modes/xml-hint.min.js +1 -0
  422. data/vendor/assets/javascripts/codemirror-modes/xml.min.js +1 -0
  423. data/vendor/assets/javascripts/codemirror-simple-mode.js +216 -0
  424. data/vendor/assets/javascripts/codemirror.min.js +1 -0
  425. data/vendor/assets/javascripts/hotjar.js +8 -0
  426. data/vendor/assets/javascripts/jquery-console.js +847 -0
  427. data/vendor/assets/javascripts/webcomponents-lite.js +12 -0
  428. data/vendor/assets/stylesheets/codemirror/codemirror.min.css +2 -0
  429. data/vendor/assets/stylesheets/codemirror/show-hint.min.css +2 -0
  430. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/AUTHORS +16 -0
  431. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/Gemfile +14 -0
  432. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/LICENSE +661 -0
  433. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/README.md +159 -0
  434. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/Rakefile +35 -0
  435. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/api_client.rb +31 -0
  436. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/application_record.rb +128 -0
  437. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/assignment.rb +243 -0
  438. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/avatar.rb +5 -0
  439. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/book.rb +65 -0
  440. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/chapter.rb +33 -0
  441. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/complement.rb +14 -0
  442. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/assistable.rb +25 -0
  443. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/contextualization.rb +137 -0
  444. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/disabling.rb +37 -0
  445. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/friendly_name.rb +10 -0
  446. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/guide_container.rb +61 -0
  447. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/navigation/parent_navigation.rb +27 -0
  448. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/navigation/siblings_navigation.rb +28 -0
  449. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/navigation/terminal_navigation.rb +21 -0
  450. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/submittable/confirmable.rb +5 -0
  451. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/submittable/queriable.rb +9 -0
  452. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/submittable/questionable.rb +6 -0
  453. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/submittable/solvable.rb +32 -0
  454. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/submittable/submittable.rb +11 -0
  455. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/submittable/triable.rb +9 -0
  456. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/topic_container.rb +24 -0
  457. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_assignments.rb +33 -0
  458. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_case_insensitive_search.rb +7 -0
  459. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_content.rb +34 -0
  460. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_description.rb +12 -0
  461. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_discussion_creation.rb +10 -0
  462. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_discussion_creation/subscription.rb +37 -0
  463. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_discussion_creation/upvote.rb +28 -0
  464. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_discussion_status.rb +11 -0
  465. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_discussions.rb +24 -0
  466. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_editor.rb +39 -0
  467. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_expectations.rb +33 -0
  468. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_language.rb +14 -0
  469. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_layout.rb +7 -0
  470. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_locale.rb +7 -0
  471. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_messages.rb +22 -0
  472. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_name.rb +15 -0
  473. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_number.rb +9 -0
  474. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_profile.rb +12 -0
  475. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_progress.rb +27 -0
  476. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_randomizations.rb +43 -0
  477. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_reminders.rb +74 -0
  478. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_scoped_queries.rb +47 -0
  479. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_scoped_queries/filter.rb +15 -0
  480. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_scoped_queries/page.rb +10 -0
  481. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_scoped_queries/sort.rb +47 -0
  482. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_slug.rb +61 -0
  483. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_usages.rb +42 -0
  484. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_user_navigation.rb +9 -0
  485. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/content.rb +35 -0
  486. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/course.rb +51 -0
  487. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/discussion.rb +138 -0
  488. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/event.rb +2 -0
  489. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exam.rb +177 -0
  490. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exam_authorization.rb +10 -0
  491. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exercise.rb +255 -0
  492. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exercise/challenge.rb +25 -0
  493. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exercise/interactive.rb +41 -0
  494. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exercise/playground.rb +23 -0
  495. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exercise/problem.rb +53 -0
  496. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exercise/queriable_challenge.rb +5 -0
  497. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exercise/reading.rb +17 -0
  498. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/guide.rb +131 -0
  499. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/indicator.rb +77 -0
  500. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/invitation.rb +61 -0
  501. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/language.rb +128 -0
  502. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/lesson.rb +24 -0
  503. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/message.rb +68 -0
  504. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/organization.rb +167 -0
  505. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/progress.rb +15 -0
  506. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/stats.rb +24 -0
  507. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/subscription.rb +12 -0
  508. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/topic.rb +63 -0
  509. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/upvote.rb +4 -0
  510. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/usage.rb +33 -0
  511. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/user.rb +192 -0
  512. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/with_stats.rb +9 -0
  513. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/bin/rails +14 -0
  514. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141120231135_create_exercises.rb +11 -0
  515. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141120231735_create_submissions.rb +9 -0
  516. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141121001134_add_status_to_submission.rb +5 -0
  517. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141121013100_add_result_to_submission.rb +5 -0
  518. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141121122921_add_language_to_exercise.rb +5 -0
  519. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141124023403_create_users.rb +13 -0
  520. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141124032114_add_user_to_submission.rb +5 -0
  521. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141207235356_add_submissions_count_to_exercise.rb +5 -0
  522. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141208005050_add_author_to_exercise.rb +5 -0
  523. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141208005125_rename_user_to_submitter.rb +5 -0
  524. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141212044717_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb +31 -0
  525. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141212044718_add_missing_unique_indices.acts_as_taggable_on_engine.rb +20 -0
  526. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141212044719_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb +10 -0
  527. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141212044720_add_missing_taggable_index.acts_as_taggable_on_engine.rb +10 -0
  528. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141221213109_create_exercise_repos.rb +11 -0
  529. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141221215035_add_origin_to_exercise.rb +6 -0
  530. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141225034553_rename_exercise_repo_to_guide.rb +6 -0
  531. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141225143218_rename_github_url_to_github_repository.rb +5 -0
  532. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141225195510_create_imports.rb +9 -0
  533. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141225211350_add_status_to_import.rb +6 -0
  534. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141226010922_add_result_to_import.rb +5 -0
  535. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141228151351_change_exercise_description_to_text.rb +5 -0
  536. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141231074400_create_languages.rb +13 -0
  537. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141231191842_change_language_column_type.rb +6 -0
  538. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141231192030_rename_author_to_plugin_author.rb +5 -0
  539. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141231234940_increment_language_id.rb +5 -0
  540. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150108014005_add_locale_to_exercise.rb +5 -0
  541. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150111160450_add_uniques_to_languages.rb +6 -0
  542. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150125042217_add_test_syntax_hint_to_language.rb +5 -0
  543. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150125051529_add_hint_to_exercise.rb +5 -0
  544. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150126213310_devise_create_admin_users.rb +42 -0
  545. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150126213316_create_active_admin_comments.rb +19 -0
  546. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150315072037_add_description_to_guide.rb +6 -0
  547. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150317052723_remove_language_author.rb +5 -0
  548. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150317053307_remove_language_hint.rb +5 -0
  549. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150321150030_add_extra_code_to_exercise.rb +5 -0
  550. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150328211331_create_expectations.rb +11 -0
  551. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150329163753_add_email_to_user.rb +5 -0
  552. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150330020553_add_expectation_results_to_submission.rb +5 -0
  553. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150405231013_create_exports.rb +9 -0
  554. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150405232603_add_default_guide_to_user.rb +5 -0
  555. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150406020152_add_last_submission_date_to_user.rb +5 -0
  556. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150407225356_add_unique_index_to_users.rb +5 -0
  557. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150408020712_add_status_to_export.rb +6 -0
  558. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150408022654_add_commiter_to_export.rb +5 -0
  559. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150411215351_change_guide_description_to_text.rb +5 -0
  560. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150412042959_add_committer_to_import.rb +5 -0
  561. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150412201651_remove_default_guide_from_user.rb +5 -0
  562. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150415053559_add_image_url_to_user.rb +5 -0
  563. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150415211341_add_position_to_exercise.rb +5 -0
  564. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150415234515_create_relationships.rb +10 -0
  565. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150417052238_add_original_id_format_to_guide.rb +5 -0
  566. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150418055334_add_locale_and_language_to_guide.rb +6 -0
  567. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150424180136_add_guides_users_association_tables.rb +14 -0
  568. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150428195229_add_guides_suggestions.rb +8 -0
  569. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150507215646_remove_relationship.rb +5 -0
  570. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150508015148_create_api_tokens.rb +10 -0
  571. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150509191428_add_name_to_token.rb +5 -0
  572. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150512235847_add_feedback_to_submission.rb +5 -0
  573. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150513203636_create_categories.rb +12 -0
  574. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150513204102_create_starting_points.rb +11 -0
  575. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150517074730_add_extra_code_to_guide.rb +5 -0
  576. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150518174912_add_language_output_visibility_flag.rb +5 -0
  577. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150518185508_add_content_type_to_language.rb +5 -0
  578. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150519131033_set_default_locale_for_guide.rb +5 -0
  579. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150519174628_remove_language_name_uniq.rb +6 -0
  580. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150519220307_rename_api_token_columns.rb +6 -0
  581. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150520011404_convert_starting_point_into_path.rb +12 -0
  582. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150529135324_add_corollary_to_guide.rb +5 -0
  583. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150529141430_add_corollary_to_exercise.rb +5 -0
  584. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150531164450_add_test_extension_to_language.rb +5 -0
  585. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150603003459_remove_language_extension_uniq.rb +6 -0
  586. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150603020457_remove_guide_name_uniq.rb +6 -0
  587. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150605065543_add_highlight_mode.rb +5 -0
  588. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150614173852_add_learning_flag.rb +5 -0
  589. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150614180512_add_beta_flag.rb +5 -0
  590. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150614191257_add_last_exercise.rb +5 -0
  591. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150620181839_add_layout_to_exercise.rb +5 -0
  592. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150701030644_add_unique_to_language_name_index.rb +6 -0
  593. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150701212609_add_test_results_to_submission.rb +5 -0
  594. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150708212022_add_position_to_category.rb +5 -0
  595. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150708212836_change_category_description_to_text.rb +5 -0
  596. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150713120916_add_expectations_column_to_exercise.rb +5 -0
  597. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150714000532_remove_expectations_relation.rb +5 -0
  598. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150722003532_create_event_subscribers.rb +10 -0
  599. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150722030820_create_solutions.rb +16 -0
  600. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150722142019_add_submissions_count_to_solution.rb +5 -0
  601. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150723052640_add_submission_id_to_solution.rb +5 -0
  602. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150724062215_add_language_description.rb +5 -0
  603. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150724062233_add_category_links.rb +5 -0
  604. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150724062249_add_category_long_description.rb +5 -0
  605. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150819194207_convert_submissions_into_solutions.rb +34 -0
  606. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150819202310_remove_submissions.rb +5 -0
  607. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150826023647_create_friendly_id_slugs.rb +15 -0
  608. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150826023757_add_slug_to_guides.rb +6 -0
  609. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150826024859_add_slug_to_exercises.rb +6 -0
  610. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150828013106_add_remember_me_token_to_user.rb +5 -0
  611. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150829211550_add_queriable_to_language.rb +5 -0
  612. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150829215524_add_expectations_column_to_guide.rb +5 -0
  613. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150905214532_rename_exercise_title_to_name.rb +5 -0
  614. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151001143118_rename_solution_to_assignment.rb +5 -0
  615. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151001183858_rename_assignment_content_to_solution.rb +5 -0
  616. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151003003856_add_type_to_exercise.rb +5 -0
  617. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151020145904_remove_guide_git_information.rb +7 -0
  618. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151104163433_create_tenants.rb +9 -0
  619. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151104172241_create_path_rules.rb +11 -0
  620. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151104173956_remove_guide_position.rb +5 -0
  621. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151104220859_remove_path_from_guide.rb +5 -0
  622. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151107232242_move_slug_to_path_rule.rb +6 -0
  623. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151108173838_remove_slugs.rb +5 -0
  624. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151108182857_remove_act_as_taggable_taggings.rb +6 -0
  625. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151108183319_add_tags_array.rb +5 -0
  626. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151206072741_rename_guide_extra_code_to_extra.rb +5 -0
  627. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151208224736_rename_path_rule_to_chapter_guide.rb +5 -0
  628. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151208224907_rename_category_to_chapter.rb +5 -0
  629. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151208225503_rename_chapter_position_to_number.rb +5 -0
  630. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151208231749_rename_chapter_guide_path_to_chapter.rb +5 -0
  631. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151208233707_rename_url_to_slug.rb +5 -0
  632. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151209021925_add_locale_to_tenant.rb +5 -0
  633. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151210204646_remove_language_extensions.rb +6 -0
  634. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151211032811_drop_collaborators.rb +5 -0
  635. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151211033000_drop_contributors.rb +5 -0
  636. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151211034943_remove_authors.rb +6 -0
  637. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151211035206_add_contact_email_to_tenant.rb +5 -0
  638. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151218172557_drop_import.rb +6 -0
  639. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151222153838_add_default_content_to_exercise.rb +5 -0
  640. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151223014138_change_language_icon_url_into_devicon_id.rb +5 -0
  641. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151224174248_remove_original_id.rb +5 -0
  642. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151229153839_replace_learning_with_type_in_guides.rb +6 -0
  643. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160108191156_rename_extra_code.rb +5 -0
  644. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160108215313_remove_unique_index_from_users.rb +5 -0
  645. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160119024542_add_preface_to_tenant.rb +5 -0
  646. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160119040351_rename_tenant_to_book.rb +5 -0
  647. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160119191508_rename_position_to_number.rb +6 -0
  648. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160120171336_add_type_to_event_suscriber.rb +5 -0
  649. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160205184243_add_bibliotheca_id_to_exercise.rb +5 -0
  650. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160214191548_required_bibliotheca_id.rb +5 -0
  651. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160222165337_add_hidden_flag_to_extra_code.rb +5 -0
  652. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160222192958_rename_chapter_guide_to_lesson.rb +5 -0
  653. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160307184203_add_prompt_to_language.rb +5 -0
  654. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160331210507_add_comment_model.rb +13 -0
  655. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160401142104_add_readed_to_comment.rb +5 -0
  656. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160404214826_change_readed_to_read.rb +5 -0
  657. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160405184624_change_submission_id_to_string.rb +5 -0
  658. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160412193123_change_content_comment_to_text.rb +5 -0
  659. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160414150800_remove_tenant_subscriber.rb +5 -0
  660. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160426171156_add_new_expectations_to_exercise.rb +5 -0
  661. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160427195306_create_organizations.rb +12 -0
  662. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160427223805_add_chapter_book.rb +5 -0
  663. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160427234538_create_topics.rb +11 -0
  664. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160427235605_add_topic_to_chapter.rb +5 -0
  665. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160428162753_add_topic_id_to_lesson.rb +5 -0
  666. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160428175230_create_exams.rb +10 -0
  667. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160428224823_add_duration_to_exam.rb +5 -0
  668. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160429174901_add_start_end_time_to_exam.rb +6 -0
  669. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160429181825_add_exam_user.rb +8 -0
  670. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160430225048_create_complements.rb +10 -0
  671. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160430231035_remove_chapter_lesson.rb +5 -0
  672. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160430235331_remove_chapter_name_description.rb +6 -0
  673. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160430235656_remove_chapter_locale_image_url.rb +6 -0
  674. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160501003355_add_long_description_to_topic.rb +5 -0
  675. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160501071847_create_usages.rb +11 -0
  676. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160506012945_add_slug_to_topic_and_book.rb +9 -0
  677. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160506035230_remove_slug_from_lesson.rb +5 -0
  678. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160506041446_rename_preface_to_description.rb +5 -0
  679. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160506172239_remove_event_subscriber.rb +5 -0
  680. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160506175610_remove_api_tokens.rb +5 -0
  681. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160506181152_remove_admin_user.rb +5 -0
  682. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160506182333_remove_admin_comments.rb +5 -0
  683. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160510183137_add_private_to_organization.rb +5 -0
  684. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160512134321_add_organization_image.rb +5 -0
  685. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160516191936_add_stateful_console_to_language.rb +5 -0
  686. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160517215229_add_classroom_idto_exams.rb +6 -0
  687. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160518212552_rename_exam_users_to_exam_authorization.rb +5 -0
  688. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160518213912_add_user_start_data_in_exam.rb +6 -0
  689. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160519045220_add_id_to_exam_authorizations.rb +5 -0
  690. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160520141716_remove_chapter_links_and_long_description.rb +6 -0
  691. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160520153115_change_exam_classroom_id_to_string.rb +5 -0
  692. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160526172026_remove_not_null_constraint_exam_duration.rb +6 -0
  693. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160526182119_add_metadata_to_user.rb +5 -0
  694. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160617175235_add_last_organization_to_user.rb +5 -0
  695. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160617195350_change_metadata_to_text.rb +5 -0
  696. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160701195105_add_login_methods_to_organization.rb +5 -0
  697. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160705160244_add_manual_evaluation_to_exercise.rb +5 -0
  698. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160715001254_rename_test_runner_url.rb +5 -0
  699. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160729194600_change_default_content_to_text.rb +5 -0
  700. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160812003350_change_default_login_methods.rb +5 -0
  701. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160815225314_rename_long_description_to_appendix.rb +5 -0
  702. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160819181024_make_organization_private_by_default.rb +5 -0
  703. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160830160937_add_authoring_information_to_guide.rb +6 -0
  704. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160907010315_remove_exercise_slug.rb +5 -0
  705. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161004202742_add_editor_to_problem.rb +6 -0
  706. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161018142147_add_language_extension.rb +5 -0
  707. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161107171305_remove_devicon_column_from_language.rb +5 -0
  708. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161222182015_rename_uid_to_social_id.rb +5 -0
  709. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161222182724_add_uid_to_user.rb +5 -0
  710. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161226181932_remove_metadata_from_users.rb +5 -0
  711. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161230055953_add_not_null_constraint_to_uid_in_user.rb +5 -0
  712. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161231224116_add_permissions_to_user.rb +5 -0
  713. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170125185012_add_new_fields_on_organization.rb +15 -0
  714. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170207154702_add_index_to_uid.rb +5 -0
  715. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170224040846_create_invitations.rb +11 -0
  716. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170224061531_make_tos_type_text.rb +5 -0
  717. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170301160253_rename_invitation_slug_to_code.rb +5 -0
  718. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170330145157_rename_comment_to_messages.rb +6 -0
  719. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170407190910_add_has_messages_flag_to_assignment.rb +5 -0
  720. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170526191251_add_community_link_to_organizations.rb +5 -0
  721. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170526204944_add_has_messages_to_organizations.rb +5 -0
  722. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170601181759_rename_has_messages_to_raise_hand_enabled_in_organization.rb +5 -0
  723. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170608033403_remove_has_messages_from_assignment.rb +5 -0
  724. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170608044038_remove_messages_exercise_id.rb +5 -0
  725. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170608154055_remove_message_type_column.rb +5 -0
  726. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170612173212_add_first_name_and_last_name_to_user.rb +6 -0
  727. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170621222902_introduce_settings_and_themes.rb +40 -0
  728. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170818185127_add_guide_slug_constraint.rb +5 -0
  729. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170830020507_change_invitation_expiration_date_type.rb +5 -0
  730. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20171003204152_add_goal_to_exercise.rb +5 -0
  731. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20171003204209_add_queries_to_assignment.rb +6 -0
  732. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20171004134607_add_triable_to_language.rb +5 -0
  733. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20171024182244_add_devicon_and_comment_type_to_language.rb +6 -0
  734. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20171109181818_add_manual_evaluation_commend_and_submission_id_index_in_assignment.rb +6 -0
  735. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20171229042201_add_assets_to_language.rb +9 -0
  736. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180117014110_add_custom_editor_assets_to_language.rb +13 -0
  737. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180123174410_add_initial_and_final_states_to_exercises.rb +6 -0
  738. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180123180836_add_accepts_reminders_to_users.rb +5 -0
  739. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180129142749_add_api_client.rb +11 -0
  740. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180130194923_add_last_reminded_date_to_users.rb +5 -0
  741. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180130204935_add_course.rb +16 -0
  742. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180307150148_add_failed_submissions_count_to_assignments.rb +5 -0
  743. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180323125804_remove_user_name.rb +5 -0
  744. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180323140943_remove_unused_omniauth_fields.rb +7 -0
  745. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180326224511_remove_book_ids.rb +5 -0
  746. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180402015405_remove_course_uid.rb +5 -0
  747. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180504173548_create_discussions.rb +12 -0
  748. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180504185845_add_discussion_id_to_message.rb +5 -0
  749. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180526141344_add_tips_rules_to_exercise.rb +5 -0
  750. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180605143727_add_submission_to_discussion.rb +16 -0
  751. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180611190239_add_randomizations_to_exercises.rb +5 -0
  752. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180619182555_create_subscriptions.rb +9 -0
  753. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180702153442_create_upvotes.rb +8 -0
  754. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180702175220_add_upvotes_count_to_discussions.rb +5 -0
  755. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180704150839_rename_assignment_status_to_submission_status.rb +5 -0
  756. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180725145801_add_submissions_caps_to_exams.rb +6 -0
  757. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180802190437_add_approved_to_messages.rb +5 -0
  758. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181004173216_add_free_form_editor_to_exercises.rb +5 -0
  759. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181014233438_remove_non_null_constraint_from_permissions.rb +5 -0
  760. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181016203853_add_test_extension_back.rb +5 -0
  761. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181021151505_add_id_format_back.rb +5 -0
  762. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181022043658_add_private_flag_for_guides.rb +5 -0
  763. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181022220518_add_teacher_info_to_guide.rb +6 -0
  764. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181101180652_add_unique_index_to_organizations_name.rb +5 -0
  765. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181105152420_remove_contact_email_from_book.rb +5 -0
  766. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181113183935_rename_guide_contributors_to_collaborators.rb +5 -0
  767. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181114201620_add_test_template_to_languages.rb +5 -0
  768. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181117190241_add_feedback_to_language.rb +5 -0
  769. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181121165956_rename_choices_column.rb +6 -0
  770. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181210131824_convert_course_invitation_into_fk.rb +6 -0
  771. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190123180139_add_sources_section.rb +5 -0
  772. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190123180147_add_learn_more_section.rb +5 -0
  773. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190312152901_add_content_fk.rb +9 -0
  774. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190326152631_add_settings_to_content.rb +6 -0
  775. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190404181724_add_organization_to_discussion.rb +5 -0
  776. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190506180102_add_multifile_to_languages.rb +5 -0
  777. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190530173142_add_organization_to_assignment.rb +5 -0
  778. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190702003600_add_loading_flags_to_language.rb +6 -0
  779. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190702182407_add_new_profile_fields.rb +6 -0
  780. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190724190355_add_settings_to_languages.rb +5 -0
  781. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190905174934_add_submitted_at_to_assignments.rb +5 -0
  782. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190918134321_remove_new_expectations.rb +5 -0
  783. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190918140026_add_custom_expectations.rb +6 -0
  784. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190929180601_add_expectations_to_language.rb +5 -0
  785. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20191022180238_remove_choice_values_from_exercises.rb +5 -0
  786. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20191029200548_create_indicators.rb +12 -0
  787. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20191105171244_add_parent_to_assignments.rb +5 -0
  788. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20191211153004_add_dirtiness_to_indicators.rb +6 -0
  789. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20191217184525_add_progress_fields_to_indicators.rb +6 -0
  790. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20200127142401_add_private_to_topics_and_books.rb +6 -0
  791. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20200213175736_add_verified_names_to_users.rb +6 -0
  792. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20200312181842_add_results_hidden_for_choices_to_exam.rb +5 -0
  793. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20200508191543_create_avatars.rb +8 -0
  794. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20200518135658_add_avatar_to_users.rb +5 -0
  795. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20200527180729_add_disabled_at_to_users.rb +6 -0
  796. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain.rb +58 -0
  797. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/engine.rb +15 -0
  798. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/evaluation.rb +5 -0
  799. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/evaluation/automated.rb +5 -0
  800. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/evaluation/manual.rb +5 -0
  801. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/exceptions.rb +6 -0
  802. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/exceptions/blocked_forum_error.rb +2 -0
  803. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/exceptions/disabled_error.rb +2 -0
  804. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/exceptions/forbidden_error.rb +2 -0
  805. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/exceptions/gone_error.rb +2 -0
  806. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/exceptions/not_found_error.rb +2 -0
  807. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/exceptions/unauthorized_error.rb +2 -0
  808. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/extensions.rb +4 -0
  809. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/extensions/array.rb +11 -0
  810. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/extensions/hash.rb +14 -0
  811. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/extensions/module.rb +17 -0
  812. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/extensions/string.rb +73 -0
  813. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories.rb +18 -0
  814. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/api_client_factory.rb +18 -0
  815. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/assignments_factory.rb +8 -0
  816. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/book_factory.rb +7 -0
  817. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/chapter_factory.rb +17 -0
  818. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/complement_factory.rb +6 -0
  819. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/course_factory.rb +9 -0
  820. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/discussion_factory.rb +9 -0
  821. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/exam_factory.rb +9 -0
  822. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/exercise_factory.rb +84 -0
  823. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/guide_factory.rb +37 -0
  824. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/invitation_factory.rb +7 -0
  825. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/lesson_factory.rb +7 -0
  826. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/login_settings_factory.rb +5 -0
  827. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/message_factory.rb +11 -0
  828. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/organization_factory.rb +38 -0
  829. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/topic_factory.rb +15 -0
  830. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/usage_factory.rb +6 -0
  831. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/user_factory.rb +11 -0
  832. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/file.rb +18 -0
  833. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/helpers.rb +8 -0
  834. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/helpers/course.rb +13 -0
  835. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/helpers/organization.rb +72 -0
  836. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/helpers/user.rb +109 -0
  837. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/locales/activerecord/en.yml +29 -0
  838. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/locales/activerecord/es.yml +58 -0
  839. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/locales/activerecord/pt.yml +29 -0
  840. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/locales/console_submission/en.yml +4 -0
  841. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/locales/console_submission/es.yml +4 -0
  842. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/locales/console_submission/pt.yml +4 -0
  843. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/organization.rb +8 -0
  844. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/organization/profile.rb +39 -0
  845. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/organization/settings.rb +27 -0
  846. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/organization/theme.rb +4 -0
  847. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/seed.rb +33 -0
  848. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status.rb +72 -0
  849. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/discussion/closed.rb +15 -0
  850. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/discussion/discussion.rb +44 -0
  851. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/discussion/opened.rb +31 -0
  852. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/discussion/pending_review.rb +15 -0
  853. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/discussion/solved.rb +19 -0
  854. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/aborted.rb +11 -0
  855. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/errored.rb +19 -0
  856. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/failed.rb +15 -0
  857. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/manual_evaluation_pending.rb +15 -0
  858. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/passed.rb +11 -0
  859. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/passed_with_warnings.rb +15 -0
  860. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/pending.rb +11 -0
  861. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/running.rb +15 -0
  862. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/skipped.rb +11 -0
  863. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/submission.rb +45 -0
  864. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/store.rb +3 -0
  865. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/store/bibliotheca.rb +29 -0
  866. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/store/github.rb +7 -0
  867. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/store/github/exercise_schema.rb +40 -0
  868. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/store/github/guide_schema.rb +37 -0
  869. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/store/thesaurus.rb +85 -0
  870. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission.rb +18 -0
  871. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/base.rb +57 -0
  872. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/confirmation.rb +9 -0
  873. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/console_submission.rb +13 -0
  874. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/persistent_submission.rb +7 -0
  875. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/query.rb +19 -0
  876. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/question.rb +14 -0
  877. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/solution.rb +7 -0
  878. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/try.rb +20 -0
  879. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/syncable.rb +91 -0
  880. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/syncable/with_resource_fields.rb +18 -0
  881. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/version.rb +5 -0
  882. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/mumuki-domain.gemspec +78 -0
  883. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/Rakefile +6 -0
  884. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/bin/bundle +3 -0
  885. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/bin/rails +4 -0
  886. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/bin/rake +4 -0
  887. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/bin/setup +38 -0
  888. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/bin/update +29 -0
  889. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/config.ru +5 -0
  890. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/config/application.rb +13 -0
  891. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/config/boot.rb +5 -0
  892. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/config/database.travis.yml +4 -0
  893. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/config/database.yml +13 -0
  894. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/config/environment.rb +5 -0
  895. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/config/environments/test.rb +47 -0
  896. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/db/schema.rb +387 -0
  897. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/evaluation_helper.rb +19 -0
  898. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/lib/bibliotheca_store_spec.rb +73 -0
  899. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/lib/organization_helpers_spec.rb +228 -0
  900. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/lib/thesaurus_store_spec.rb +329 -0
  901. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/lib/user_helpers_spec.rb +168 -0
  902. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/api_client_spec.rb +6 -0
  903. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/assignment_spec.rb +490 -0
  904. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/book_import_spec.rb +70 -0
  905. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/book_spec.rb +203 -0
  906. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/course_spec.rb +67 -0
  907. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/discussion_spec.rb +176 -0
  908. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/event_generation_spec.rb +189 -0
  909. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/event_publishing_spec.rb +36 -0
  910. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/exam_spec.rb +159 -0
  911. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/exercise_spec.rb +589 -0
  912. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/guide_import_spec.rb +317 -0
  913. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/guide_spec.rb +264 -0
  914. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/hash_spec.rb +17 -0
  915. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/indicator_spec.rb +101 -0
  916. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/interactive_spec.rb +144 -0
  917. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/invitation_spec.rb +25 -0
  918. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/language_spec.rb +56 -0
  919. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/lesson_spec.rb +90 -0
  920. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/message_spec.rb +87 -0
  921. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/navigation_spec.rb +78 -0
  922. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/organization_spec.rb +215 -0
  923. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/playground_spec.rb +23 -0
  924. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/problem_spec.rb +85 -0
  925. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/query_spec.rb +21 -0
  926. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/question_spec.rb +37 -0
  927. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/reading_spec.rb +11 -0
  928. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/solution_spec.rb +77 -0
  929. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/stats_spec.rb +24 -0
  930. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/string_spec.rb +9 -0
  931. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/topic_spec.rb +57 -0
  932. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/usage_spec.rb +82 -0
  933. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/user_changed_spec.rb +44 -0
  934. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/user_spec.rb +304 -0
  935. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/with_expectations_spec.rb +62 -0
  936. data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/spec_helper.rb +57 -0
  937. metadata +1378 -0
@@ -0,0 +1,71 @@
1
+ // https://codemirror.net/demo/simplemode.html
2
+
3
+ (function() {
4
+ var locale = document.querySelector("html").lang || 'es';
5
+
6
+ var keywords = [
7
+ "program", "procedure", "function", "interactive", "if",
8
+ "then", "else", "switch", "repeat", "while",
9
+ "foreach", "in", "not", "div", "mod",
10
+ "Skip", "return"
11
+ ];
12
+
13
+ var atoms = {
14
+ es: ["Verde", "Rojo", "Azul", "Negro", "Norte", "Sur", "Este", "Oeste", "False", "True"],
15
+ pt: ["Verde", "Vermelho", "Azul", "Preto", "Norte", "Sul", "Leste", "Oeste", "False", "True"],
16
+ en: ["Green", "Red", "Blue", "Black", "North", "South", "East", "West", "False", "True"]
17
+ };
18
+
19
+ var builtins = {
20
+ es: ["Poner", "Sacar", "Mover", "IrAlBorde", "VaciarTablero", "nroBolitas", "hayBolitas", "puedeMover", "siguiente", "previo", "opuesto", "minBool", "maxBool", "minDir", "maxDir", "minColor", "maxColor"],
21
+ pt: ["Colocar", "Retirar", "Mover", "IrAlBorda", "VaciarTablero", "nroPedras", "haPedras", "podeMover", "seguinte", "previo", "oposto", "minBool", "maxBool", "minDir", "maxDir", "minCor", "maxCor"],
22
+ en: ["Put", "Grab", "Move", "GoToEdge", "EmptyBoardContents", "numStones", "anyStones", "canMove", "next", "prev", "opposite", "minBool", "maxBool", "minDir", "maxDir", "minColor", "maxColor"]
23
+ };
24
+
25
+ const localizedKeywordsAndBuiltins = keywords.concat(builtins[locale]);
26
+ const localizedAtoms = atoms[locale];
27
+
28
+ var buildList = function(values) {
29
+ return values.join('|');
30
+ };
31
+
32
+ CodeMirror.defineSimpleMode("gobstones", {
33
+ // The start state contains the rules that are intially used
34
+ start: [
35
+ // The regex matches the token, the token property contains the type
36
+ {regex: /"(?:[^\\]|\\.)*?(?:"|$)/, token: "string"},
37
+ // You can match multiple tokens at once. Note that the captured
38
+ // groups must span the whole string in this case
39
+ {regex: /(function|procedure)(\s+)([a-zA-Z$][\w$]*)/, token: ["keyword", null, "variable-2"]},
40
+ // Rules are matched in the order in which they appear, so there is
41
+ // no ambiguity between this one and the one above
42
+ {regex: new RegExp(`(?:${buildList(localizedKeywordsAndBuiltins)})\\b`), token: "keyword"},
43
+ {regex: new RegExp(buildList(localizedAtoms)), token: "atom"},
44
+ {regex: /[-+]?(\d+)/i, token: "number"},
45
+ {regex: /\/\/.*/, token: "comment"},
46
+ {regex: /\/(?:[^\\]|\\.)*?\//, token: "variable-3"},
47
+ // A next property will cause the mode to move to a different state
48
+ {regex: /\/\*/, token: "comment", next: "comment"},
49
+ {regex: /(-|\+|\/|\*|\^|\|\||&&|:=|==|>=|<=|!=|<|>|!|div|mod)/, token: "operator"},
50
+ // indent and dedent properties guide autoindentation
51
+ {regex: /[\{\[\(]/, indent: true},
52
+ {regex: /[\}\]\)]/, dedent: true},
53
+ {regex: /[a-z]\w*/, token: "variable"}
54
+ ],
55
+ // The multi-line comment state.
56
+ comment: [
57
+ {regex: /.*?\*\//, token: "comment", next: "start"},
58
+ {regex: /.*/, token: "comment"}
59
+ ],
60
+ // The meta property contains global information about the mode. It
61
+ // can contain properties like lineComment, which are supported by
62
+ // all modes, and also directives like dontIndentStates, which are
63
+ // specific to simple modes.
64
+ meta: {
65
+ dontIndentStates: ["comment"],
66
+ lineComment: "//"
67
+ }
68
+ });
69
+
70
+ CodeMirror.defineMIME("text/x-gobstones", "gobstones");
71
+ })();
@@ -0,0 +1 @@
1
+ registerAutocomplete('haskell', 'case of class data instance deriving do if then else let in newtype type where'.split(' '));
@@ -0,0 +1 @@
1
+ !function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror-modes")):"function"==typeof define&&define.amd?define(["../../lib/codemirror-modes"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("haskell",function(e,r){function t(e,r,t){return r(t),t(e,r)}function n(e,r){if(e.eatWhile(p))return null;var n=e.next();if(h.test(n)){if("{"==n&&e.eat("-")){o="comment";return e.eat("#")&&(o="meta"),t(e,r,i(o,1))}return null}if("'"==n)return e.eat("\\"),e.next(),e.eat("'")?"string":"string error";if('"'==n)return t(e,r,a);if(u.test(n))return e.eatWhile(d),e.eat(".")?"qualifier":"variable-2";if(l.test(n))return e.eatWhile(d),"variable";if(f.test(n)){if("0"==n){if(e.eat(/[xX]/))return e.eatWhile(s),"integer";if(e.eat(/[oO]/))return e.eatWhile(c),"number"}e.eatWhile(f);o="number";return e.match(/^\.\d+/)&&(o="number"),e.eat(/[eE]/)&&(o="number",e.eat(/[-+]/),e.eatWhile(f)),o}if("."==n&&e.eat("."))return"keyword";if(m.test(n)){if("-"==n&&e.eat(/-/)&&(e.eatWhile(/-/),!e.eat(m)))return e.skipToEnd(),"comment";var o="variable";return":"==n&&(o="variable-2"),e.eatWhile(m),o}return"error"}function i(e,r){return 0==r?n:function(t,a){for(var o=r;!t.eol();){var l=t.next();if("{"==l&&t.eat("-"))++o;else if("-"==l&&t.eat("}")&&0==--o)return a(n),e}return a(i(e,o)),e}}function a(e,r){for(;!e.eol();){var t=e.next();if('"'==t)return r(n),"string";if("\\"==t){if(e.eol()||e.eat(p))return r(o),"string";e.eat("&")||e.next()}}return r(n),"string error"}function o(e,r){return e.eat("\\")?t(e,r,a):(e.next(),r(n),"error")}var l=/[a-z_]/,u=/[A-Z]/,f=/\d/,s=/[0-9A-Fa-f]/,c=/[0-7]/,d=/[a-z_A-Z0-9'\xa1-\uffff]/,m=/[-!#$%&*+.\/<=>?@\\^|~:]/,h=/[(),;[\]`{}]/,p=/[ \t\v\f]/,g=function(){function e(e){return function(){for(var r=0;r<arguments.length;r++)t[arguments[r]]=e}}var t={};e("keyword")("case","class","data","default","deriving","do","else","foreign","if","import","in","infix","infixl","infixr","instance","let","module","newtype","of","then","type","where","_"),e("keyword")("..",":","::","=","\\","<-","->","@","~","=>"),e("builtin")("!!","$!","$","&&","+","++","-",".","/","/=","<","<=","=<<","==",">",">=",">>",">>=","^","^^","||","*","**"),e("builtin")("Bool","Bounded","Char","Double","EQ","Either","Enum","Eq","False","FilePath","Float","Floating","Fractional","Functor","GT","IO","IOError","Int","Integer","Integral","Just","LT","Left","Maybe","Monad","Nothing","Num","Ord","Ordering","Rational","Read","ReadS","Real","RealFloat","RealFrac","Right","Show","ShowS","String","True"),e("builtin")("abs","acos","acosh","all","and","any","appendFile","asTypeOf","asin","asinh","atan","atan2","atanh","break","catch","ceiling","compare","concat","concatMap","const","cos","cosh","curry","cycle","decodeFloat","div","divMod","drop","dropWhile","either","elem","encodeFloat","enumFrom","enumFromThen","enumFromThenTo","enumFromTo","error","even","exp","exponent","fail","filter","flip","floatDigits","floatRadix","floatRange","floor","fmap","foldl","foldl1","foldr","foldr1","fromEnum","fromInteger","fromIntegral","fromRational","fst","gcd","getChar","getContents","getLine","head","id","init","interact","ioError","isDenormalized","isIEEE","isInfinite","isNaN","isNegativeZero","iterate","last","lcm","length","lex","lines","log","logBase","lookup","map","mapM","mapM_","max","maxBound","maximum","maybe","min","minBound","minimum","mod","negate","not","notElem","null","odd","or","otherwise","pi","pred","print","product","properFraction","putChar","putStr","putStrLn","quot","quotRem","read","readFile","readIO","readList","readLn","readParen","reads","readsPrec","realToFrac","recip","rem","repeat","replicate","return","reverse","round","scaleFloat","scanl","scanl1","scanr","scanr1","seq","sequence","sequence_","show","showChar","showList","showParen","showString","shows","showsPrec","significand","signum","sin","sinh","snd","span","splitAt","sqrt","subtract","succ","sum","tail","take","takeWhile","tan","tanh","toEnum","toInteger","toRational","truncate","uncurry","undefined","unlines","until","unwords","unzip","unzip3","userError","words","writeFile","zip","zip3","zipWith","zipWith3");var n=r.overrideKeywords;if(n)for(var i in n)n.hasOwnProperty(i)&&(t[i]=n[i]);return t}();return{startState:function(){return{f:n}},copyState:function(e){return{f:e.f}},token:function(e,r){var t=r.f(e,function(e){r.f=e}),n=e.current();return g.hasOwnProperty(n)?g[n]:t},blockCommentStart:"{-",blockCommentEnd:"-}",lineComment:"--"}}),e.defineMIME("text/x-haskell","haskell")});
@@ -0,0 +1 @@
1
+ !function(l){"object"==typeof exports&&"object"==typeof module?l(require("../../lib/codemirror-modes"),require("./xml-hint")):"function"==typeof define&&define.amd?define(["../../lib/codemirror-modes","./xml-hint"],l):l(CodeMirror)}(function(l){"use strict";function t(l){for(var t in d)d.hasOwnProperty(t)&&(l.attrs[t]=d[t])}var e="ab aa af ak sq am ar an hy as av ae ay az bm ba eu be bn bh bi bs br bg my ca ch ce ny zh cv kw co cr hr cs da dv nl dz en eo et ee fo fj fi fr ff gl ka de el gn gu ht ha he hz hi ho hu ia id ie ga ig ik io is it iu ja jv kl kn kr ks kk km ki rw ky kv kg ko ku kj la lb lg li ln lo lt lu lv gv mk mg ms ml mt mi mr mh mn na nv nb nd ne ng nn no ii nr oc oj cu om or os pa pi fa pl ps pt qu rm rn ro ru sa sc sd se sm sg sr gd sn si sk sl so st es su sw ss sv ta te tg th ti bo tk tl tn to tr ts tt tw ty ug uk ur uz ve vi vo wa cy wo fy xh yi yo za zu".split(" "),a=["_blank","_self","_top","_parent"],n=["ascii","utf-8","utf-16","latin1","latin1"],r=["get","post","put","delete"],o=["application/x-www-form-urlencoded","multipart/form-data","text/plain"],s=["all","screen","print","embossed","braille","handheld","print","projection","screen","tty","tv","speech","3d-glasses","resolution [>][<][=] [X]","device-aspect-ratio: X/Y","orientation:portrait","orientation:landscape","device-height: [X]","device-width: [X]"],u={attrs:{}},i={a:{attrs:{href:null,ping:null,type:null,media:s,target:a,hreflang:e}},abbr:u,acronym:u,address:u,applet:u,area:{attrs:{alt:null,coords:null,href:null,target:null,ping:null,media:s,hreflang:e,type:null,shape:["default","rect","circle","poly"]}},article:u,aside:u,audio:{attrs:{src:null,mediagroup:null,crossorigin:["anonymous","use-credentials"],preload:["none","metadata","auto"],autoplay:["","autoplay"],loop:["","loop"],controls:["","controls"]}},b:u,base:{attrs:{href:null,target:a}},basefont:u,bdi:u,bdo:u,big:u,blockquote:{attrs:{cite:null}},body:u,br:u,button:{attrs:{form:null,formaction:null,name:null,value:null,autofocus:["","autofocus"],disabled:["","autofocus"],formenctype:o,formmethod:r,formnovalidate:["","novalidate"],formtarget:a,type:["submit","reset","button"]}},canvas:{attrs:{width:null,height:null}},caption:u,center:u,cite:u,code:u,col:{attrs:{span:null}},colgroup:{attrs:{span:null}},command:{attrs:{type:["command","checkbox","radio"],label:null,icon:null,radiogroup:null,command:null,title:null,disabled:["","disabled"],checked:["","checked"]}},data:{attrs:{value:null}},datagrid:{attrs:{disabled:["","disabled"],multiple:["","multiple"]}},datalist:{attrs:{data:null}},dd:u,del:{attrs:{cite:null,datetime:null}},details:{attrs:{open:["","open"]}},dfn:u,dir:u,div:u,dl:u,dt:u,em:u,embed:{attrs:{src:null,type:null,width:null,height:null}},eventsource:{attrs:{src:null}},fieldset:{attrs:{disabled:["","disabled"],form:null,name:null}},figcaption:u,figure:u,font:u,footer:u,form:{attrs:{action:null,name:null,"accept-charset":n,autocomplete:["on","off"],enctype:o,method:r,novalidate:["","novalidate"],target:a}},frame:u,frameset:u,h1:u,h2:u,h3:u,h4:u,h5:u,h6:u,head:{attrs:{},children:["title","base","link","style","meta","script","noscript","command"]},header:u,hgroup:u,hr:u,html:{attrs:{manifest:null},children:["head","body"]},i:u,iframe:{attrs:{src:null,srcdoc:null,name:null,width:null,height:null,sandbox:["allow-top-navigation","allow-same-origin","allow-forms","allow-scripts"],seamless:["","seamless"]}},img:{attrs:{alt:null,src:null,ismap:null,usemap:null,width:null,height:null,crossorigin:["anonymous","use-credentials"]}},input:{attrs:{alt:null,dirname:null,form:null,formaction:null,height:null,list:null,max:null,maxlength:null,min:null,name:null,pattern:null,placeholder:null,size:null,src:null,step:null,value:null,width:null,accept:["audio/*","video/*","image/*"],autocomplete:["on","off"],autofocus:["","autofocus"],checked:["","checked"],disabled:["","disabled"],formenctype:o,formmethod:r,formnovalidate:["","novalidate"],formtarget:a,multiple:["","multiple"],readonly:["","readonly"],required:["","required"],type:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"]}},ins:{attrs:{cite:null,datetime:null}},kbd:u,keygen:{attrs:{challenge:null,form:null,name:null,autofocus:["","autofocus"],disabled:["","disabled"],keytype:["RSA"]}},label:{attrs:{for:null,form:null}},legend:u,li:{attrs:{value:null}},link:{attrs:{href:null,type:null,hreflang:e,media:s,sizes:["all","16x16","16x16 32x32","16x16 32x32 64x64"]}},map:{attrs:{name:null}},mark:u,menu:{attrs:{label:null,type:["list","context","toolbar"]}},meta:{attrs:{content:null,charset:n,name:["viewport","application-name","author","description","generator","keywords"],"http-equiv":["content-language","content-type","default-style","refresh"]}},meter:{attrs:{value:null,min:null,low:null,high:null,max:null,optimum:null}},nav:u,noframes:u,noscript:u,object:{attrs:{data:null,type:null,name:null,usemap:null,form:null,width:null,height:null,typemustmatch:["","typemustmatch"]}},ol:{attrs:{reversed:["","reversed"],start:null,type:["1","a","A","i","I"]}},optgroup:{attrs:{disabled:["","disabled"],label:null}},option:{attrs:{disabled:["","disabled"],label:null,selected:["","selected"],value:null}},output:{attrs:{for:null,form:null,name:null}},p:u,param:{attrs:{name:null,value:null}},pre:u,progress:{attrs:{value:null,max:null}},q:{attrs:{cite:null}},rp:u,rt:u,ruby:u,s:u,samp:u,script:{attrs:{type:["text/javascript"],src:null,async:["","async"],defer:["","defer"],charset:n}},section:u,select:{attrs:{form:null,name:null,size:null,autofocus:["","autofocus"],disabled:["","disabled"],multiple:["","multiple"]}},small:u,source:{attrs:{src:null,type:null,media:null}},span:u,strike:u,strong:u,style:{attrs:{type:["text/css"],media:s,scoped:null}},sub:u,summary:u,sup:u,table:u,tbody:u,td:{attrs:{colspan:null,rowspan:null,headers:null}},textarea:{attrs:{dirname:null,form:null,maxlength:null,name:null,placeholder:null,rows:null,cols:null,autofocus:["","autofocus"],disabled:["","disabled"],readonly:["","readonly"],required:["","required"],wrap:["soft","hard"]}},tfoot:u,th:{attrs:{colspan:null,rowspan:null,headers:null,scope:["row","col","rowgroup","colgroup"]}},thead:u,time:{attrs:{datetime:null}},title:u,tr:u,track:{attrs:{src:null,label:null,default:null,kind:["subtitles","captions","descriptions","chapters","metadata"],srclang:e}},tt:u,u:u,ul:u,var:u,video:{attrs:{src:null,poster:null,width:null,height:null,crossorigin:["anonymous","use-credentials"],preload:["auto","metadata","none"],autoplay:["","autoplay"],mediagroup:["movie"],muted:["","muted"],controls:["","controls"]}},wbr:u},d={accesskey:["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"],class:null,contenteditable:["true","false"],contextmenu:null,dir:["ltr","rtl","auto"],draggable:["true","false","auto"],dropzone:["copy","move","link","string:","file:"],hidden:["hidden"],id:null,inert:["inert"],itemid:null,itemprop:null,itemref:null,itemscope:["itemscope"],itemtype:null,lang:["en","es"],spellcheck:["true","false"],style:null,tabindex:["1","2","3","4","5","6","7","8","9"],title:null,translate:["yes","no"],onclick:null,rel:["stylesheet","alternate","author","bookmark","help","license","next","nofollow","noreferrer","prefetch","prev","search","tag"]};t(u);for(var c in i)i.hasOwnProperty(c)&&i[c]!=u&&t(i[c]);l.htmlSchema=i,l.registerHelper("hint","html",function(t,e){var a={schemaInfo:i};if(e)for(var n in e)a[n]=e[n];return l.hint.xml(t,a)})});
@@ -0,0 +1 @@
1
+ !function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror-modes"),require("../xml/xml"),require("../javascript/javascript"),require("../css/css")):"function"==typeof define&&define.amd?define(["../../lib/codemirror-modes","../xml/xml","../javascript/javascript","../css/css"],t):t(CodeMirror)}(function(t){"use strict";function e(t,e,a){var n=t.current(),l=n.search(e);return l>-1?t.backUp(n.length-l):n.match(/<\/?$/)&&(t.backUp(n.length),t.match(e,!1)||t.match(n)),a}function a(t){var e=i[t];return e||(i[t]=new RegExp("\\s+"+t+"\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*"))}function n(t,e){var n=t.match(a(e));return n?/^\s*(.*?)\s*$/.exec(n[2])[1]:""}function l(t,e){return new RegExp((e?"^":"")+"</s*"+t+"s*>","i")}function r(t,e){for(var a in t)for(var n=e[a]||(e[a]=[]),l=t[a],r=l.length-1;r>=0;r--)n.unshift(l[r])}function o(t,e){for(var a=0;a<t.length;a++){var l=t[a];if(!l[0]||l[1].test(n(e,l[0])))return l[2]}}var c={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]},i={};t.defineMode("htmlmixed",function(a,n){function i(n,r){var c,m=s.token(n,r.htmlState),d=/\btag\b/.test(m);if(d&&!/[<>\s\/]/.test(n.current())&&(c=r.htmlState.tagName&&r.htmlState.tagName.toLowerCase())&&u.hasOwnProperty(c))r.inTag=c+" ";else if(r.inTag&&d&&/>$/.test(n.current())){var f=/^([\S]+) (.*)/.exec(r.inTag);r.inTag=null;var p=">"==n.current()&&o(u[f[1]],f[2]),g=t.getMode(a,p),h=l(f[1],!0),S=l(f[1],!1);r.token=function(t,a){return t.match(h,!1)?(a.token=i,a.localState=a.localMode=null,null):e(t,S,a.localMode.token(t,a.localState))},r.localMode=g,r.localState=t.startState(g,s.indent(r.htmlState,""))}else r.inTag&&(r.inTag+=n.current(),n.eol()&&(r.inTag+=" "));return m}var s=t.getMode(a,{name:"xml",htmlMode:!0,multilineTagIndentFactor:n.multilineTagIndentFactor,multilineTagIndentPastTag:n.multilineTagIndentPastTag}),u={},m=n&&n.tags,d=n&&n.scriptTypes;if(r(c,u),m&&r(m,u),d)for(var f=d.length-1;f>=0;f--)u.script.unshift(["type",d[f].matches,d[f].mode]);return{startState:function(){return{token:i,inTag:null,localMode:null,localState:null,htmlState:t.startState(s)}},copyState:function(e){var a;return e.localState&&(a=t.copyState(e.localMode,e.localState)),{token:e.token,inTag:e.inTag,localMode:e.localMode,localState:a,htmlState:t.copyState(s,e.htmlState)}},token:function(t,e){return e.token(t,e)},indent:function(e,a,n){return!e.localMode||/^\s*<\//.test(a)?s.indent(e.htmlState,a):e.localMode.indent?e.localMode.indent(e.localState,a,n):t.Pass},innerMode:function(t){return{state:t.localState||t.htmlState,mode:t.localMode||s}}}},"xml","javascript","css"),t.defineMIME("text/html","htmlmixed")});
@@ -0,0 +1 @@
1
+ //= require_tree .
@@ -0,0 +1 @@
1
+ !function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror-modes")):"function"==typeof define&&define.amd?define(["../../lib/codemirror-modes"],t):t(CodeMirror)}(function(t){function e(t,e){for(var r=0,n=t.length;r<n;++r)e(t[r])}function r(t,e){if(!Array.prototype.indexOf){for(var r=t.length;r--;)if(t[r]===e)return!0;return!1}return-1!=t.indexOf(e)}function n(e,r,n,i){var o=e.getCursor(),f=n(e,o);if(!/\b(?:string|comment)\b/.test(f.type)){f.state=t.innerMode(e.getMode(),f.state).state,/^[\w$_]*$/.test(f.string)?f.end>o.ch&&(f.end=o.ch,f.string=f.string.slice(0,o.ch-f.start)):f={start:o.ch,end:o.ch,string:"",state:f.state,type:"."==f.string?"property":null};for(var l=f;"property"==l.type;){if("."!=(l=n(e,a(o.line,l.start))).string)return;if(l=n(e,a(o.line,l.start)),!c)var c=[];c.push(l)}return{list:s(f,c,r,i),from:a(o.line,f.start),to:a(o.line,f.end)}}}function i(t,e){var r=t.getTokenAt(e);return e.ch==r.start+1&&"."==r.string.charAt(0)?(r.end=r.start,r.string=".",r.type="property"):/^\.[\w$_]*$/.test(r.string)&&(r.type="property",r.start++,r.string=r.string.replace(/\./,"")),r}function o(t,e){if(Object.getOwnPropertyNames&&Object.getPrototypeOf)for(var r=t;r;r=Object.getPrototypeOf(r))Object.getOwnPropertyNames(r).forEach(e);else for(var n in t)e(n)}function s(t,n,i,s){function a(t){0!=t.lastIndexOf(g,0)||r(u,t)||u.push(t)}function p(t){"string"==typeof t?e(f,a):t instanceof Array?e(l,a):t instanceof Function&&e(c,a),o(t,a)}var u=[],g=t.string,d=s&&s.globalScope||window;if(n&&n.length){var y,h=n.pop();for(h.type&&0===h.type.indexOf("variable")?(s&&s.additionalContext&&(y=s.additionalContext[h.string]),s&&!1===s.useGlobalScope||(y=y||d[h.string])):"string"==h.type?y="":"atom"==h.type?y=1:"function"==h.type&&(null==d.jQuery||"$"!=h.string&&"jQuery"!=h.string||"function"!=typeof d.jQuery?null!=d._&&"_"==h.string&&"function"==typeof d._&&(y=d._()):y=d.jQuery());null!=y&&n.length;)y=y[n.pop().string];null!=y&&p(y)}else{for(b=t.state.localVars;b;b=b.next)a(b.name);for(var b=t.state.globalVars;b;b=b.next)a(b.name);s&&!1===s.useGlobalScope||p(d),e(i,a)}return u}var a=t.Pos;t.registerHelper("hint","javascript",function(t,e){return n(t,p,function(t,e){return t.getTokenAt(e)},e)}),t.registerHelper("hint","coffeescript",function(t,e){return n(t,u,i,e)});var f="charAt charCodeAt indexOf lastIndexOf substring substr slice trim trimLeft trimRight toUpperCase toLowerCase split concat match replace search".split(" "),l="length concat join splice push pop shift unshift slice reverse sort indexOf lastIndexOf every some filter forEach map reduce reduceRight ".split(" "),c="prototype apply call bind".split(" "),p="break case catch continue debugger default delete do else false finally for function if in instanceof new null return switch throw true try typeof var void while with".split(" "),u="and break catch class continue delete do else extends false finally for if in instanceof isnt new no not null of off on or return switch then throw true try typeof until void while with yes".split(" ")});
@@ -0,0 +1 @@
1
+ !function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror-modes")):"function"==typeof define&&define.amd?define(["../../lib/codemirror-modes"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("javascript",function(t,r){function n(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if("/"==t&&!n)return;"["==t?n=!0:n&&"]"==t&&(n=!1)}r=!r&&"\\"==t}}function a(e,t,r){return Ae=e,Ee=r,t}function i(e,t){var r=e.next();if('"'==r||"'"==r)return t.tokenize=o(r),t.tokenize(e,t);if("."==r&&e.match(/^\d+(?:[eE][+\-]?\d+)?/))return a("number","number");if("."==r&&e.match(".."))return a("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(r))return a(r);if("="==r&&e.eat(">"))return a("=>","operator");if("0"==r&&e.eat(/x/i))return e.eatWhile(/[\da-f]/i),a("number","number");if("0"==r&&e.eat(/o/i))return e.eatWhile(/[0-7]/i),a("number","number");if("0"==r&&e.eat(/b/i))return e.eatWhile(/[01]/i),a("number","number");if(/\d/.test(r))return e.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),a("number","number");if("/"==r)return e.eat("*")?(t.tokenize=c,c(e,t)):e.eat("/")?(e.skipToEnd(),a("comment","comment")):Ve(e,t,1)?(n(e),e.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/),a("regexp","string-2")):(e.eatWhile(We),a("operator","operator",e.current()));if("`"==r)return t.tokenize=u,u(e,t);if("#"==r)return e.skipToEnd(),a("error","error");if(We.test(r))return">"==r&&t.lexical&&">"==t.lexical.type||e.eatWhile(We),a("operator","operator",e.current());if(Ce.test(r)){e.eatWhile(Ce);var i=e.current();if("."!=t.lastType){if(Oe.propertyIsEnumerable(i)){var s=Oe[i];return a(s.type,s.style,i)}if("async"==i&&e.match(/^\s*[\(\w]/,!1))return a("async","keyword",i)}return a("variable","variable",i)}}function o(e){return function(t,r){var n,o=!1;if(Te&&"@"==t.peek()&&t.match(Pe))return r.tokenize=i,a("jsonld-keyword","meta");for(;null!=(n=t.next())&&(n!=e||o);)o=!o&&"\\"==n;return o||(r.tokenize=i),a("string","string")}}function c(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=i;break}n="*"==r}return a("comment","comment")}function u(e,t){for(var r,n=!1;null!=(r=e.next());){if(!n&&("`"==r||"$"==r&&e.eat("{"))){t.tokenize=i;break}n=!n&&"\\"==r}return a("quasi","string-2",e.current())}function s(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r=e.string.indexOf("=>",e.start);if(!(r<0)){if(qe){var n=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,r));n&&(r=n.index)}for(var a=0,i=!1,o=r-1;o>=0;--o){var c=e.string.charAt(o),u=Se.indexOf(c);if(u>=0&&u<3){if(!a){++o;break}if(0==--a){"("==c&&(i=!0);break}}else if(u>=3&&u<6)++a;else if(Ce.test(c))i=!0;else{if(/["'\/]/.test(c))return;if(i&&!a){++o;break}}}i&&!a&&(t.fatArrowAt=o)}}function f(e,t,r,n,a,i){this.indented=e,this.column=t,this.type=r,this.prev=a,this.info=i,null!=n&&(this.align=n)}function l(e,t){for(n=e.localVars;n;n=n.next)if(n.name==t)return!0;for(var r=e.context;r;r=r.prev)for(var n=r.vars;n;n=n.next)if(n.name==t)return!0}function d(e,t,r,n,a){var i=e.cc;for(Ue.state=e,Ue.stream=a,Ue.marked=null,Ue.cc=i,Ue.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;)if((i.length?i.pop():$e?g:h)(r,n)){for(;i.length&&i[i.length-1].lex;)i.pop()();return Ue.marked?Ue.marked:"variable"==r&&l(e,n)?"variable-2":t}}function p(){for(var e=arguments.length-1;e>=0;e--)Ue.cc.push(arguments[e])}function m(){return p.apply(null,arguments),!0}function v(e){function t(t){for(var r=t;r;r=r.next)if(r.name==e)return!0;return!1}var n=Ue.state;if(Ue.marked="def",n.context){if(t(n.localVars))return;n.localVars={name:e,next:n.localVars}}else{if(t(n.globalVars))return;r.globalVars&&(n.globalVars={name:e,next:n.globalVars})}}function y(){Ue.state.context={prev:Ue.state.context,vars:Ue.state.localVars},Ue.state.localVars=Be}function k(){Ue.state.localVars=Ue.state.context.vars,Ue.state.context=Ue.state.context.prev}function b(e,t){var r=function(){var r=Ue.state,n=r.indented;if("stat"==r.lexical.type)n=r.lexical.indented;else for(var a=r.lexical;a&&")"==a.type&&a.align;a=a.prev)n=a.indented;r.lexical=new f(n,Ue.stream.column(),e,null,r.lexical,t)};return r.lex=!0,r}function x(){var e=Ue.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function w(e){function t(r){return r==e?m():";"==e?p():m(t)}return t}function h(e,t){return"var"==e?m(b("vardef",t.length),Z,w(";"),x):"keyword a"==e?m(b("form"),M,h,x):"keyword b"==e?m(b("form"),h,x):"{"==e?m(b("}"),G,x):";"==e?m():"if"==e?("else"==Ue.state.lexical.info&&Ue.state.cc[Ue.state.cc.length-1]==x&&Ue.state.cc.pop()(),m(b("form"),M,h,x,ne)):"function"==e?m(se):"for"==e?m(b("form"),ae,h,x):"variable"==e?qe&&"type"==t?(Ue.marked="keyword",m(K,w("operator"),K,w(";"))):qe&&"declare"==t?(Ue.marked="keyword",m(h)):m(b("stat"),S):"switch"==e?m(b("form"),M,w("{"),b("}","switch"),G,x,x):"case"==e?m(g,w(":")):"default"==e?m(w(":")):"catch"==e?m(b("form"),y,w("("),fe,w(")"),h,x,k):"class"==e?m(b("form"),de,x):"export"==e?m(b("stat"),ye,x):"import"==e?m(b("stat"),be,x):"module"==e?m(b("form"),_,w("{"),b("}"),G,x,x):"async"==e?m(h):"@"==t?m(g,h):p(b("stat"),g,w(";"),x)}function g(e){return V(e,!1)}function j(e){return V(e,!0)}function M(e){return"("!=e?p():m(b(")"),g,w(")"),x)}function V(e,t){if(Ue.state.fatArrowAt==Ue.stream.start){var r=t?C:q;if("("==e)return m(y,b(")"),D(fe,")"),x,w("=>"),r,k);if("variable"==e)return p(y,_,w("=>"),r,k)}var n=t?I:z;return Ne.hasOwnProperty(e)?m(n):"function"==e?m(se,n):"class"==e?m(b("form"),le,x):"keyword c"==e||"async"==e?m(t?E:A):"("==e?m(b(")"),A,w(")"),x,n):"operator"==e||"spread"==e?m(t?j:g):"["==e?m(b("]"),je,x,n):"{"==e?F(U,"}",null,n):"quasi"==e?p(T,n):"new"==e?m(O(t)):m()}function A(e){return e.match(/[;\}\)\],]/)?p():p(g)}function E(e){return e.match(/[;\}\)\],]/)?p():p(j)}function z(e,t){return","==e?m(g):I(e,t,!1)}function I(e,t,r){var n=0==r?z:I,a=0==r?g:j;return"=>"==e?m(y,r?C:q,k):"operator"==e?/\+\+|--/.test(t)||qe&&"!"==t?m(n):"?"==t?m(g,w(":"),a):m(a):"quasi"==e?p(T,n):";"!=e?"("==e?F(j,")","call",n):"."==e?m(N,n):"["==e?m(b("]"),A,w("]"),x,n):qe&&"as"==t?(Ue.marked="keyword",m(K,n)):"regexp"==e?(Ue.state.lastType=Ue.marked="operator",Ue.stream.backUp(Ue.stream.pos-Ue.stream.start-1),m(a)):void 0:void 0}function T(e,t){return"quasi"!=e?p():"${"!=t.slice(t.length-2)?m(T):m(g,$)}function $(e){if("}"==e)return Ue.marked="string-2",Ue.state.tokenize=u,m(T)}function q(e){return s(Ue.stream,Ue.state),p("{"==e?h:g)}function C(e){return s(Ue.stream,Ue.state),p("{"==e?h:j)}function O(e){return function(t){return"."==t?m(e?P:W):"variable"==t&&qe?m(Y,e?I:z):p(e?j:g)}}function W(e,t){if("target"==t)return Ue.marked="keyword",m(z)}function P(e,t){if("target"==t)return Ue.marked="keyword",m(I)}function S(e){return":"==e?m(x,h):p(z,w(";"),x)}function N(e){if("variable"==e)return Ue.marked="property",m()}function U(e,t){if("async"==e)return Ue.marked="property",m(U);if("variable"==e||"keyword"==Ue.style){if(Ue.marked="property","get"==t||"set"==t)return m(B);var r;return qe&&Ue.state.fatArrowAt==Ue.stream.start&&(r=Ue.stream.match(/^\s*:\s*/,!1))&&(Ue.state.fatArrowAt=Ue.stream.pos+r[0].length),m(H)}return"number"==e||"string"==e?(Ue.marked=Te?"property":Ue.style+" property",m(H)):"jsonld-keyword"==e?m(H):"modifier"==e?m(U):"["==e?m(g,w("]"),H):"spread"==e?m(g,H):":"==e?p(H):void 0}function B(e){return"variable"!=e?p(H):(Ue.marked="property",m(se))}function H(e){return":"==e?m(j):"("==e?p(se):void 0}function D(e,t,r){function n(a,i){if(r?r.indexOf(a)>-1:","==a){var o=Ue.state.lexical;return"call"==o.info&&(o.pos=(o.pos||0)+1),m(function(r,n){return r==t||n==t?p():p(e)},n)}return a==t||i==t?m():m(w(t))}return function(r,a){return r==t||a==t?m():p(e,n)}}function F(e,t,r){for(var n=3;n<arguments.length;n++)Ue.cc.push(arguments[n]);return m(b(t,r),D(e,t),x)}function G(e){return"}"==e?m():p(h,G)}function J(e,t){if(qe){if(":"==e)return m(K);if("?"==t)return m(J)}}function K(e,t){return"variable"==e?"keyof"==t?(Ue.marked="keyword",m(K)):(Ue.marked="type",m(X)):"string"==e||"number"==e||"atom"==e?m(X):"["==e?m(b("]"),D(K,"]",","),x,X):"{"==e?m(b("}"),D(Q,"}",",;"),x,X):"("==e?m(D(R,")"),L):void 0}function L(e){if("=>"==e)return m(K)}function Q(e,t){return"variable"==e||"keyword"==Ue.style?(Ue.marked="property",m(Q)):"?"==t?m(Q):":"==e?m(K):"["==e?m(g,J,w("]"),Q):void 0}function R(e){return"variable"==e?m(R):":"==e?m(K):void 0}function X(e,t){return"<"==t?m(b(">"),D(K,">"),x,X):"|"==t||"."==e?m(K):"["==e?m(w("]"),X):"extends"==t?m(K):void 0}function Y(e,t){if("<"==t)return m(b(">"),D(K,">"),x,X)}function Z(){return p(_,J,te,re)}function _(e,t){return"modifier"==e?m(_):"variable"==e?(v(t),m()):"spread"==e?m(_):"["==e?F(_,"]"):"{"==e?F(ee,"}"):void 0}function ee(e,t){return"variable"!=e||Ue.stream.match(/^\s*:/,!1)?("variable"==e&&(Ue.marked="property"),"spread"==e?m(_):"}"==e?p():m(w(":"),_,te)):(v(t),m(te))}function te(e,t){if("="==t)return m(j)}function re(e){if(","==e)return m(Z)}function ne(e,t){if("keyword b"==e&&"else"==t)return m(b("form","else"),h,x)}function ae(e){if("("==e)return m(b(")"),ie,w(")"),x)}function ie(e){return"var"==e?m(Z,w(";"),ce):";"==e?m(ce):"variable"==e?m(oe):p(g,w(";"),ce)}function oe(e,t){return"in"==t||"of"==t?(Ue.marked="keyword",m(g)):m(z,ce)}function ce(e,t){return";"==e?m(ue):"in"==t||"of"==t?(Ue.marked="keyword",m(g)):p(g,w(";"),ue)}function ue(e){")"!=e&&m(g)}function se(e,t){return"*"==t?(Ue.marked="keyword",m(se)):"variable"==e?(v(t),m(se)):"("==e?m(y,b(")"),D(fe,")"),x,J,h,k):qe&&"<"==t?m(b(">"),D(K,">"),x,se):void 0}function fe(e,t){return"@"==t&&m(g,fe),"spread"==e||"modifier"==e?m(fe):p(_,J,te)}function le(e,t){return"variable"==e?de(e,t):pe(e,t)}function de(e,t){if("variable"==e)return v(t),m(pe)}function pe(e,t){return"<"==t?m(b(">"),D(K,">"),x,pe):"extends"==t||"implements"==t||qe&&","==e?m(qe?K:g,pe):"{"==e?m(b("}"),me,x):void 0}function me(e,t){return"modifier"==e||"async"==e||"variable"==e&&("static"==t||"get"==t||"set"==t)&&Ue.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(Ue.marked="keyword",m(me)):"variable"==e||"keyword"==Ue.style?(Ue.marked="property",m(qe?ve:se,me)):"["==e?m(g,w("]"),qe?ve:se,me):"*"==t?(Ue.marked="keyword",m(me)):";"==e?m(me):"}"==e?m():"@"==t?m(g,me):void 0}function ve(e,t){return"?"==t?m(ve):":"==e?m(K,te):"="==t?m(j):p(se)}function ye(e,t){return"*"==t?(Ue.marked="keyword",m(ge,w(";"))):"default"==t?(Ue.marked="keyword",m(g,w(";"))):"{"==e?m(D(ke,"}"),ge,w(";")):p(h)}function ke(e,t){return"as"==t?(Ue.marked="keyword",m(w("variable"))):"variable"==e?p(j,ke):void 0}function be(e){return"string"==e?m():p(xe,we,ge)}function xe(e,t){return"{"==e?F(xe,"}"):("variable"==e&&v(t),"*"==t&&(Ue.marked="keyword"),m(he))}function we(e){if(","==e)return m(xe,we)}function he(e,t){if("as"==t)return Ue.marked="keyword",m(xe)}function ge(e,t){if("from"==t)return Ue.marked="keyword",m(g)}function je(e){return"]"==e?m():p(D(j,"]"))}function Me(e,t){return"operator"==e.lastType||","==e.lastType||We.test(t.charAt(0))||/[,.]/.test(t.charAt(0))}function Ve(e,t,r){return t.tokenize==i&&/^(?:operator|sof|keyword [bc]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||"quasi"==t.lastType&&/\{\s*$/.test(e.string.slice(0,e.pos-(r||0)))}var Ae,Ee,ze=t.indentUnit,Ie=r.statementIndent,Te=r.jsonld,$e=r.json||Te,qe=r.typescript,Ce=r.wordCharacters||/[\w$\xa1-\uffff]/,Oe=function(){function e(e){return{type:e,style:"keyword"}}var t=e("keyword a"),r=e("keyword b"),n=e("keyword c"),a=e("operator"),i={type:"atom",style:"atom"},o={if:e("if"),while:t,with:t,else:r,do:r,try:r,finally:r,return:n,break:n,continue:n,new:e("new"),delete:n,void:n,throw:n,debugger:n,var:e("var"),const:e("var"),let:e("var"),function:e("function"),catch:e("catch"),for:e("for"),switch:e("switch"),case:e("case"),default:e("default"),in:a,typeof:a,instanceof:a,true:i,false:i,null:i,undefined:i,NaN:i,Infinity:i,this:e("this"),class:e("class"),super:e("atom"),yield:n,export:e("export"),import:e("import"),extends:n,await:n};if(qe){var c={type:"variable",style:"type"},u={interface:e("class"),implements:n,namespace:n,module:e("module"),enum:e("module"),public:e("modifier"),private:e("modifier"),protected:e("modifier"),abstract:e("modifier"),readonly:e("modifier"),string:c,number:c,boolean:c,any:c};for(var s in u)o[s]=u[s]}return o}(),We=/[+\-*&%=<>!?|~^@]/,Pe=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/,Se="([{}])",Ne={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,"jsonld-keyword":!0},Ue={state:null,column:null,marked:null,cc:null},Be={name:"this",next:{name:"arguments"}};return x.lex=!0,{startState:function(e){var t={tokenize:i,lastType:"sof",cc:[],lexical:new f((e||0)-ze,0,"block",!1),localVars:r.localVars,context:r.localVars&&{vars:r.localVars},indented:e||0};return r.globalVars&&"object"==typeof r.globalVars&&(t.globalVars=r.globalVars),t},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),s(e,t)),t.tokenize!=c&&e.eatSpace())return null;var r=t.tokenize(e,t);return"comment"==Ae?r:(t.lastType="operator"!=Ae||"++"!=Ee&&"--"!=Ee?Ae:"incdec",d(t,r,Ae,Ee,e))},indent:function(t,n){if(t.tokenize==c)return e.Pass;if(t.tokenize!=i)return 0;var a,o=n&&n.charAt(0),u=t.lexical;if(!/^\s*else\b/.test(n))for(var s=t.cc.length-1;s>=0;--s){var f=t.cc[s];if(f==x)u=u.prev;else if(f!=ne)break}for(;("stat"==u.type||"form"==u.type)&&("}"==o||(a=t.cc[t.cc.length-1])&&(a==z||a==I)&&!/^[,\.=+\-*:?[\(]/.test(n));)u=u.prev;Ie&&")"==u.type&&"stat"==u.prev.type&&(u=u.prev);var l=u.type,d=o==l;return"vardef"==l?u.indented+("operator"==t.lastType||","==t.lastType?u.info+1:0):"form"==l&&"{"==o?u.indented:"form"==l?u.indented+ze:"stat"==l?u.indented+(Me(t,n)?Ie||ze:0):"switch"!=u.info||d||0==r.doubleIndentSwitch?u.align?u.column+(d?0:1):u.indented+(d?0:ze):u.indented+(/^(?:case|default)\b/.test(n)?ze:2*ze)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:$e?null:"/*",blockCommentEnd:$e?null:"*/",lineComment:$e?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:$e?"json":"javascript",jsonldMode:Te,jsonMode:$e,expressionAllowed:Ve,skipExpression:function(e){var t=e.cc[e.cc.length-1];t!=g&&t!=j||e.cc.pop()}}}),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})});
@@ -0,0 +1 @@
1
+ !function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../xml/xml"),require("../meta")):"function"==typeof define&&define.amd?define(["../../lib/codemirror-modes","../xml/xml","../meta"],t):t(CodeMirror)}(function(t){"use strict";t.defineMode("markdown",function(e,i){function n(i){if(t.findModeByName){var n=t.findModeByName(i);n&&(i=n.mime||n.mimes[0])}var r=t.getMode(e,i);return"null"==r.name?null:r}function r(t,e,i){return e.f=e.inline=i,i(t,e)}function a(t,e,i){return e.f=e.block=i,i(t,e)}function l(t){return!t||!/\S/.test(t.string)}function o(t){return t.linkTitle=!1,t.em=!1,t.strong=!1,t.strikethrough=!1,t.quote=0,t.indentedCode=!1,t.f==s&&(t.f=f,t.block=h),t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.prevLine=t.thisLine,t.thisLine={stream:null},null}function h(e,a){var o=e.column()===a.indentation,h=l(a.prevLine.stream),s=a.indentedCode,u=a.prevLine.hr,f=!1!==a.list,c=(a.listStack[a.listStack.length-1]||0)+3;a.indentedCode=!1;var d=a.indentation;if(null===a.indentationDiff&&(a.indentationDiff=a.indentation,f)){for(a.list=null;d<a.listStack[a.listStack.length-1];)a.listStack.pop(),a.listStack.length?a.indentation=a.listStack[a.listStack.length-1]:a.list=!1;!1!==a.list&&(a.indentationDiff=d-a.listStack[a.listStack.length-1])}var k=!(h||u||a.prevLine.header||f&&s||a.prevLine.fencedCodeEnd),x=(!1===a.list||u||h)&&a.indentation<=c&&e.match(M),S=null;if(a.indentationDiff>=4&&(s||a.prevLine.fencedCodeEnd||a.prevLine.header||h))return e.skipToEnd(),a.indentedCode=!0,T.code;if(e.eatSpace())return null;if(o&&a.indentation<=c&&(S=e.match(E))&&S[1].length<=6)return a.quote=0,a.header=S[1].length,a.thisLine.header=!0,i.highlightFormatting&&(a.formatting="header"),a.f=a.inline,m(a);if(a.indentation<=c&&e.eat(">"))return a.quote=o?1:a.quote+1,i.highlightFormatting&&(a.formatting="quote"),e.eatSpace(),m(a);if(!x&&!a.setext&&o&&a.indentation<=c&&(S=e.match(F))){var v=S[1]?"ol":"ul";return a.indentation=d+e.current().length,a.list=!0,a.quote=0,a.listStack.push(a.indentation),i.taskLists&&e.match(b,!1)&&(a.taskList=!0),a.f=a.inline,i.highlightFormatting&&(a.formatting=["list","list-"+v]),m(a)}return o&&a.indentation<=c&&(S=e.match(y,!0))?(a.quote=0,a.fencedEndRE=new RegExp(S[1]+"+ *$"),a.localMode=i.fencedCodeBlockHighlighting&&n(S[2]),a.localMode&&(a.localState=t.startState(a.localMode)),a.f=a.block=g,i.highlightFormatting&&(a.formatting="code-block"),a.code=-1,m(a)):a.setext||!(k&&f||a.quote||!1!==a.list||a.code||x||C.test(e.string))&&(S=e.lookAhead(1))&&(S=S.match(w))?(a.setext?(a.header=a.setext,a.setext=0,e.skipToEnd(),i.highlightFormatting&&(a.formatting="header")):(a.header="="==S[0].charAt(0)?1:2,a.setext=a.header),a.thisLine.header=!0,a.f=a.inline,m(a)):x?(e.skipToEnd(),a.hr=!0,a.thisLine.hr=!0,T.hr):"["===e.peek()?r(e,a,p):r(e,a,a.inline)}function s(e,i){var n=v.token(e,i.htmlState);if(!L){var r=t.innerMode(v,i.htmlState);("xml"==r.mode.name&&null===r.state.tagStart&&!r.state.context&&r.state.tokenize.isInText||i.md_inside&&e.current().indexOf(">")>-1)&&(i.f=f,i.block=h,i.htmlState=null)}return n}function g(t,e){var n=e.listStack[e.listStack.length-1]||0,r=e.indentation<n,l=n+3;if(e.fencedEndRE&&e.indentation<=l&&(r||t.match(e.fencedEndRE))){i.highlightFormatting&&(e.formatting="code-block");var o;return r||(o=m(e)),e.localMode=e.localState=null,e.block=h,e.f=f,e.fencedEndRE=null,e.code=0,e.thisLine.fencedCodeEnd=!0,r?a(t,e,e.block):o}return e.localMode?e.localMode.token(t,e.localState):(t.skipToEnd(),T.code)}function m(t){var e=[];if(t.formatting){e.push(T.formatting),"string"==typeof t.formatting&&(t.formatting=[t.formatting]);for(var n=0;n<t.formatting.length;n++)e.push(T.formatting+"-"+t.formatting[n]),"header"===t.formatting[n]&&e.push(T.formatting+"-"+t.formatting[n]+"-"+t.header),"quote"===t.formatting[n]&&(!i.maxBlockquoteDepth||i.maxBlockquoteDepth>=t.quote?e.push(T.formatting+"-"+t.formatting[n]+"-"+t.quote):e.push("error"))}if(t.taskOpen)return e.push("meta"),e.length?e.join(" "):null;if(t.taskClosed)return e.push("property"),e.length?e.join(" "):null;if(t.linkHref?e.push(T.linkHref,"url"):(t.strong&&e.push(T.strong),t.em&&e.push(T.em),t.strikethrough&&e.push(T.strikethrough),t.emoji&&e.push(T.emoji),t.linkText&&e.push(T.linkText),t.code&&e.push(T.code),t.image&&e.push(T.image),t.imageAltText&&e.push(T.imageAltText,"link"),t.imageMarker&&e.push(T.imageMarker)),t.header&&e.push(T.header,T.header+"-"+t.header),t.quote&&(e.push(T.quote),!i.maxBlockquoteDepth||i.maxBlockquoteDepth>=t.quote?e.push(T.quote+"-"+t.quote):e.push(T.quote+"-"+i.maxBlockquoteDepth)),!1!==t.list){var r=(t.listStack.length-1)%3;r?1===r?e.push(T.list2):e.push(T.list3):e.push(T.list1)}return t.trailingSpaceNewLine?e.push("trailing-space-new-line"):t.trailingSpace&&e.push("trailing-space-"+(t.trailingSpace%2?"a":"b")),e.length?e.join(" "):null}function u(t,e){if(t.match(j,!0))return m(e)}function f(e,n){var r=n.text(e,n);if(void 0!==r)return r;if(n.list)return n.list=null,m(n);if(n.taskList)return" "===e.match(b,!0)[1]?n.taskOpen=!0:n.taskClosed=!0,i.highlightFormatting&&(n.formatting="task"),n.taskList=!1,m(n);if(n.taskOpen=!1,n.taskClosed=!1,n.header&&e.match(/^#+$/,!0))return i.highlightFormatting&&(n.formatting="header"),m(n);var l=e.next();if(n.linkTitle){n.linkTitle=!1;var o=l;"("===l&&(o=")");var h="^\\s*(?:[^"+(o=(o+"").replace(/([.?*+^\[\]\\(){}|-])/g,"\\$1"))+"\\\\]+|\\\\\\\\|\\\\.)"+o;if(e.match(new RegExp(h),!0))return T.linkHref}if("`"===l){var g=n.formatting;i.highlightFormatting&&(n.formatting="code"),e.eatWhile("`");var u=e.current().length;if(0!=n.code||n.quote&&1!=u){if(u==n.code){y=m(n);return n.code=0,y}return n.formatting=g,m(n)}return n.code=u,m(n)}if(n.code)return m(n);if("\\"===l&&(e.next(),i.highlightFormatting)){var k=m(n),p=T.formatting+"-escape";return k?k+" "+p:p}if("!"===l&&e.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return n.imageMarker=!0,n.image=!0,i.highlightFormatting&&(n.formatting="image"),m(n);if("["===l&&n.imageMarker&&e.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/,!1))return n.imageMarker=!1,n.imageAltText=!0,i.highlightFormatting&&(n.formatting="image"),m(n);if("]"===l&&n.imageAltText){i.highlightFormatting&&(n.formatting="image");k=m(n);return n.imageAltText=!1,n.image=!1,n.inline=n.f=d,k}if("["===l&&!n.image)return n.linkText=!0,i.highlightFormatting&&(n.formatting="link"),m(n);if("]"===l&&n.linkText){i.highlightFormatting&&(n.formatting="link");k=m(n);return n.linkText=!1,n.inline=n.f=e.match(/\(.*?\)| ?\[.*?\]/,!1)?d:f,k}if("<"===l&&e.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1))return n.f=n.inline=c,i.highlightFormatting&&(n.formatting="link"),(k=m(n))?k+=" ":k="",k+T.linkInline;if("<"===l&&e.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1))return n.f=n.inline=c,i.highlightFormatting&&(n.formatting="link"),(k=m(n))?k+=" ":k="",k+T.linkEmail;if(i.xml&&"<"===l&&e.match(/^(!--|[a-z]+(?:\s+[a-z_:.\-]+(?:\s*=\s*[^ >]+)?)*\s*>)/i,!1)){var x=e.string.indexOf(">",e.pos);if(-1!=x){var S=e.string.substring(e.start,x);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(S)&&(n.md_inside=!0)}return e.backUp(1),n.htmlState=t.startState(v),a(e,n,s)}if(i.xml&&"<"===l&&e.match(/^\/\w*?>/))return n.md_inside=!1,"tag";if("*"===l||"_"===l){for(var L=1,q=1==e.pos?" ":e.string.charAt(e.pos-2);L<3&&e.eat(l);)L++;var M=e.peek()||" ",F=!/\s/.test(M)&&(!B.test(M)||/\s/.test(q)||B.test(q)),E=!/\s/.test(q)&&(!B.test(q)||/\s/.test(M)||B.test(M)),w=null,j=null;if(L%2&&(n.em||!F||"*"!==l&&E&&!B.test(q)?n.em!=l||!E||"*"!==l&&F&&!B.test(M)||(w=!1):w=!0),L>1&&(n.strong||!F||"*"!==l&&E&&!B.test(q)?n.strong!=l||!E||"*"!==l&&F&&!B.test(M)||(j=!1):j=!0),null!=j||null!=w){i.highlightFormatting&&(n.formatting=null==w?"strong":null==j?"em":"strong em"),!0===w&&(n.em=l),!0===j&&(n.strong=l);y=m(n);return!1===w&&(n.em=!1),!1===j&&(n.strong=!1),y}}else if(" "===l&&(e.eat("*")||e.eat("_"))){if(" "===e.peek())return m(n);e.backUp(1)}if(i.strikethrough)if("~"===l&&e.eatWhile(l)){if(n.strikethrough){i.highlightFormatting&&(n.formatting="strikethrough");var y=m(n);return n.strikethrough=!1,y}if(e.match(/^[^\s]/,!1))return n.strikethrough=!0,i.highlightFormatting&&(n.formatting="strikethrough"),m(n)}else if(" "===l&&e.match(/^~~/,!0)){if(" "===e.peek())return m(n);e.backUp(2)}if(i.emoji&&":"===l&&e.match(/^[a-z_\d+-]+:/)){n.emoji=!0,i.highlightFormatting&&(n.formatting="emoji");var C=m(n);return n.emoji=!1,C}return" "===l&&(e.match(/ +$/,!1)?n.trailingSpace++:n.trailingSpace&&(n.trailingSpaceNewLine=!0)),m(n)}function c(t,e){if(">"===t.next()){e.f=e.inline=f,i.highlightFormatting&&(e.formatting="link");var n=m(e);return n?n+=" ":n="",n+T.linkInline}return t.match(/^[^>]+/,!0),T.linkInline}function d(t,e){if(t.eatSpace())return null;var n=t.next();return"("===n||"["===n?(e.f=e.inline=k("("===n?")":"]"),i.highlightFormatting&&(e.formatting="link-string"),e.linkHref=!0,m(e)):"error"}function k(t){return function(e,n){if(e.next()===t){n.f=n.inline=f,i.highlightFormatting&&(n.formatting="link-string");var r=m(n);return n.linkHref=!1,r}return e.match(H[t]),n.linkHref=!0,m(n)}}function p(t,e){return t.match(/^([^\]\\]|\\.)*\]:/,!1)?(e.f=x,t.next(),i.highlightFormatting&&(e.formatting="link"),e.linkText=!0,m(e)):r(t,e,f)}function x(t,e){if(t.match(/^\]:/,!0)){e.f=e.inline=S,i.highlightFormatting&&(e.formatting="link");var n=m(e);return e.linkText=!1,n}return t.match(/^([^\]\\]|\\.)+/,!0),T.linkText}function S(t,e){return t.eatSpace()?null:(t.match(/^[^\s]+/,!0),void 0===t.peek()?e.linkTitle=!0:t.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),e.f=e.inline=f,T.linkHref+" url")}var v=t.getMode(e,"text/html"),L="null"==v.name;void 0===i.highlightFormatting&&(i.highlightFormatting=!1),void 0===i.maxBlockquoteDepth&&(i.maxBlockquoteDepth=0),void 0===i.taskLists&&(i.taskLists=!1),void 0===i.strikethrough&&(i.strikethrough=!1),void 0===i.emoji&&(i.emoji=!1),void 0===i.fencedCodeBlockHighlighting&&(i.fencedCodeBlockHighlighting=!0),void 0===i.xml&&(i.xml=!0),void 0===i.tokenTypeOverrides&&(i.tokenTypeOverrides={});var T={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"image",imageAltText:"image-alt-text",imageMarker:"image-marker",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough",emoji:"builtin"};for(var q in T)T.hasOwnProperty(q)&&i.tokenTypeOverrides[q]&&(T[q]=i.tokenTypeOverrides[q]);var M=/^([*\-_])(?:\s*\1){2,}\s*$/,F=/^(?:[*\-+]|^[0-9]+([.)]))\s+/,b=/^\[(x| )\](?=\s)/i,E=i.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,w=/^ *(?:\={1,}|-{1,})\s*$/,j=/^[^#!\[\]*_\\<>` "'(~:]+/,y=/^(~~~+|```+)[ \t]*([\w+#-]*)[^\n`]*$/,C=/^\s*\[[^\]]+?\]:\s*\S+(\s*\S*\s*)?$/,B=/[!\"#$%&\'()*+,\-\.\/:;<=>?@\[\\\]^_`{|}~—]/,H={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/},D={startState:function(){return{f:h,prevLine:{stream:null},thisLine:{stream:null},block:h,htmlState:null,indentation:0,inline:f,text:u,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,setext:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,emoji:!1,fencedEndRE:null}},copyState:function(e){return{f:e.f,prevLine:e.prevLine,thisLine:e.thisLine,block:e.block,htmlState:e.htmlState&&t.copyState(v,e.htmlState),indentation:e.indentation,localMode:e.localMode,localState:e.localMode?t.copyState(e.localMode,e.localState):null,inline:e.inline,text:e.text,formatting:!1,linkText:e.linkText,linkTitle:e.linkTitle,code:e.code,em:e.em,strong:e.strong,strikethrough:e.strikethrough,emoji:e.emoji,header:e.header,setext:e.setext,hr:e.hr,taskList:e.taskList,list:e.list,listStack:e.listStack.slice(0),quote:e.quote,indentedCode:e.indentedCode,trailingSpace:e.trailingSpace,trailingSpaceNewLine:e.trailingSpaceNewLine,md_inside:e.md_inside,fencedEndRE:e.fencedEndRE}},token:function(t,e){if(e.formatting=!1,t!=e.thisLine.stream){if(e.header=0,e.hr=!1,t.match(/^\s*$/,!0))return o(e),null;if(e.prevLine=e.thisLine,e.thisLine={stream:t},e.taskList=!1,e.trailingSpace=0,e.trailingSpaceNewLine=!1,e.f=e.block,e.f!=s){var i=t.match(/^\s*/,!0)[0].replace(/\t/g," ").length;if(e.indentation=i,e.indentationDiff=null,i>0)return null}}return e.f(t,e)},innerMode:function(t){return t.block==s?{state:t.htmlState,mode:v}:t.localState?{state:t.localState,mode:t.localMode}:{state:t,mode:D}},indent:function(e,i,n){return e.block==s&&v.indent?v.indent(e.htmlState,i,n):e.localState&&e.localMode.indent?e.localMode.indent(e.localState,i,n):t.Pass},blankLine:o,getType:m,closeBrackets:"()[]{}''\"\"``",fold:"markdown"};return D},"xml"),t.defineMIME("text/x-markdown","markdown")});
@@ -0,0 +1 @@
1
+ !function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){function t(e,t,r){var i=e.getLineHandle(t.line),o=t.ch-1,l=r&&r.afterCursor;null==l&&(l=/(^| )cm-fat-cursor($| )/.test(e.getWrapperElement().className));var f=!l&&o>=0&&c[i.text.charAt(o)]||c[i.text.charAt(++o)];if(!f)return null;var s=">"==f.charAt(1)?1:-1;if(r&&r.strict&&s>0!=(o==t.ch))return null;var u=e.getTokenTypeAt(a(t.line,o+1)),h=n(e,a(t.line,o+(s>0?1:0)),s,u||null,r);return null==h?null:{from:a(t.line,o),to:h&&h.pos,match:h&&h.ch==f.charAt(0),forward:s>0}}function n(e,t,n,r,i){for(var o=i&&i.maxScanLineLength||1e4,l=i&&i.maxScanLines||1e3,f=[],s=i&&i.bracketRegex?i.bracketRegex:/[(){}[\]]/,u=n>0?Math.min(t.line+l,e.lastLine()+1):Math.max(e.firstLine()-1,t.line-l),h=t.line;h!=u;h+=n){var m=e.getLine(h);if(m){var d=n>0?0:m.length-1,g=n>0?m.length:-1;if(!(m.length>o))for(h==t.line&&(d=t.ch-(n<0?1:0));d!=g;d+=n){var p=m.charAt(d);if(s.test(p)&&(void 0===r||e.getTokenTypeAt(a(h,d+1))==r))if(">"==c[p].charAt(1)==n>0)f.push(p);else{if(!f.length)return{pos:a(h,d),ch:p};f.pop()}}}}return h-n!=(n>0?e.lastLine():e.firstLine())&&null}function r(e,n,r){for(var i=e.state.matchBrackets.maxHighlightLineLength||1e3,c=[],l=e.listSelections(),f=0;f<l.length;f++){var s=l[f].empty()&&t(e,l[f].head,r);if(s&&e.getLine(s.from.line).length<=i){var u=s.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket";c.push(e.markText(s.from,a(s.from.line,s.from.ch+1),{className:u})),s.to&&e.getLine(s.to.line).length<=i&&c.push(e.markText(s.to,a(s.to.line,s.to.ch+1),{className:u}))}}if(c.length){o&&e.state.focused&&e.focus();var h=function(){e.operation(function(){for(var e=0;e<c.length;e++)c[e].clear()})};if(!n)return h;setTimeout(h,800)}}function i(e){e.operation(function(){l&&(l(),l=null),l=r(e,!1,e.state.matchBrackets)})}var o=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),a=e.Pos,c={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},l=null;e.defineOption("matchBrackets",!1,function(t,n,r){r&&r!=e.Init&&(t.off("cursorActivity",i),l&&(l(),l=null)),n&&(t.state.matchBrackets="object"==typeof n?n:{},t.on("cursorActivity",i))}),e.defineExtension("matchBrackets",function(){r(this,!0)}),e.defineExtension("findMatchingBracket",function(e,n,r){return(r||"boolean"==typeof n)&&(r?(r.strict=n,n=r):n=n?{strict:!0}:null),t(this,e,n)}),e.defineExtension("scanForBracket",function(e,t,r,i){return n(this,e,t,r,i)})});
@@ -0,0 +1,236 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: https://codemirror.net/LICENSE
3
+
4
+ // Modified to have always `startOpen = true`;
5
+
6
+ (function(mod) {
7
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
8
+ mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../clike/clike"));
9
+ else if (typeof define == "function" && define.amd) // AMD
10
+ define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../clike/clike"], mod);
11
+ else // Plain browser env
12
+ mod(CodeMirror);
13
+ })(function(CodeMirror) {
14
+ "use strict";
15
+
16
+ function keywords(str) {
17
+ var obj = {}, words = str.split(" ");
18
+ for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
19
+ return obj;
20
+ }
21
+
22
+ // Helper for phpString
23
+ function matchSequence(list, end, escapes) {
24
+ if (list.length == 0) return phpString(end);
25
+ return function (stream, state) {
26
+ var patterns = list[0];
27
+ for (var i = 0; i < patterns.length; i++) if (stream.match(patterns[i][0])) {
28
+ state.tokenize = matchSequence(list.slice(1), end);
29
+ return patterns[i][1];
30
+ }
31
+ state.tokenize = phpString(end, escapes);
32
+ return "string";
33
+ };
34
+ }
35
+ function phpString(closing, escapes) {
36
+ return function(stream, state) { return phpString_(stream, state, closing, escapes); };
37
+ }
38
+ function phpString_(stream, state, closing, escapes) {
39
+ // "Complex" syntax
40
+ if (escapes !== false && stream.match("${", false) || stream.match("{$", false)) {
41
+ state.tokenize = null;
42
+ return "string";
43
+ }
44
+
45
+ // Simple syntax
46
+ if (escapes !== false && stream.match(/^\$[a-zA-Z_][a-zA-Z0-9_]*/)) {
47
+ // After the variable name there may appear array or object operator.
48
+ if (stream.match("[", false)) {
49
+ // Match array operator
50
+ state.tokenize = matchSequence([
51
+ [["[", null]],
52
+ [[/\d[\w\.]*/, "number"],
53
+ [/\$[a-zA-Z_][a-zA-Z0-9_]*/, "variable-2"],
54
+ [/[\w\$]+/, "variable"]],
55
+ [["]", null]]
56
+ ], closing, escapes);
57
+ }
58
+ if (stream.match(/\-\>\w/, false)) {
59
+ // Match object operator
60
+ state.tokenize = matchSequence([
61
+ [["->", null]],
62
+ [[/[\w]+/, "variable"]]
63
+ ], closing, escapes);
64
+ }
65
+ return "variable-2";
66
+ }
67
+
68
+ var escaped = false;
69
+ // Normal string
70
+ while (!stream.eol() &&
71
+ (escaped || escapes === false ||
72
+ (!stream.match("{$", false) &&
73
+ !stream.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/, false)))) {
74
+ if (!escaped && stream.match(closing)) {
75
+ state.tokenize = null;
76
+ state.tokStack.pop(); state.tokStack.pop();
77
+ break;
78
+ }
79
+ escaped = stream.next() == "\\" && !escaped;
80
+ }
81
+ return "string";
82
+ }
83
+
84
+ var phpKeywords = "abstract and array as break case catch class clone const continue declare default " +
85
+ "do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final " +
86
+ "for foreach function global goto if implements interface instanceof namespace " +
87
+ "new or private protected public static switch throw trait try use var while xor " +
88
+ "die echo empty exit eval include include_once isset list require require_once return " +
89
+ "print unset __halt_compiler self static parent yield insteadof finally";
90
+ var phpAtoms = "true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__";
91
+ var phpBuiltin = "func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents file_put_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists array_intersect_key array_combine array_column pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count";
92
+ CodeMirror.registerHelper("hintWords", "php", [phpKeywords, phpAtoms, phpBuiltin].join(" ").split(" "));
93
+ CodeMirror.registerHelper("wordChars", "php", /[\w$]/);
94
+
95
+ var phpConfig = {
96
+ name: "clike",
97
+ helperType: "php",
98
+ keywords: keywords(phpKeywords),
99
+ blockKeywords: keywords("catch do else elseif for foreach if switch try while finally"),
100
+ defKeywords: keywords("class function interface namespace trait"),
101
+ atoms: keywords(phpAtoms),
102
+ builtin: keywords(phpBuiltin),
103
+ multiLineStrings: true,
104
+ hooks: {
105
+ "$": function(stream) {
106
+ stream.eatWhile(/[\w\$_]/);
107
+ return "variable-2";
108
+ },
109
+ "<": function(stream, state) {
110
+ var before;
111
+ if (before = stream.match(/<<\s*/)) {
112
+ var quoted = stream.eat(/['"]/);
113
+ stream.eatWhile(/[\w\.]/);
114
+ var delim = stream.current().slice(before[0].length + (quoted ? 2 : 1));
115
+ if (quoted) stream.eat(quoted);
116
+ if (delim) {
117
+ (state.tokStack || (state.tokStack = [])).push(delim, 0);
118
+ state.tokenize = phpString(delim, quoted != "'");
119
+ return "string";
120
+ }
121
+ }
122
+ return false;
123
+ },
124
+ "#": function(stream) {
125
+ while (!stream.eol() && !stream.match("?>", false)) stream.next();
126
+ return "comment";
127
+ },
128
+ "/": function(stream) {
129
+ if (stream.eat("/")) {
130
+ while (!stream.eol() && !stream.match("?>", false)) stream.next();
131
+ return "comment";
132
+ }
133
+ return false;
134
+ },
135
+ '"': function(_stream, state) {
136
+ (state.tokStack || (state.tokStack = [])).push('"', 0);
137
+ state.tokenize = phpString('"');
138
+ return "string";
139
+ },
140
+ "{": function(_stream, state) {
141
+ if (state.tokStack && state.tokStack.length)
142
+ state.tokStack[state.tokStack.length - 1]++;
143
+ return false;
144
+ },
145
+ "}": function(_stream, state) {
146
+ if (state.tokStack && state.tokStack.length > 0 &&
147
+ !--state.tokStack[state.tokStack.length - 1]) {
148
+ state.tokenize = phpString(state.tokStack[state.tokStack.length - 2]);
149
+ }
150
+ return false;
151
+ }
152
+ }
153
+ };
154
+
155
+ CodeMirror.defineMode("php", function(config, parserConfig) {
156
+ var htmlMode = CodeMirror.getMode(config, (parserConfig && parserConfig.htmlMode) || "text/html");
157
+ var phpMode = CodeMirror.getMode(config, phpConfig);
158
+
159
+ function dispatch(stream, state) {
160
+ var isPHP = state.curMode == phpMode;
161
+ if (stream.sol() && state.pending && state.pending != '"' && state.pending != "'") state.pending = null;
162
+ if (!isPHP) {
163
+ if (stream.match(/^<\?\w*/)) {
164
+ state.curMode = phpMode;
165
+ if (!state.php) state.php = CodeMirror.startState(phpMode, htmlMode.indent(state.html, ""))
166
+ state.curState = state.php;
167
+ return "meta";
168
+ }
169
+ if (state.pending == '"' || state.pending == "'") {
170
+ while (!stream.eol() && stream.next() != state.pending) {}
171
+ var style = "string";
172
+ } else if (state.pending && stream.pos < state.pending.end) {
173
+ stream.pos = state.pending.end;
174
+ var style = state.pending.style;
175
+ } else {
176
+ var style = htmlMode.token(stream, state.curState);
177
+ }
178
+ if (state.pending) state.pending = null;
179
+ var cur = stream.current(), openPHP = cur.search(/<\?/), m;
180
+ if (openPHP != -1) {
181
+ if (style == "string" && (m = cur.match(/[\'\"]$/)) && !/\?>/.test(cur)) state.pending = m[0];
182
+ else state.pending = {end: stream.pos, style: style};
183
+ stream.backUp(cur.length - openPHP);
184
+ }
185
+ return style;
186
+ } else if (isPHP && state.php.tokenize == null && stream.match("?>")) {
187
+ state.curMode = htmlMode;
188
+ state.curState = state.html;
189
+ if (!state.php.context.prev) state.php = null;
190
+ return "meta";
191
+ } else {
192
+ return phpMode.token(stream, state.curState);
193
+ }
194
+ }
195
+
196
+ return {
197
+ startState: function() {
198
+ var html = CodeMirror.startState(htmlMode)
199
+ var php = (parserConfig.startOpen || true) ? CodeMirror.startState(phpMode) : null
200
+ return {html: html,
201
+ php: php,
202
+ curMode: (parserConfig.startOpen || true) ? phpMode : htmlMode,
203
+ curState: (parserConfig.startOpen || true) ? php : html,
204
+ pending: null};
205
+ },
206
+
207
+ copyState: function(state) {
208
+ var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html),
209
+ php = state.php, phpNew = php && CodeMirror.copyState(phpMode, php), cur;
210
+ if (state.curMode == htmlMode) cur = htmlNew;
211
+ else cur = phpNew;
212
+ return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur,
213
+ pending: state.pending};
214
+ },
215
+
216
+ token: dispatch,
217
+
218
+ indent: function(state, textAfter) {
219
+ if ((state.curMode != phpMode && /^\s*<\//.test(textAfter)) ||
220
+ (state.curMode == phpMode && /^\?>/.test(textAfter)))
221
+ return htmlMode.indent(state.html, textAfter);
222
+ return state.curMode.indent(state.curState, textAfter);
223
+ },
224
+
225
+ blockCommentStart: "/*",
226
+ blockCommentEnd: "*/",
227
+ lineComment: "//",
228
+
229
+ innerMode: function(state) { return {state: state.curState, mode: state.curMode}; }
230
+ };
231
+ }, "htmlmixed", "clike");
232
+
233
+ CodeMirror.defineMIME("application/x-httpd-php", "php");
234
+ CodeMirror.defineMIME("application/x-httpd-php-open", {name: "php", startOpen: true});
235
+ CodeMirror.defineMIME("text/x-php", phpConfig);
236
+ });
@@ -0,0 +1 @@
1
+ !function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){function o(e){e.state.placeholder&&(e.state.placeholder.parentNode.removeChild(e.state.placeholder),e.state.placeholder=null)}function r(e){o(e);var r=e.state.placeholder=document.createElement("pre");r.style.cssText="height: 0; overflow: visible",r.className="CodeMirror-placeholder";var t=e.getOption("placeholder");"string"==typeof t&&(t=document.createTextNode(t)),r.appendChild(t),e.display.lineSpace.insertBefore(r,e.display.lineSpace.firstChild)}function t(e){n(e)&&r(e)}function a(e){var t=e.getWrapperElement(),a=n(e);t.className=t.className.replace(" CodeMirror-empty","")+(a?" CodeMirror-empty":""),a?r(e):o(e)}function n(e){return 1===e.lineCount()&&""===e.getLine(0)}e.defineOption("placeholder","",function(r,n,l){var i=l&&l!=e.Init;if(n&&!i)r.on("blur",t),r.on("change",a),r.on("swapDoc",a),a(r);else if(!n&&i){r.off("blur",t),r.off("change",a),r.off("swapDoc",a),o(r);var c=r.getWrapperElement();c.className=c.className.replace(" CodeMirror-empty","")}n&&!r.hasFocus()&&t(r)})});
@@ -0,0 +1 @@
1
+ registerAutocomplete('prolog', ('findall forall not length member sumlist is').split(' '));
@@ -0,0 +1,1089 @@
1
+ // Parts from Ace; see <https://raw.githubusercontent.com/ajaxorg/ace/master/LICENSE>
2
+ CodeMirror.defineMode("prolog", function(cmCfg, modeCfg) {
3
+
4
+ // Fake define() function.
5
+ var moduleHolder = Object.create(null);
6
+
7
+ // Given a module path as a string, create the canonical version
8
+ // (no leading ./, no ending .js).
9
+ var canonicalPath = function(path) {
10
+ return path.replace(/\.\//, '').replace(/\.js$/, '');
11
+ };
12
+
13
+ // We intentionally add the `path` argument to `define()`.
14
+ var define = function(path, init) {
15
+ var exports = Object.create(null);
16
+ init(require, exports); // module (3rd parameter) isn't supported.
17
+ moduleHolder[canonicalPath(path)] = exports;
18
+ };
19
+
20
+ // path: string of the location of the JS file.
21
+ var require = function(path) { return moduleHolder[canonicalPath(path)]; };
22
+
23
+ // All dependencies here.
24
+ define("../lib/oop.js", function(require, exports, module) {
25
+ "use strict";
26
+
27
+ exports.inherits = function(ctor, superCtor) {
28
+ ctor.super_ = superCtor;
29
+ ctor.prototype = Object.create(superCtor.prototype, {
30
+ constructor: {
31
+ value: ctor,
32
+ enumerable: false,
33
+ writable: true,
34
+ configurable: true
35
+ }
36
+ });
37
+ };
38
+
39
+ exports.mixin = function(obj, mixin) {
40
+ for (var key in mixin) {
41
+ obj[key] = mixin[key];
42
+ }
43
+ return obj;
44
+ };
45
+
46
+ exports.implement = function(proto, mixin) {
47
+ exports.mixin(proto, mixin);
48
+ };
49
+
50
+ });
51
+
52
+
53
+ define("../lib/lang.js", function(require, exports, module) {
54
+ "use strict";
55
+
56
+ exports.last = function(a) {
57
+ return a[a.length - 1];
58
+ };
59
+
60
+ exports.stringReverse = function(string) {
61
+ return string.split("").reverse().join("");
62
+ };
63
+
64
+ exports.stringRepeat = function (string, count) {
65
+ var result = '';
66
+ while (count > 0) {
67
+ if (count & 1)
68
+ result += string;
69
+
70
+ if (count >>= 1)
71
+ string += string;
72
+ }
73
+ return result;
74
+ };
75
+
76
+ var trimBeginRegexp = /^\s\s*/;
77
+ var trimEndRegexp = /\s\s*$/;
78
+
79
+ exports.stringTrimLeft = function (string) {
80
+ return string.replace(trimBeginRegexp, '');
81
+ };
82
+
83
+ exports.stringTrimRight = function (string) {
84
+ return string.replace(trimEndRegexp, '');
85
+ };
86
+
87
+ exports.copyObject = function(obj) {
88
+ var copy = {};
89
+ for (var key in obj) {
90
+ copy[key] = obj[key];
91
+ }
92
+ return copy;
93
+ };
94
+
95
+ exports.copyArray = function(array){
96
+ var copy = [];
97
+ for (var i=0, l=array.length; i<l; i++) {
98
+ if (array[i] && typeof array[i] == "object")
99
+ copy[i] = this.copyObject(array[i]);
100
+ else
101
+ copy[i] = array[i];
102
+ }
103
+ return copy;
104
+ };
105
+
106
+ exports.deepCopy = function deepCopy(obj) {
107
+ if (typeof obj !== "object" || !obj)
108
+ return obj;
109
+ var copy;
110
+ if (Array.isArray(obj)) {
111
+ copy = [];
112
+ for (var key = 0; key < obj.length; key++) {
113
+ copy[key] = deepCopy(obj[key]);
114
+ }
115
+ return copy;
116
+ }
117
+ if (Object.prototype.toString.call(obj) !== "[object Object]")
118
+ return obj;
119
+
120
+ copy = {};
121
+ for (var key in obj)
122
+ copy[key] = deepCopy(obj[key]);
123
+ return copy;
124
+ };
125
+
126
+ exports.arrayToMap = function(arr) {
127
+ var map = {};
128
+ for (var i=0; i<arr.length; i++) {
129
+ map[arr[i]] = 1;
130
+ }
131
+ return map;
132
+
133
+ };
134
+
135
+ exports.createMap = function(props) {
136
+ var map = Object.create(null);
137
+ for (var i in props) {
138
+ map[i] = props[i];
139
+ }
140
+ return map;
141
+ };
142
+
143
+ /*
144
+ * splice out of 'array' anything that === 'value'
145
+ */
146
+ exports.arrayRemove = function(array, value) {
147
+ for (var i = 0; i <= array.length; i++) {
148
+ if (value === array[i]) {
149
+ array.splice(i, 1);
150
+ }
151
+ }
152
+ };
153
+
154
+ exports.escapeRegExp = function(str) {
155
+ return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
156
+ };
157
+
158
+ exports.escapeHTML = function(str) {
159
+ return str.replace(/&/g, "&#38;").replace(/"/g, "&#34;").replace(/'/g, "&#39;").replace(/</g, "&#60;");
160
+ };
161
+
162
+ exports.getMatchOffsets = function(string, regExp) {
163
+ var matches = [];
164
+
165
+ string.replace(regExp, function(str) {
166
+ matches.push({
167
+ offset: arguments[arguments.length-2],
168
+ length: str.length
169
+ });
170
+ });
171
+
172
+ return matches;
173
+ };
174
+
175
+ /* deprecated */
176
+ exports.deferredCall = function(fcn) {
177
+ var timer = null;
178
+ var callback = function() {
179
+ timer = null;
180
+ fcn();
181
+ };
182
+
183
+ var deferred = function(timeout) {
184
+ deferred.cancel();
185
+ timer = setTimeout(callback, timeout || 0);
186
+ return deferred;
187
+ };
188
+
189
+ deferred.schedule = deferred;
190
+
191
+ deferred.call = function() {
192
+ this.cancel();
193
+ fcn();
194
+ return deferred;
195
+ };
196
+
197
+ deferred.cancel = function() {
198
+ clearTimeout(timer);
199
+ timer = null;
200
+ return deferred;
201
+ };
202
+
203
+ deferred.isPending = function() {
204
+ return timer;
205
+ };
206
+
207
+ return deferred;
208
+ };
209
+
210
+
211
+ exports.delayedCall = function(fcn, defaultTimeout) {
212
+ var timer = null;
213
+ var callback = function() {
214
+ timer = null;
215
+ fcn();
216
+ };
217
+
218
+ var _self = function(timeout) {
219
+ if (timer == null)
220
+ timer = setTimeout(callback, timeout || defaultTimeout);
221
+ };
222
+
223
+ _self.delay = function(timeout) {
224
+ timer && clearTimeout(timer);
225
+ timer = setTimeout(callback, timeout || defaultTimeout);
226
+ };
227
+ _self.schedule = _self;
228
+
229
+ _self.call = function() {
230
+ this.cancel();
231
+ fcn();
232
+ };
233
+
234
+ _self.cancel = function() {
235
+ timer && clearTimeout(timer);
236
+ timer = null;
237
+ };
238
+
239
+ _self.isPending = function() {
240
+ return timer;
241
+ };
242
+
243
+ return _self;
244
+ };
245
+ });
246
+
247
+
248
+ define("./text_highlight_rules.js", function(require, exports, module) {
249
+ "use strict";
250
+
251
+ var lang = require("../lib/lang");
252
+
253
+ var TextHighlightRules = function() {
254
+
255
+ // regexp must not have capturing parentheses
256
+ // regexps are ordered -> the first match is used
257
+
258
+ this.$rules = {
259
+ "start" : [{
260
+ token : "empty_line",
261
+ regex : '^$'
262
+ }, {
263
+ defaultToken : "text"
264
+ }]
265
+ };
266
+ };
267
+
268
+ (function() {
269
+
270
+ this.addRules = function(rules, prefix) {
271
+ if (!prefix) {
272
+ for (var key in rules)
273
+ this.$rules[key] = rules[key];
274
+ return;
275
+ }
276
+ for (var key in rules) {
277
+ var state = rules[key];
278
+ for (var i = 0; i < state.length; i++) {
279
+ var rule = state[i];
280
+ if (rule.next || rule.onMatch) {
281
+ if (typeof rule.next == "string") {
282
+ if (rule.next.indexOf(prefix) !== 0)
283
+ rule.next = prefix + rule.next;
284
+ }
285
+ if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)
286
+ rule.nextState = prefix + rule.nextState;
287
+ }
288
+ }
289
+ this.$rules[prefix + key] = state;
290
+ }
291
+ };
292
+
293
+ this.getRules = function() {
294
+ return this.$rules;
295
+ };
296
+
297
+ this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {
298
+ var embedRules = typeof HighlightRules == "function"
299
+ ? new HighlightRules().getRules()
300
+ : HighlightRules;
301
+ if (states) {
302
+ for (var i = 0; i < states.length; i++)
303
+ states[i] = prefix + states[i];
304
+ } else {
305
+ states = [];
306
+ for (var key in embedRules)
307
+ states.push(prefix + key);
308
+ }
309
+
310
+ this.addRules(embedRules, prefix);
311
+
312
+ if (escapeRules) {
313
+ var addRules = Array.prototype[append ? "push" : "unshift"];
314
+ for (var i = 0; i < states.length; i++)
315
+ addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));
316
+ }
317
+
318
+ if (!this.$embeds)
319
+ this.$embeds = [];
320
+ this.$embeds.push(prefix);
321
+ };
322
+
323
+ this.getEmbeds = function() {
324
+ return this.$embeds;
325
+ };
326
+
327
+ var pushState = function(currentState, stack) {
328
+ if (currentState != "start" || stack.length)
329
+ stack.unshift(this.nextState, currentState);
330
+ return this.nextState;
331
+ };
332
+ var popState = function(currentState, stack) {
333
+ // if (stack[0] === currentState)
334
+ stack.shift();
335
+ return stack.shift() || "start";
336
+ };
337
+
338
+ this.normalizeRules = function() {
339
+ var id = 0;
340
+ var rules = this.$rules;
341
+ function processState(key) {
342
+ var state = rules[key];
343
+ state.processed = true;
344
+ for (var i = 0; i < state.length; i++) {
345
+ var rule = state[i];
346
+ var toInsert = null;
347
+ if (Array.isArray(rule)) {
348
+ toInsert = rule;
349
+ rule = {};
350
+ }
351
+ if (!rule.regex && rule.start) {
352
+ rule.regex = rule.start;
353
+ if (!rule.next)
354
+ rule.next = [];
355
+ rule.next.push({
356
+ defaultToken: rule.token
357
+ }, {
358
+ token: rule.token + ".end",
359
+ regex: rule.end || rule.start,
360
+ next: "pop"
361
+ });
362
+ rule.token = rule.token + ".start";
363
+ rule.push = true;
364
+ }
365
+ var next = rule.next || rule.push;
366
+ if (next && Array.isArray(next)) {
367
+ var stateName = rule.stateName;
368
+ if (!stateName) {
369
+ stateName = rule.token;
370
+ if (typeof stateName != "string")
371
+ stateName = stateName[0] || "";
372
+ if (rules[stateName])
373
+ stateName += id++;
374
+ }
375
+ rules[stateName] = next;
376
+ rule.next = stateName;
377
+ processState(stateName);
378
+ } else if (next == "pop") {
379
+ rule.next = popState;
380
+ }
381
+
382
+ if (rule.push) {
383
+ rule.nextState = rule.next || rule.push;
384
+ rule.next = pushState;
385
+ delete rule.push;
386
+ }
387
+
388
+ if (rule.rules) {
389
+ for (var r in rule.rules) {
390
+ if (rules[r]) {
391
+ if (rules[r].push)
392
+ rules[r].push.apply(rules[r], rule.rules[r]);
393
+ } else {
394
+ rules[r] = rule.rules[r];
395
+ }
396
+ }
397
+ }
398
+ var includeName = typeof rule == "string" ? rule : rule.include;
399
+ if (includeName) {
400
+ if (Array.isArray(includeName))
401
+ toInsert = includeName.map(function(x) { return rules[x]; });
402
+ else
403
+ toInsert = rules[includeName];
404
+ }
405
+
406
+ if (toInsert) {
407
+ var args = [i, 1].concat(toInsert);
408
+ if (rule.noEscape)
409
+ args = args.filter(function(x) {return !x.next;});
410
+ state.splice.apply(state, args);
411
+ // skip included rules since they are already processed
412
+ //i += args.length - 3;
413
+ i--;
414
+ }
415
+
416
+ if (rule.keywordMap) {
417
+ rule.token = this.createKeywordMapper(
418
+ rule.keywordMap, rule.defaultToken || "text", rule.caseInsensitive
419
+ );
420
+ delete rule.defaultToken;
421
+ }
422
+ }
423
+ }
424
+ Object.keys(rules).forEach(processState, this);
425
+ };
426
+
427
+ this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {
428
+ var keywords = Object.create(null);
429
+ Object.keys(map).forEach(function(className) {
430
+ var a = map[className];
431
+ if (ignoreCase)
432
+ a = a.toLowerCase();
433
+ var list = a.split(splitChar || "|");
434
+ for (var i = list.length; i--; )
435
+ keywords[list[i]] = className;
436
+ });
437
+ // in old versions of opera keywords["__proto__"] sets prototype
438
+ // even on objects with __proto__=null
439
+ if (Object.getPrototypeOf(keywords)) {
440
+ keywords.__proto__ = null;
441
+ }
442
+ this.$keywordList = Object.keys(keywords);
443
+ map = null;
444
+ return ignoreCase
445
+ ? function(value) {return keywords[value.toLowerCase()] || defaultToken; }
446
+ : function(value) {return keywords[value] || defaultToken; };
447
+ };
448
+
449
+ this.getKeywords = function() {
450
+ return this.$keywords;
451
+ };
452
+
453
+ }).call(TextHighlightRules.prototype);
454
+
455
+ exports.TextHighlightRules = TextHighlightRules;
456
+ });
457
+
458
+
459
+ define("prolog_highlight_rules", function(require, exports, module) {
460
+ "use strict";
461
+
462
+ var oop = require("../lib/oop");
463
+ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
464
+
465
+ var PrologHighlightRules = function() {
466
+ // regexp must not have capturing parentheses. Use (?:) instead.
467
+ // regexps are ordered -> the first match is used
468
+
469
+ this.$rules = { start:
470
+ [ { include: '#comment' },
471
+ { include: '#basic_fact' },
472
+ { include: '#rule' },
473
+ { include: '#directive' },
474
+ { include: '#fact' } ],
475
+ '#atom':
476
+ [ { token: 'constant.other.atom.prolog',
477
+ regex: '\\b[a-z][a-zA-Z0-9_]*\\b' },
478
+ { token: 'constant.numeric.prolog',
479
+ regex: '-?\\d+(?:\\.\\d+)?' },
480
+ { include: '#string' } ],
481
+ '#basic_elem':
482
+ [ { include: '#comment' },
483
+ { include: '#statement' },
484
+ { include: '#constants' },
485
+ { include: '#operators' },
486
+ { include: '#builtins' },
487
+ { include: '#list' },
488
+ { include: '#atom' },
489
+ { include: '#variable' } ],
490
+ '#basic_fact':
491
+ [ { token:
492
+ [ 'entity.name.function.fact.basic.prolog',
493
+ 'punctuation.end.fact.basic.prolog' ],
494
+ regex: '([a-z]\\w*)(\\.)' } ],
495
+ '#builtins':
496
+ [ { token: 'support.function.builtin.prolog',
497
+ regex: '\\b(?:abolish|abort|ancestors|arg|ascii|assert[az]|atom(?:ic)?|body|char|close|conc|concat|consult|define|definition|dynamic|dump|fail|file|free|free_proc|functor|getc|goal|halt|head|head|integer|length|listing|match_args|member|next_clause|nl|nonvar|nth|number|cvars|nvars|offset|op|print?|prompt|putc|quoted|ratom|read|redefine|rename|retract(?:all)?|see|seeing|seen|skip|spy|statistics|system|tab|tell|telling|term|time|told|univ|unlink_clause|unspy_predicate|var|write)\\b' } ],
498
+ '#comment':
499
+ [ { token:
500
+ [ 'punctuation.definition.comment.prolog',
501
+ 'comment.line.percentage.prolog' ],
502
+ regex: '(%)(.*$)' },
503
+ { token: 'punctuation.definition.comment.prolog',
504
+ regex: '/\\*',
505
+ push:
506
+ [ { token: 'punctuation.definition.comment.prolog',
507
+ regex: '\\*/',
508
+ next: 'pop' },
509
+ { defaultToken: 'comment.block.prolog' } ] } ],
510
+ '#constants':
511
+ [ { token: 'constant.language.prolog',
512
+ regex: '\\b(?:true|false|yes|no)\\b' } ],
513
+ '#directive':
514
+ [ { token: 'keyword.operator.directive.prolog',
515
+ regex: ':-',
516
+ push:
517
+ [ { token: 'meta.directive.prolog', regex: '\\.', next: 'pop' },
518
+ { include: '#comment' },
519
+ { include: '#statement' },
520
+ { defaultToken: 'meta.directive.prolog' } ] } ],
521
+ '#expr':
522
+ [ { include: '#comments' },
523
+ { token: 'meta.expression.prolog',
524
+ regex: '\\(',
525
+ push:
526
+ [ { token: 'meta.expression.prolog', regex: '\\)', next: 'pop' },
527
+ { include: '#expr' },
528
+ { defaultToken: 'meta.expression.prolog' } ] },
529
+ { token: 'keyword.control.cutoff.prolog', regex: '!' },
530
+ { token: 'punctuation.control.and.prolog', regex: ',' },
531
+ { token: 'punctuation.control.or.prolog', regex: ';' },
532
+ { include: '#basic_elem' } ],
533
+ '#fact':
534
+ [ { token:
535
+ [ 'entity.name.function.fact.prolog',
536
+ 'punctuation.begin.fact.parameters.prolog' ],
537
+ regex: '([a-z]\\w*)(\\()(?!.*:-)',
538
+ push:
539
+ [ { token:
540
+ [ 'punctuation.end.fact.parameters.prolog',
541
+ 'punctuation.end.fact.prolog' ],
542
+ regex: '(\\))(\\.?)',
543
+ next: 'pop' },
544
+ { include: '#parameter' },
545
+ { defaultToken: 'meta.fact.prolog' } ] } ],
546
+ '#list':
547
+ [ { token: 'punctuation.begin.list.prolog',
548
+ regex: '\\[(?=.*\\])',
549
+ push:
550
+ [ { token: 'punctuation.end.list.prolog',
551
+ regex: '\\]',
552
+ next: 'pop' },
553
+ { include: '#comment' },
554
+ { token: 'punctuation.separator.list.prolog', regex: ',' },
555
+ { token: 'punctuation.concat.list.prolog',
556
+ regex: '\\|',
557
+ push:
558
+ [ { token: 'meta.list.concat.prolog',
559
+ regex: '(?=\\s*\\])',
560
+ next: 'pop' },
561
+ { include: '#basic_elem' },
562
+ { defaultToken: 'meta.list.concat.prolog' } ] },
563
+ { include: '#basic_elem' },
564
+ { defaultToken: 'meta.list.prolog' } ] } ],
565
+ '#operators':
566
+ [ { token: 'keyword.operator.prolog',
567
+ regex: '\\\\\\+|\\bnot\\b|\\bis\\b|->|[><]|[><\\\\:=]?=|(?:=\\\\|\\\\=)=' } ],
568
+ '#parameter':
569
+ [ { token: 'variable.language.anonymous.prolog',
570
+ regex: '\\b_\\b' },
571
+ { token: 'variable.parameter.prolog',
572
+ regex: '\\b[A-Z_]\\w*\\b' },
573
+ { token: 'punctuation.separator.parameters.prolog', regex: ',' },
574
+ { include: '#basic_elem' },
575
+ { token: 'text', regex: '[^\\s]' } ],
576
+ '#rule':
577
+ [ { token: 'meta.rule.prolog',
578
+ regex: '(?=[a-z]\\w*.*:-)',
579
+ push:
580
+ [ { token: 'punctuation.rule.end.prolog',
581
+ regex: '\\.',
582
+ next: 'pop' },
583
+ { token: 'meta.rule.signature.prolog',
584
+ regex: '(?=[a-z]\\w*.*:-)',
585
+ push:
586
+ [ { token: 'meta.rule.signature.prolog',
587
+ regex: '(?=:-)',
588
+ next: 'pop' },
589
+ { token: 'entity.name.function.rule.prolog',
590
+ regex: '[a-z]\\w*(?=\\(|\\s*:-)' },
591
+ { token: 'punctuation.rule.parameters.begin.prolog',
592
+ regex: '\\(',
593
+ push:
594
+ [ { token: 'punctuation.rule.parameters.end.prolog',
595
+ regex: '\\)',
596
+ next: 'pop' },
597
+ { include: '#parameter' },
598
+ { defaultToken: 'meta.rule.parameters.prolog' } ] },
599
+ { defaultToken: 'meta.rule.signature.prolog' } ] },
600
+ { token: 'keyword.operator.definition.prolog',
601
+ regex: ':-',
602
+ push:
603
+ [ { token: 'meta.rule.definition.prolog',
604
+ regex: '(?=\\.)',
605
+ next: 'pop' },
606
+ { include: '#comment' },
607
+ { include: '#expr' },
608
+ { defaultToken: 'meta.rule.definition.prolog' } ] },
609
+ { defaultToken: 'meta.rule.prolog' } ] } ],
610
+ '#statement':
611
+ [ { token: 'meta.statement.prolog',
612
+ regex: '(?=[a-z]\\w*\\()',
613
+ push:
614
+ [ { token: 'punctuation.end.statement.parameters.prolog',
615
+ regex: '\\)',
616
+ next: 'pop' },
617
+ { include: '#builtins' },
618
+ { include: '#atom' },
619
+ { token: 'punctuation.begin.statement.parameters.prolog',
620
+ regex: '\\(',
621
+ push:
622
+ [ { token: 'meta.statement.parameters.prolog',
623
+ regex: '(?=\\))',
624
+ next: 'pop' },
625
+ { token: 'punctuation.separator.statement.prolog', regex: ',' },
626
+ { include: '#basic_elem' },
627
+ { defaultToken: 'meta.statement.parameters.prolog' } ] },
628
+ { defaultToken: 'meta.statement.prolog' } ] } ],
629
+ '#string':
630
+ [ { token: 'punctuation.definition.string.begin.prolog',
631
+ regex: '\'',
632
+ push:
633
+ [ { token: 'punctuation.definition.string.end.prolog',
634
+ regex: '\'',
635
+ next: 'pop' },
636
+ { token: 'constant.character.escape.prolog', regex: '\\\\.' },
637
+ { token: 'constant.character.escape.quote.prolog',
638
+ regex: '\'\'' },
639
+ { defaultToken: 'string.quoted.single.prolog' } ] } ],
640
+ '#variable':
641
+ [ { token: 'variable.language.anonymous.prolog',
642
+ regex: '\\b_\\b' },
643
+ { token: 'variable.other.prolog',
644
+ regex: '\\b[A-Z_][a-zA-Z0-9_]*\\b' } ] };
645
+
646
+ this.normalizeRules();
647
+ };
648
+
649
+ PrologHighlightRules.metaData = { fileTypes: [ 'plg', 'prolog' ],
650
+ foldingStartMarker: '(%\\s*region \\w*)|([a-z]\\w*.*:- ?)',
651
+ foldingStopMarker: '(%\\s*end(\\s*region)?)|(?=\\.)',
652
+ keyEquivalent: '^~P',
653
+ name: 'Prolog',
654
+ scopeName: 'source.prolog' };
655
+
656
+
657
+ oop.inherits(PrologHighlightRules, TextHighlightRules);
658
+
659
+ exports.PrologHighlightRules = PrologHighlightRules;
660
+ });
661
+
662
+
663
+ // Ace highlight rules function imported below.
664
+ var HighlightRules = require("prolog_highlight_rules").PrologHighlightRules;
665
+
666
+
667
+
668
+ // Ace's Syntax Tokenizer.
669
+
670
+ // tokenizing lines longer than this makes editor very slow
671
+ var MAX_TOKEN_COUNT = 1000;
672
+ var Tokenizer = function(rules) {
673
+ this.states = rules;
674
+
675
+ this.regExps = {};
676
+ this.matchMappings = {};
677
+ for (var key in this.states) {
678
+ var state = this.states[key];
679
+ var ruleRegExps = [];
680
+ var matchTotal = 0;
681
+ var mapping = this.matchMappings[key] = {defaultToken: "text"};
682
+ var flag = "g";
683
+
684
+ var splitterRurles = [];
685
+ for (var i = 0; i < state.length; i++) {
686
+ var rule = state[i];
687
+ if (rule.defaultToken)
688
+ mapping.defaultToken = rule.defaultToken;
689
+ if (rule.caseInsensitive)
690
+ flag = "gi";
691
+ if (rule.regex == null)
692
+ continue;
693
+
694
+ if (rule.regex instanceof RegExp)
695
+ rule.regex = rule.regex.toString().slice(1, -1);
696
+
697
+ // Count number of matching groups. 2 extra groups from the full match
698
+ // And the catch-all on the end (used to force a match);
699
+ var adjustedregex = rule.regex;
700
+ var matchcount = new RegExp("(?:(" + adjustedregex + ")|(.))").exec("a").length - 2;
701
+ if (Array.isArray(rule.token)) {
702
+ if (rule.token.length == 1 || matchcount == 1) {
703
+ rule.token = rule.token[0];
704
+ } else if (matchcount - 1 != rule.token.length) {
705
+ throw new Error("number of classes and regexp groups in '" +
706
+ rule.token + "'\n'" + rule.regex + "' doesn't match\n"
707
+ + (matchcount - 1) + "!=" + rule.token.length);
708
+ } else {
709
+ rule.tokenArray = rule.token;
710
+ rule.token = null;
711
+ rule.onMatch = this.$arrayTokens;
712
+ }
713
+ } else if (typeof rule.token == "function" && !rule.onMatch) {
714
+ if (matchcount > 1)
715
+ rule.onMatch = this.$applyToken;
716
+ else
717
+ rule.onMatch = rule.token;
718
+ }
719
+
720
+ if (matchcount > 1) {
721
+ if (/\\\d/.test(rule.regex)) {
722
+ // Replace any backreferences and offset appropriately.
723
+ adjustedregex = rule.regex.replace(/\\([0-9]+)/g, function(match, digit) {
724
+ return "\\" + (parseInt(digit, 10) + matchTotal + 1);
725
+ });
726
+ } else {
727
+ matchcount = 1;
728
+ adjustedregex = this.removeCapturingGroups(rule.regex);
729
+ }
730
+ if (!rule.splitRegex && typeof rule.token != "string")
731
+ splitterRurles.push(rule); // flag will be known only at the very end
732
+ }
733
+
734
+ mapping[matchTotal] = i;
735
+ matchTotal += matchcount;
736
+
737
+ ruleRegExps.push(adjustedregex);
738
+
739
+ // makes property access faster
740
+ if (!rule.onMatch)
741
+ rule.onMatch = null;
742
+ }
743
+
744
+ splitterRurles.forEach(function(rule) {
745
+ rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);
746
+ }, this);
747
+
748
+ this.regExps[key] = new RegExp("(" + ruleRegExps.join(")|(") + ")|($)", flag);
749
+ }
750
+ };
751
+
752
+ (function() {
753
+ this.$setMaxTokenCount = function(m) {
754
+ MAX_TOKEN_COUNT = m | 0;
755
+ };
756
+
757
+ this.$applyToken = function(str) {
758
+ var values = this.splitRegex.exec(str).slice(1);
759
+ var types = this.token.apply(this, values);
760
+
761
+ // required for compatibility with old modes
762
+ if (typeof types === "string")
763
+ return [{type: types, value: str}];
764
+
765
+ var tokens = [];
766
+ for (var i = 0, l = types.length; i < l; i++) {
767
+ if (values[i])
768
+ tokens[tokens.length] = {
769
+ type: types[i],
770
+ value: values[i]
771
+ };
772
+ }
773
+ return tokens;
774
+ },
775
+
776
+ this.$arrayTokens = function(str) {
777
+ if (!str)
778
+ return [];
779
+ var values = this.splitRegex.exec(str);
780
+ if (!values)
781
+ return "text";
782
+ var tokens = [];
783
+ var types = this.tokenArray;
784
+ for (var i = 0, l = types.length; i < l; i++) {
785
+ if (values[i + 1])
786
+ tokens[tokens.length] = {
787
+ type: types[i],
788
+ value: values[i + 1]
789
+ };
790
+ }
791
+ return tokens;
792
+ };
793
+
794
+ this.removeCapturingGroups = function(src) {
795
+ var r = src.replace(
796
+ /\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,
797
+ function(x, y) {return y ? "(?:" : x;}
798
+ );
799
+ return r;
800
+ };
801
+
802
+ this.createSplitterRegexp = function(src, flag) {
803
+ if (src.indexOf("(?=") != -1) {
804
+ var stack = 0;
805
+ var inChClass = false;
806
+ var lastCapture = {};
807
+ src.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g, function(
808
+ m, esc, parenOpen, parenClose, square, index
809
+ ) {
810
+ if (inChClass) {
811
+ inChClass = square != "]";
812
+ } else if (square) {
813
+ inChClass = true;
814
+ } else if (parenClose) {
815
+ if (stack == lastCapture.stack) {
816
+ lastCapture.end = index+1;
817
+ lastCapture.stack = -1;
818
+ }
819
+ stack--;
820
+ } else if (parenOpen) {
821
+ stack++;
822
+ if (parenOpen.length != 1) {
823
+ lastCapture.stack = stack
824
+ lastCapture.start = index;
825
+ }
826
+ }
827
+ return m;
828
+ });
829
+
830
+ if (lastCapture.end != null && /^\)*$/.test(src.substr(lastCapture.end)))
831
+ src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);
832
+ }
833
+ return new RegExp(src, (flag||"").replace("g", ""));
834
+ };
835
+
836
+ /**
837
+ * Returns an object containing two properties: `tokens`, which contains all the tokens; and `state`, the current state.
838
+ * @returns {Object}
839
+ **/
840
+ this.getLineTokens = function(line, startState) {
841
+ if (startState && typeof startState != "string") {
842
+ var stack = startState.slice(0);
843
+ startState = stack[0];
844
+ } else
845
+ var stack = [];
846
+
847
+ var currentState = startState || "start";
848
+ var state = this.states[currentState];
849
+ if (!state) {
850
+ currentState = "start";
851
+ state = this.states[currentState];
852
+ }
853
+ var mapping = this.matchMappings[currentState];
854
+ var re = this.regExps[currentState];
855
+ re.lastIndex = 0;
856
+
857
+ var match, tokens = [];
858
+ var lastIndex = 0;
859
+
860
+ var token = {type: null, value: ""};
861
+
862
+ while (match = re.exec(line)) {
863
+ var type = mapping.defaultToken;
864
+ var rule = null;
865
+ var value = match[0];
866
+ var index = re.lastIndex;
867
+
868
+ if (index - value.length > lastIndex) {
869
+ var skipped = line.substring(lastIndex, index - value.length);
870
+ if (token.type == type) {
871
+ token.value += skipped;
872
+ } else {
873
+ if (token.type)
874
+ tokens.push(token);
875
+ token = {type: type, value: skipped};
876
+ }
877
+ }
878
+
879
+ for (var i = 0; i < match.length-2; i++) {
880
+ if (match[i + 1] === undefined)
881
+ continue;
882
+
883
+ rule = state[mapping[i]];
884
+
885
+ if (rule.onMatch)
886
+ type = rule.onMatch(value, currentState, stack);
887
+ else
888
+ type = rule.token;
889
+
890
+ if (rule.next) {
891
+ if (typeof rule.next == "string")
892
+ currentState = rule.next;
893
+ else
894
+ currentState = rule.next(currentState, stack);
895
+
896
+ state = this.states[currentState];
897
+ if (!state) {
898
+ window.console && console.error && console.error(currentState, "doesn't exist");
899
+ currentState = "start";
900
+ state = this.states[currentState];
901
+ }
902
+ mapping = this.matchMappings[currentState];
903
+ lastIndex = index;
904
+ re = this.regExps[currentState];
905
+ re.lastIndex = index;
906
+ }
907
+ break;
908
+ }
909
+
910
+ if (value) {
911
+ if (typeof type == "string") {
912
+ if ((!rule || rule.merge !== false) && token.type === type) {
913
+ token.value += value;
914
+ } else {
915
+ if (token.type)
916
+ tokens.push(token);
917
+ token = {type: type, value: value};
918
+ }
919
+ } else if (type) {
920
+ if (token.type)
921
+ tokens.push(token);
922
+ token = {type: null, value: ""};
923
+ for (var i = 0; i < type.length; i++)
924
+ tokens.push(type[i]);
925
+ }
926
+ }
927
+
928
+ if (lastIndex == line.length)
929
+ break;
930
+
931
+ lastIndex = index;
932
+
933
+ if (tokens.length > MAX_TOKEN_COUNT) {
934
+ // chrome doens't show contents of text nodes with very long text
935
+ while (lastIndex < line.length) {
936
+ if (token.type)
937
+ tokens.push(token);
938
+ token = {
939
+ value: line.substring(lastIndex, lastIndex += 2000),
940
+ type: "overflow"
941
+ };
942
+ }
943
+ currentState = "start";
944
+ stack = [];
945
+ break;
946
+ }
947
+ }
948
+
949
+ if (token.type)
950
+ tokens.push(token);
951
+
952
+ if (stack.length > 1) {
953
+ if (stack[0] !== currentState)
954
+ stack.unshift(currentState);
955
+ }
956
+ return {
957
+ tokens : tokens,
958
+ state : stack.length ? stack : currentState
959
+ };
960
+ };
961
+
962
+ }).call(Tokenizer.prototype);
963
+
964
+ // Token conversion.
965
+ // See <https://github.com/ajaxorg/ace/wiki/Creating-or-Extending-an-Edit-Mode#common-tokens>
966
+ // This is not an exact match nor the best match that can be made.
967
+ var tokenFromAceToken = {
968
+ empty: null,
969
+ text: null,
970
+
971
+ // Keyword
972
+ keyword: 'keyword',
973
+ control: 'keyword',
974
+ operator: 'operator',
975
+
976
+ // Constants
977
+ constant: 'atom',
978
+ numeric: 'number',
979
+ character: 'atom',
980
+ escape: 'atom',
981
+
982
+ // Variables
983
+ variable: 'variable',
984
+ parameter: 'variable-3',
985
+ language: 'variable-2', // Python's `self` uses that.
986
+
987
+ // Comments
988
+ comment: 'comment',
989
+ line: 'comment',
990
+ 'double-slash': 'comment',
991
+ 'double-dash': 'comment',
992
+ 'number-sign': 'comment',
993
+ percentage: 'comment',
994
+ block: 'comment',
995
+ documentation: 'comment',
996
+
997
+ // String
998
+ string: 'string',
999
+ quoted: 'string',
1000
+ single: 'string',
1001
+ double: 'string',
1002
+ triple: 'string',
1003
+ unquoted: 'string',
1004
+ interpolated: 'string',
1005
+ regexp: 'string-2',
1006
+
1007
+ meta: 'meta',
1008
+ literal: 'qualifier',
1009
+ support: 'builtin',
1010
+
1011
+ // Markup
1012
+ markup: 'tag',
1013
+ underline: 'link',
1014
+ link: 'link',
1015
+ bold: 'strong',
1016
+ heading: 'header',
1017
+ italic: 'em',
1018
+ list: 'variable-2',
1019
+ numbered: 'variable-2',
1020
+ unnumbered: 'variable-2',
1021
+ quote: 'quote',
1022
+ raw: 'variable-2', // Markdown's raw block uses that.
1023
+
1024
+ // Invalid
1025
+ invalid: 'error',
1026
+ illegal: 'invalidchar',
1027
+ deprecated: 'error'
1028
+ };
1029
+
1030
+ // Takes a list of Ace tokens, returns a (string) CodeMirror token.
1031
+ var cmTokenFromAceTokens = function(tokens) {
1032
+ var token = null;
1033
+ for (var i = 0; i < tokens.length; i++) {
1034
+ // Find the most specific token.
1035
+ if (tokenFromAceToken[tokens[i]] !== undefined) {
1036
+ token = tokenFromAceToken[tokens[i]];
1037
+ }
1038
+ }
1039
+ return token;
1040
+ };
1041
+
1042
+ // Consume a token from plannedTokens.
1043
+ var consumeToken = function(stream, state) {
1044
+ var plannedToken = state.plannedTokens.shift();
1045
+ if (plannedToken === undefined) {
1046
+ return null;
1047
+ }
1048
+ stream.match(plannedToken.value);
1049
+ var tokens = plannedToken.type.split('.');
1050
+ return cmTokenFromAceTokens(tokens);
1051
+ };
1052
+
1053
+ var matchToken = function(stream, state) {
1054
+ // Anormal start: we already have planned tokens to consume.
1055
+ if (state.plannedTokens.length > 0) {
1056
+ return consumeToken(stream, state);
1057
+ }
1058
+
1059
+ // Normal start.
1060
+ var currentState = state.current;
1061
+ var currentLine = stream.match(/.*$/, false)[0];
1062
+ var tokenized = tokenizer.getLineTokens(currentLine, currentState);
1063
+ // We got a {tokens, state} object.
1064
+ // Each token is a {value, type} object.
1065
+ state.plannedTokens = tokenized.tokens;
1066
+ state.current = tokenized.state;
1067
+
1068
+ // Consume a token.
1069
+ return consumeToken(stream, state);
1070
+ }
1071
+
1072
+ // Initialize all state.
1073
+ var aceHighlightRules = new HighlightRules();
1074
+ var tokenizer = new Tokenizer(aceHighlightRules.$rules);
1075
+
1076
+ return {
1077
+ startState: function() {
1078
+ return {
1079
+ current: 'start',
1080
+ // List of {value, type}, with type being an Ace token string.
1081
+ plannedTokens: []
1082
+ };
1083
+ },
1084
+ blankLine: function(state) { matchToken('', state); },
1085
+ token: matchToken
1086
+ };
1087
+ });
1088
+
1089
+ CodeMirror.defineMIME("text/x-prolog", "prolog");