mumuki-laboratory 7.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +661 -0
- data/README.md +599 -0
- data/Rakefile +35 -0
- data/app/assets/config/mumuki_laboratory_engine.js +2 -0
- data/app/assets/images/logo.png +0 -0
- data/app/assets/images/user_shape.png +0 -0
- data/app/assets/javascripts/mumuki_laboratory/application.js +37 -0
- data/app/assets/javascripts/mumuki_laboratory/application/alias-modes.js +20 -0
- data/app/assets/javascripts/mumuki_laboratory/application/assets-loader.js +26 -0
- data/app/assets/javascripts/mumuki_laboratory/application/bridge.js +68 -0
- data/app/assets/javascripts/mumuki_laboratory/application/button.js +36 -0
- data/app/assets/javascripts/mumuki_laboratory/application/characters.js +26 -0
- data/app/assets/javascripts/mumuki_laboratory/application/codemirror-builder.js +100 -0
- data/app/assets/javascripts/mumuki_laboratory/application/codemirror.js +99 -0
- data/app/assets/javascripts/mumuki_laboratory/application/confirmation.js +17 -0
- data/app/assets/javascripts/mumuki_laboratory/application/console.js +175 -0
- data/app/assets/javascripts/mumuki_laboratory/application/csrf-token.js +18 -0
- data/app/assets/javascripts/mumuki_laboratory/application/custom-editor.js +21 -0
- data/app/assets/javascripts/mumuki_laboratory/application/discussions.js +76 -0
- data/app/assets/javascripts/mumuki_laboratory/application/elipsis.js +31 -0
- data/app/assets/javascripts/mumuki_laboratory/application/free-form.js +32 -0
- data/app/assets/javascripts/mumuki_laboratory/application/inputs.js +12 -0
- data/app/assets/javascripts/mumuki_laboratory/application/interval.js +17 -0
- data/app/assets/javascripts/mumuki_laboratory/application/kids.js +342 -0
- data/app/assets/javascripts/mumuki_laboratory/application/load-analytics.js +4 -0
- data/app/assets/javascripts/mumuki_laboratory/application/load-error-svg.js +11 -0
- data/app/assets/javascripts/mumuki_laboratory/application/messages.js +93 -0
- data/app/assets/javascripts/mumuki_laboratory/application/multiple-choice.js +11 -0
- data/app/assets/javascripts/mumuki_laboratory/application/multiple-files.js +241 -0
- data/app/assets/javascripts/mumuki_laboratory/application/multiple-scenarios.js +152 -0
- data/app/assets/javascripts/mumuki_laboratory/application/pin.js +17 -0
- data/app/assets/javascripts/mumuki_laboratory/application/popover.js +18 -0
- data/app/assets/javascripts/mumuki_laboratory/application/progress.js +10 -0
- data/app/assets/javascripts/mumuki_laboratory/application/speech-bubble-renderer.js +99 -0
- data/app/assets/javascripts/mumuki_laboratory/application/submission.js +112 -0
- data/app/assets/javascripts/mumuki_laboratory/application/timer.js +21 -0
- data/app/assets/javascripts/mumuki_laboratory/application/tooltip.js +3 -0
- data/app/assets/javascripts/mumuki_laboratory/application/upload.js +17 -0
- data/app/assets/javascripts/mumuki_laboratory/application/user.js +9 -0
- data/app/assets/stylesheets/mumuki_laboratory/application.scss +16 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/_alerts.scss +3 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/_errors.scss +59 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/_fonts.scss +2 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/_invitations.scss +4 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/_layout.scss +154 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/_mixins.scss +6 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/_modules.scss +25 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/_tooltip.scss +4 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/_vendor.scss +2 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/hovers.scss +12 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_book_header.scss +21 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_breadcrumb.scss +64 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_chapter_show.scss +3 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_checkboxes.scss +34 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_console.scss +49 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_datepicker.scss +13 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_discussion.scss +386 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_dropdown.scss +3 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_editor.scss +119 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_exercise_assignment.scss +38 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_exercise_results.scss +40 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_flash.scss +57 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_follow_us.scss +16 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_gs-board.scss +8 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_highlight.scss +144 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids.scss +513 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids_results.scss +49 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_modal.scss +24 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_organization_chooser.scss +18 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_overlap.scss +29 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_progress_bar.scss +31 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_progress_listing.scss +10 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_timer.scss +8 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_upload.scss +8 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/guide-corollary.scss +9 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/popover.scss +9 -0
- data/app/controllers/ajax_controller.rb +9 -0
- data/app/controllers/api/base_controller.rb +23 -0
- data/app/controllers/api/courses_controller.rb +26 -0
- data/app/controllers/api/organizations_controller.rb +28 -0
- data/app/controllers/api/roles_controller.rb +53 -0
- data/app/controllers/api/students_controller.rb +9 -0
- data/app/controllers/api/teachers_controller.rb +9 -0
- data/app/controllers/api/users_controller.rb +18 -0
- data/app/controllers/appendixes_controller.rb +5 -0
- data/app/controllers/application_controller.rb +93 -0
- data/app/controllers/assets_controller.rb +14 -0
- data/app/controllers/book_controller.rb +7 -0
- data/app/controllers/book_discussions_controller.rb +7 -0
- data/app/controllers/chapters_controller.rb +12 -0
- data/app/controllers/complements_controller.rb +8 -0
- data/app/controllers/concerns/on_base_organization_only.rb +11 -0
- data/app/controllers/concerns/organizations_controller_template.rb +35 -0
- data/app/controllers/concerns/users_controller_template.rb +33 -0
- data/app/controllers/concerns/with_authorization.rb +23 -0
- data/app/controllers/concerns/with_errors_filter.rb +32 -0
- data/app/controllers/concerns/with_user_params.rb +11 -0
- data/app/controllers/discussions_controller.rb +85 -0
- data/app/controllers/discussions_messages_controller.rb +37 -0
- data/app/controllers/exams_controller.rb +14 -0
- data/app/controllers/exercise_confirmations_controller.rb +9 -0
- data/app/controllers/exercise_query_controller.rb +13 -0
- data/app/controllers/exercise_solutions_controller.rb +28 -0
- data/app/controllers/exercise_tries_controller.rb +16 -0
- data/app/controllers/exercises_controller.rb +52 -0
- data/app/controllers/guide_container_controller.rb +21 -0
- data/app/controllers/guide_progress_controller.rb +18 -0
- data/app/controllers/guides_controller.rb +9 -0
- data/app/controllers/invitations_controller.rb +40 -0
- data/app/controllers/lessons_controller.rb +8 -0
- data/app/controllers/login_controller.rb +16 -0
- data/app/controllers/messages_controller.rb +32 -0
- data/app/controllers/topics_controller.rb +5 -0
- data/app/controllers/users_controller.rb +32 -0
- data/app/helpers/application_helper.rb +41 -0
- data/app/helpers/assets_helper.rb +24 -0
- data/app/helpers/assignment_result_helper.rb +47 -0
- data/app/helpers/assistance_box_helper.rb +9 -0
- data/app/helpers/authors_helper.rb +10 -0
- data/app/helpers/breadcrumbs_helper.rb +59 -0
- data/app/helpers/choices_helper.rb +5 -0
- data/app/helpers/concerns/with_student_path_navigation.rb +19 -0
- data/app/helpers/concerns/with_student_path_navigation/continue_navigation.rb +23 -0
- data/app/helpers/concerns/with_student_path_navigation/finish_navigation.rb +12 -0
- data/app/helpers/concerns/with_student_path_navigation/navigation.rb +36 -0
- data/app/helpers/concerns/with_student_path_navigation/revisit_navigation.rb +23 -0
- data/app/helpers/contextualization_result_helper.rb +36 -0
- data/app/helpers/discussions_helper.rb +176 -0
- data/app/helpers/editor_helper.rb +13 -0
- data/app/helpers/editor_tabs_helper.rb +21 -0
- data/app/helpers/email_helper.rb +20 -0
- data/app/helpers/exercise_input_helper.rb +118 -0
- data/app/helpers/icons_helper.rb +63 -0
- data/app/helpers/links_helper.rb +81 -0
- data/app/helpers/locale_helper.rb +11 -0
- data/app/helpers/menu_bar_helper.rb +41 -0
- data/app/helpers/messages_helper.rb +25 -0
- data/app/helpers/multiple_file_editor_helper.rb +14 -0
- data/app/helpers/open_graph_helper.rb +12 -0
- data/app/helpers/organization_breadcrumbs_helper.rb +24 -0
- data/app/helpers/organization_list_helper.rb +5 -0
- data/app/helpers/overlapped_buttons_helper.rb +17 -0
- data/app/helpers/page_title_helper.rb +11 -0
- data/app/helpers/progress_bar_helper.rb +8 -0
- data/app/helpers/progress_helper.rb +19 -0
- data/app/helpers/runner_assets_helper.rb +9 -0
- data/app/helpers/version_helper.rb +5 -0
- data/app/mailers/application_mailer.rb +16 -0
- data/app/mailers/user_mailer.rb +24 -0
- data/app/views/appendixes/show.html.erb +7 -0
- data/app/views/book/show.html.erb +58 -0
- data/app/views/book_discussions/index.html.erb +23 -0
- data/app/views/chapters/show.html.erb +35 -0
- data/app/views/complements/show.html.erb +1 -0
- data/app/views/discussions/_description_message.html.erb +17 -0
- data/app/views/discussions/_message.html.erb +28 -0
- data/app/views/discussions/_message_container.html.erb +8 -0
- data/app/views/discussions/_new_message.html.erb +21 -0
- data/app/views/discussions/index.html.erb +30 -0
- data/app/views/discussions/show.html.erb +78 -0
- data/app/views/errors/forbidden.html.erb +18 -0
- data/app/views/errors/gone.html.erb +14 -0
- data/app/views/errors/internal_server_error.html.erb +19 -0
- data/app/views/errors/not_found.html.erb +19 -0
- data/app/views/errors/unauthorized.html.erb +14 -0
- data/app/views/exams/show.html.erb +1 -0
- data/app/views/exercise_solutions/_contextualization_results_body.html.erb +19 -0
- data/app/views/exercise_solutions/_contextualization_results_container.html.erb +4 -0
- data/app/views/exercise_solutions/_expectations.html.erb +13 -0
- data/app/views/exercise_solutions/_kids_results.html.erb +18 -0
- data/app/views/exercise_solutions/_kids_results_button.html.erb +11 -0
- data/app/views/exercise_solutions/_out_of_attempts.html.erb +5 -0
- data/app/views/exercise_solutions/_results.html.erb +44 -0
- data/app/views/exercise_solutions/_results_button.html.erb +9 -0
- data/app/views/exercise_solutions/_results_hidden.html.erb +5 -0
- data/app/views/exercise_solutions/_results_title.html.erb +3 -0
- data/app/views/exercises/_exercise_assignment.html.erb +20 -0
- data/app/views/exercises/_read_only.html.erb +106 -0
- data/app/views/exercises/show.html.erb +63 -0
- data/app/views/invitations/_invitation_form.html.erb +23 -0
- data/app/views/invitations/show.html.erb +17 -0
- data/app/views/layouts/_authoring.html.erb +12 -0
- data/app/views/layouts/_copyright.html.erb +2 -0
- data/app/views/layouts/_discussions.html.erb +68 -0
- data/app/views/layouts/_error.html.erb +10 -0
- data/app/views/layouts/_exercise_skipped.html.erb +28 -0
- data/app/views/layouts/_guide.html.erb +67 -0
- data/app/views/layouts/_kids.html.erb +24 -0
- data/app/views/layouts/_main.html.erb +49 -0
- data/app/views/layouts/_messages.html.erb +21 -0
- data/app/views/layouts/_mixed_results.erb +3 -0
- data/app/views/layouts/_organization_chooser.html.erb +28 -0
- data/app/views/layouts/_organizations_listing.html.erb +14 -0
- data/app/views/layouts/_progress.html.erb +1 -0
- data/app/views/layouts/_progress_bar.html.erb +6 -0
- data/app/views/layouts/_progress_listing.html.erb +10 -0
- data/app/views/layouts/_result.html.erb +4 -0
- data/app/views/layouts/_runner_assets.html.erb +19 -0
- data/app/views/layouts/_social_media.html.erb +4 -0
- data/app/views/layouts/_submission_result_error.html.erb +6 -0
- data/app/views/layouts/_submission_result_error_body.html.erb +6 -0
- data/app/views/layouts/_test_results.html.erb +32 -0
- data/app/views/layouts/_timer.html.erb +10 -0
- data/app/views/layouts/application.html.erb +77 -0
- data/app/views/layouts/embedded.html.erb +28 -0
- data/app/views/layouts/exercise_inputs/editors/_code.html.erb +17 -0
- data/app/views/layouts/exercise_inputs/editors/_custom.html.erb +7 -0
- data/app/views/layouts/exercise_inputs/editors/_free_form.html.erb +4 -0
- data/app/views/layouts/exercise_inputs/editors/_hidden.html.erb +1 -0
- data/app/views/layouts/exercise_inputs/editors/_multiple_choice.html.erb +10 -0
- data/app/views/layouts/exercise_inputs/editors/_multiple_files.html.erb +40 -0
- data/app/views/layouts/exercise_inputs/editors/_single_choice.html.erb +8 -0
- data/app/views/layouts/exercise_inputs/editors/_text.html.erb +7 -0
- data/app/views/layouts/exercise_inputs/editors/_upload.html.erb +4 -0
- data/app/views/layouts/exercise_inputs/forms/_form.html.erb +14 -0
- data/app/views/layouts/exercise_inputs/forms/_interactive_form.html.erb +50 -0
- data/app/views/layouts/exercise_inputs/forms/_kids_form.html.erb +12 -0
- data/app/views/layouts/exercise_inputs/forms/_playground_form.html.erb +26 -0
- data/app/views/layouts/exercise_inputs/forms/_problem_form.html.erb +73 -0
- data/app/views/layouts/exercise_inputs/forms/_reading_form.html.erb +3 -0
- data/app/views/layouts/exercise_inputs/layouts/_input_bottom.html.erb +15 -0
- data/app/views/layouts/exercise_inputs/layouts/_input_kids.html.erb +51 -0
- data/app/views/layouts/exercise_inputs/layouts/_input_right.html.erb +13 -0
- data/app/views/layouts/exercise_inputs/read_only_editors/_code.html.erb +3 -0
- data/app/views/layouts/exercise_inputs/read_only_editors/_custom.html.erb +6 -0
- data/app/views/layouts/exercise_inputs/read_only_editors/_free_form.html.erb +4 -0
- data/app/views/layouts/exercise_inputs/read_only_editors/_multiple_choice.html.erb +8 -0
- data/app/views/layouts/exercise_inputs/read_only_editors/_multiple_files.html.erb +29 -0
- data/app/views/layouts/exercise_inputs/read_only_editors/_single_choice.html.erb +8 -0
- data/app/views/layouts/exercise_inputs/read_only_editors/_text.erb +3 -0
- data/app/views/layouts/mailer.html.erb +487 -0
- data/app/views/layouts/mailer.text.erb +1 -0
- data/app/views/layouts/modals/_guide_corollary.html.erb +27 -0
- data/app/views/layouts/modals/_kids_context.html.erb +33 -0
- data/app/views/layouts/modals/_kids_results.html.erb +26 -0
- data/app/views/layouts/modals/_kids_results_aborted.html.erb +25 -0
- data/app/views/layouts/modals/_new_discussion.html.erb +27 -0
- data/app/views/layouts/modals/_new_message.html.erb +36 -0
- data/app/views/lessons/show.html.erb +1 -0
- data/app/views/messages/errors.html.erb +1 -0
- data/app/views/user_mailer/1st_reminder.html.erb +349 -0
- data/app/views/user_mailer/1st_reminder.text.erb +13 -0
- data/app/views/user_mailer/2nd_reminder.html.erb +349 -0
- data/app/views/user_mailer/2nd_reminder.text.erb +13 -0
- data/app/views/user_mailer/3rd_reminder.html.erb +349 -0
- data/app/views/user_mailer/3rd_reminder.text.erb +13 -0
- data/app/views/user_mailer/no_submissions_reminder.html.erb +349 -0
- data/app/views/user_mailer/no_submissions_reminder.text.erb +13 -0
- data/app/views/users/_profile_fields.html.erb +20 -0
- data/app/views/users/_user_form.html.erb +11 -0
- data/app/views/users/show.html.erb +60 -0
- data/config/i18n-tasks.yml +98 -0
- data/config/initializers/form_builder.rb +7 -0
- data/config/initializers/omniauth.rb +5 -0
- data/config/initializers/session_store.rb +1 -0
- data/config/routes.rb +106 -0
- data/lib/mumuki/laboratory.rb +48 -0
- data/lib/mumuki/laboratory/controllers.rb +13 -0
- data/lib/mumuki/laboratory/controllers/authorization.rb +10 -0
- data/lib/mumuki/laboratory/controllers/content.rb +12 -0
- data/lib/mumuki/laboratory/controllers/current_organization.rb +16 -0
- data/lib/mumuki/laboratory/controllers/disabling.rb +5 -0
- data/lib/mumuki/laboratory/controllers/dynamic_errors.rb +74 -0
- data/lib/mumuki/laboratory/controllers/embedded_mode.rb +45 -0
- data/lib/mumuki/laboratory/controllers/exercise_seed.rb +11 -0
- data/lib/mumuki/laboratory/controllers/nested_in_exercise.rb +11 -0
- data/lib/mumuki/laboratory/controllers/notifications.rb +32 -0
- data/lib/mumuki/laboratory/controllers/results_rendering.rb +63 -0
- data/lib/mumuki/laboratory/engine.rb +32 -0
- data/lib/mumuki/laboratory/events/events.rb +39 -0
- data/lib/mumuki/laboratory/extensions.rb +1 -0
- data/lib/mumuki/laboratory/extensions/request.rb +3 -0
- data/lib/mumuki/laboratory/locales/datetime.es.yml +25 -0
- data/lib/mumuki/laboratory/locales/en.yml +261 -0
- data/lib/mumuki/laboratory/locales/es.yml +288 -0
- data/lib/mumuki/laboratory/locales/pt.yml +264 -0
- data/lib/mumuki/laboratory/locales/views.es.yml +9 -0
- data/lib/mumuki/laboratory/version.rb +5 -0
- data/lib/tasks/assignments.rake +29 -0
- data/lib/tasks/events.rake +19 -0
- data/lib/tasks/messages.rake +17 -0
- data/lib/tasks/users.rake +12 -0
- data/public/422.html +67 -0
- data/public/character/kibi/context.svg +1 -0
- data/public/character/kibi/failure.svg +1 -0
- data/public/character/kibi/jump.svg +1 -0
- data/public/character/kibi/success2_l.svg +1 -0
- data/public/character/kibi/success_l.svg +1 -0
- data/public/character/magnifying_glass/apparition.svg +1 -0
- data/public/character/magnifying_glass/loop.svg +1 -0
- data/public/compass_rose.svg +1427 -0
- data/public/email-banner.png +0 -0
- data/public/favicon.ico +0 -0
- data/public/kibi.svg +2 -0
- data/public/logo-alt-large.png +0 -0
- data/public/logo-alt.png +0 -0
- data/spec/api_helper.rb +7 -0
- data/spec/capybara_helper.rb +12 -0
- data/spec/controllers/api_clients_controller.rb +26 -0
- data/spec/controllers/chapters_controller_spec.rb +17 -0
- data/spec/controllers/confirmations_controller_spec.rb +20 -0
- data/spec/controllers/courses_api_controller_spec.rb +28 -0
- data/spec/controllers/discussions_controller_spec.rb +64 -0
- data/spec/controllers/exercise_solutions_controller_spec.rb +88 -0
- data/spec/controllers/guide_progress_controller_spec.rb +40 -0
- data/spec/controllers/invitations_controller_spec.rb +26 -0
- data/spec/controllers/messages_controller_spec.rb +32 -0
- data/spec/controllers/organizations_api_controller_spec.rb +239 -0
- data/spec/controllers/students_api_controller_spec.rb +106 -0
- data/spec/controllers/users_api_controller_spec.rb +65 -0
- data/spec/controllers/users_controller_spec.rb +21 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/bin/setup +38 -0
- data/spec/dummy/bin/update +29 -0
- data/spec/dummy/bin/yarn +11 -0
- data/spec/dummy/config.ru +5 -0
- data/spec/dummy/config/application.rb +17 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/cable.yml +10 -0
- data/spec/dummy/config/database.travis.yml +4 -0
- data/spec/dummy/config/database.yml +19 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +55 -0
- data/spec/dummy/config/environments/test.rb +54 -0
- data/spec/dummy/config/initializers/assets.rb +14 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +33 -0
- data/spec/dummy/config/puma.rb +14 -0
- data/spec/dummy/config/rabbit.yml +7 -0
- data/spec/dummy/config/routes.rb +2 -0
- data/spec/dummy/config/secrets.yml +5 -0
- data/spec/dummy/config/spring.rb +6 -0
- data/spec/dummy/db/schema.rb +387 -0
- data/spec/dummy/db/seeds.rb +32 -0
- data/spec/dummy/package.json +5 -0
- data/spec/dummy/public/character/animations.json +34 -0
- data/spec/dummy/public/error/401.svg +218 -0
- data/spec/dummy/public/error/403.svg +218 -0
- data/spec/dummy/public/error/404.svg +218 -0
- data/spec/dummy/public/error/410.svg +218 -0
- data/spec/dummy/public/error/500.svg +218 -0
- data/spec/dummy/public/error/timeout_1.svg +1 -0
- data/spec/dummy/public/error/timeout_2.svg +3 -0
- data/spec/dummy/public/error/timeout_3.svg +1 -0
- data/spec/evaluation_helper.rb +19 -0
- data/spec/features/chapter_spec.rb +53 -0
- data/spec/features/choose_organization_spec.rb +92 -0
- data/spec/features/complements_flow_spec.rb +16 -0
- data/spec/features/disable_user_flow_spec.rb +34 -0
- data/spec/features/dynamic_exam_spec.rb +40 -0
- data/spec/features/exams_flow_spec.rb +136 -0
- data/spec/features/exercise_flow_spec.rb +240 -0
- data/spec/features/guide_reset_spec.rb +60 -0
- data/spec/features/guides_flow_spec.rb +126 -0
- data/spec/features/home_private_flow_spec.rb +78 -0
- data/spec/features/home_public_flow_spec.rb +62 -0
- data/spec/features/invitations_flow_spec.rb +46 -0
- data/spec/features/lessons_flow_spec.rb +21 -0
- data/spec/features/links_flow_spec.rb +63 -0
- data/spec/features/login_flow_spec.rb +69 -0
- data/spec/features/menu_bar_spec.rb +116 -0
- data/spec/features/not_found_private_flow_spec.rb +43 -0
- data/spec/features/not_found_public_flow_spec.rb +40 -0
- data/spec/features/profile_flow_spec.rb +96 -0
- data/spec/features/progressive_tips_spec.rb +48 -0
- data/spec/features/runner_assets_spec.rb +58 -0
- data/spec/features/standard_flow_spec.rb +32 -0
- data/spec/features/topic_flow_spec.rb +27 -0
- data/spec/helpers/application_helper_spec.rb +29 -0
- data/spec/helpers/authors_helper_spec.rb +18 -0
- data/spec/helpers/breadcrumbs_helper_spec.rb +129 -0
- data/spec/helpers/email_helper_spec.rb +14 -0
- data/spec/helpers/exercise_input_helper_spec.rb +85 -0
- data/spec/helpers/icons_helper_spec.rb +22 -0
- data/spec/helpers/page_title_helper_spec.rb +19 -0
- data/spec/helpers/test_results_rendering_spec.rb +105 -0
- data/spec/helpers/with_choices_spec.rb +14 -0
- data/spec/helpers/with_navigation_spec.rb +97 -0
- data/spec/login_helper.rb +23 -0
- data/spec/mailers/previews/user_mailer_preview.rb +9 -0
- data/spec/mailers/user_mailer_spec.rb +181 -0
- data/spec/spec_helper.rb +76 -0
- data/vendor/assets/javascripts/analytics.js +4 -0
- data/vendor/assets/javascripts/codemirror-autorefresh.js +46 -0
- data/vendor/assets/javascripts/codemirror-modes/assembly_x86.js +967 -0
- data/vendor/assets/javascripts/codemirror-modes/autocomplete.js +44 -0
- data/vendor/assets/javascripts/codemirror-modes/clike.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/closebrackets.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/css-hint.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/css.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/elixir.js +1284 -0
- data/vendor/assets/javascripts/codemirror-modes/gobstones.js +71 -0
- data/vendor/assets/javascripts/codemirror-modes/haskell-autocomplete.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/haskell.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/html-hint.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/htmlmixed.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/index.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/javascript-hint.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/javascript.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/markdown.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/matchbrackets.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/php.js +236 -0
- data/vendor/assets/javascripts/codemirror-modes/placeholder.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/prolog-autocomplete.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/prolog.js +1089 -0
- data/vendor/assets/javascripts/codemirror-modes/python.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/ruby-autocomplete.js +3 -0
- data/vendor/assets/javascripts/codemirror-modes/ruby.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/shell.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/show-hint.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/sql-hint.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/sql.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/wollok-autocomplete.js +3 -0
- data/vendor/assets/javascripts/codemirror-modes/wollok.js +1035 -0
- data/vendor/assets/javascripts/codemirror-modes/xml-hint.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-modes/xml.min.js +1 -0
- data/vendor/assets/javascripts/codemirror-simple-mode.js +216 -0
- data/vendor/assets/javascripts/codemirror.min.js +1 -0
- data/vendor/assets/javascripts/hotjar.js +8 -0
- data/vendor/assets/javascripts/jquery-console.js +847 -0
- data/vendor/assets/javascripts/webcomponents-lite.js +12 -0
- data/vendor/assets/stylesheets/codemirror/codemirror.min.css +2 -0
- data/vendor/assets/stylesheets/codemirror/show-hint.min.css +2 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/AUTHORS +16 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/Gemfile +14 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/LICENSE +661 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/README.md +159 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/Rakefile +35 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/api_client.rb +31 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/application_record.rb +128 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/assignment.rb +243 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/avatar.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/book.rb +65 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/chapter.rb +33 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/complement.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/assistable.rb +25 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/contextualization.rb +137 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/disabling.rb +37 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/friendly_name.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/guide_container.rb +61 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/navigation/parent_navigation.rb +27 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/navigation/siblings_navigation.rb +28 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/navigation/terminal_navigation.rb +21 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/submittable/confirmable.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/submittable/queriable.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/submittable/questionable.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/submittable/solvable.rb +32 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/submittable/submittable.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/submittable/triable.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/topic_container.rb +24 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_assignments.rb +33 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_case_insensitive_search.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_content.rb +34 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_description.rb +12 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_discussion_creation.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_discussion_creation/subscription.rb +37 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_discussion_creation/upvote.rb +28 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_discussion_status.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_discussions.rb +24 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_editor.rb +39 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_expectations.rb +33 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_language.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_layout.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_locale.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_messages.rb +22 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_name.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_number.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_profile.rb +12 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_progress.rb +27 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_randomizations.rb +43 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_reminders.rb +74 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_scoped_queries.rb +47 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_scoped_queries/filter.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_scoped_queries/page.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_scoped_queries/sort.rb +47 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_slug.rb +61 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_usages.rb +42 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/concerns/with_user_navigation.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/content.rb +35 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/course.rb +51 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/discussion.rb +138 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/event.rb +2 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exam.rb +177 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exam_authorization.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exercise.rb +255 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exercise/challenge.rb +25 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exercise/interactive.rb +41 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exercise/playground.rb +23 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exercise/problem.rb +53 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exercise/queriable_challenge.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/exercise/reading.rb +17 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/guide.rb +131 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/indicator.rb +77 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/invitation.rb +61 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/language.rb +128 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/lesson.rb +24 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/message.rb +68 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/organization.rb +167 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/progress.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/stats.rb +24 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/subscription.rb +12 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/topic.rb +63 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/upvote.rb +4 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/usage.rb +33 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/user.rb +192 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/app/models/with_stats.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/bin/rails +14 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141120231135_create_exercises.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141120231735_create_submissions.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141121001134_add_status_to_submission.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141121013100_add_result_to_submission.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141121122921_add_language_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141124023403_create_users.rb +13 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141124032114_add_user_to_submission.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141207235356_add_submissions_count_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141208005050_add_author_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141208005125_rename_user_to_submitter.rb +5 -0
- 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
- 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
- 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
- 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
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141221213109_create_exercise_repos.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141221215035_add_origin_to_exercise.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141225034553_rename_exercise_repo_to_guide.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141225143218_rename_github_url_to_github_repository.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141225195510_create_imports.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141225211350_add_status_to_import.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141226010922_add_result_to_import.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141228151351_change_exercise_description_to_text.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141231074400_create_languages.rb +13 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141231191842_change_language_column_type.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141231192030_rename_author_to_plugin_author.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20141231234940_increment_language_id.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150108014005_add_locale_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150111160450_add_uniques_to_languages.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150125042217_add_test_syntax_hint_to_language.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150125051529_add_hint_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150126213310_devise_create_admin_users.rb +42 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150126213316_create_active_admin_comments.rb +19 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150315072037_add_description_to_guide.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150317052723_remove_language_author.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150317053307_remove_language_hint.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150321150030_add_extra_code_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150328211331_create_expectations.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150329163753_add_email_to_user.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150330020553_add_expectation_results_to_submission.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150405231013_create_exports.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150405232603_add_default_guide_to_user.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150406020152_add_last_submission_date_to_user.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150407225356_add_unique_index_to_users.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150408020712_add_status_to_export.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150408022654_add_commiter_to_export.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150411215351_change_guide_description_to_text.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150412042959_add_committer_to_import.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150412201651_remove_default_guide_from_user.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150415053559_add_image_url_to_user.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150415211341_add_position_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150415234515_create_relationships.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150417052238_add_original_id_format_to_guide.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150418055334_add_locale_and_language_to_guide.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150424180136_add_guides_users_association_tables.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150428195229_add_guides_suggestions.rb +8 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150507215646_remove_relationship.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150508015148_create_api_tokens.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150509191428_add_name_to_token.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150512235847_add_feedback_to_submission.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150513203636_create_categories.rb +12 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150513204102_create_starting_points.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150517074730_add_extra_code_to_guide.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150518174912_add_language_output_visibility_flag.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150518185508_add_content_type_to_language.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150519131033_set_default_locale_for_guide.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150519174628_remove_language_name_uniq.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150519220307_rename_api_token_columns.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150520011404_convert_starting_point_into_path.rb +12 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150529135324_add_corollary_to_guide.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150529141430_add_corollary_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150531164450_add_test_extension_to_language.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150603003459_remove_language_extension_uniq.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150603020457_remove_guide_name_uniq.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150605065543_add_highlight_mode.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150614173852_add_learning_flag.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150614180512_add_beta_flag.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150614191257_add_last_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150620181839_add_layout_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150701030644_add_unique_to_language_name_index.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150701212609_add_test_results_to_submission.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150708212022_add_position_to_category.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150708212836_change_category_description_to_text.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150713120916_add_expectations_column_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150714000532_remove_expectations_relation.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150722003532_create_event_subscribers.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150722030820_create_solutions.rb +16 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150722142019_add_submissions_count_to_solution.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150723052640_add_submission_id_to_solution.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150724062215_add_language_description.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150724062233_add_category_links.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150724062249_add_category_long_description.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150819194207_convert_submissions_into_solutions.rb +34 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150819202310_remove_submissions.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150826023647_create_friendly_id_slugs.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150826023757_add_slug_to_guides.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150826024859_add_slug_to_exercises.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150828013106_add_remember_me_token_to_user.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150829211550_add_queriable_to_language.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150829215524_add_expectations_column_to_guide.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20150905214532_rename_exercise_title_to_name.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151001143118_rename_solution_to_assignment.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151001183858_rename_assignment_content_to_solution.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151003003856_add_type_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151020145904_remove_guide_git_information.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151104163433_create_tenants.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151104172241_create_path_rules.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151104173956_remove_guide_position.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151104220859_remove_path_from_guide.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151107232242_move_slug_to_path_rule.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151108173838_remove_slugs.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151108182857_remove_act_as_taggable_taggings.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151108183319_add_tags_array.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151206072741_rename_guide_extra_code_to_extra.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151208224736_rename_path_rule_to_chapter_guide.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151208224907_rename_category_to_chapter.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151208225503_rename_chapter_position_to_number.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151208231749_rename_chapter_guide_path_to_chapter.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151208233707_rename_url_to_slug.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151209021925_add_locale_to_tenant.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151210204646_remove_language_extensions.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151211032811_drop_collaborators.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151211033000_drop_contributors.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151211034943_remove_authors.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151211035206_add_contact_email_to_tenant.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151218172557_drop_import.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151222153838_add_default_content_to_exercise.rb +5 -0
- 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
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151224174248_remove_original_id.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20151229153839_replace_learning_with_type_in_guides.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160108191156_rename_extra_code.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160108215313_remove_unique_index_from_users.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160119024542_add_preface_to_tenant.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160119040351_rename_tenant_to_book.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160119191508_rename_position_to_number.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160120171336_add_type_to_event_suscriber.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160205184243_add_bibliotheca_id_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160214191548_required_bibliotheca_id.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160222165337_add_hidden_flag_to_extra_code.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160222192958_rename_chapter_guide_to_lesson.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160307184203_add_prompt_to_language.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160331210507_add_comment_model.rb +13 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160401142104_add_readed_to_comment.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160404214826_change_readed_to_read.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160405184624_change_submission_id_to_string.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160412193123_change_content_comment_to_text.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160414150800_remove_tenant_subscriber.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160426171156_add_new_expectations_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160427195306_create_organizations.rb +12 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160427223805_add_chapter_book.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160427234538_create_topics.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160427235605_add_topic_to_chapter.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160428162753_add_topic_id_to_lesson.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160428175230_create_exams.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160428224823_add_duration_to_exam.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160429174901_add_start_end_time_to_exam.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160429181825_add_exam_user.rb +8 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160430225048_create_complements.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160430231035_remove_chapter_lesson.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160430235331_remove_chapter_name_description.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160430235656_remove_chapter_locale_image_url.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160501003355_add_long_description_to_topic.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160501071847_create_usages.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160506012945_add_slug_to_topic_and_book.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160506035230_remove_slug_from_lesson.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160506041446_rename_preface_to_description.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160506172239_remove_event_subscriber.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160506175610_remove_api_tokens.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160506181152_remove_admin_user.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160506182333_remove_admin_comments.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160510183137_add_private_to_organization.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160512134321_add_organization_image.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160516191936_add_stateful_console_to_language.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160517215229_add_classroom_idto_exams.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160518212552_rename_exam_users_to_exam_authorization.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160518213912_add_user_start_data_in_exam.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160519045220_add_id_to_exam_authorizations.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160520141716_remove_chapter_links_and_long_description.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160520153115_change_exam_classroom_id_to_string.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160526172026_remove_not_null_constraint_exam_duration.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160526182119_add_metadata_to_user.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160617175235_add_last_organization_to_user.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160617195350_change_metadata_to_text.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160701195105_add_login_methods_to_organization.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160705160244_add_manual_evaluation_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160715001254_rename_test_runner_url.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160729194600_change_default_content_to_text.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160812003350_change_default_login_methods.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160815225314_rename_long_description_to_appendix.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160819181024_make_organization_private_by_default.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160830160937_add_authoring_information_to_guide.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20160907010315_remove_exercise_slug.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161004202742_add_editor_to_problem.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161018142147_add_language_extension.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161107171305_remove_devicon_column_from_language.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161222182015_rename_uid_to_social_id.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161222182724_add_uid_to_user.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161226181932_remove_metadata_from_users.rb +5 -0
- 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
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20161231224116_add_permissions_to_user.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170125185012_add_new_fields_on_organization.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170207154702_add_index_to_uid.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170224040846_create_invitations.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170224061531_make_tos_type_text.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170301160253_rename_invitation_slug_to_code.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170330145157_rename_comment_to_messages.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170407190910_add_has_messages_flag_to_assignment.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170526191251_add_community_link_to_organizations.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170526204944_add_has_messages_to_organizations.rb +5 -0
- 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
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170608033403_remove_has_messages_from_assignment.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170608044038_remove_messages_exercise_id.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170608154055_remove_message_type_column.rb +5 -0
- 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
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170621222902_introduce_settings_and_themes.rb +40 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170818185127_add_guide_slug_constraint.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20170830020507_change_invitation_expiration_date_type.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20171003204152_add_goal_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20171003204209_add_queries_to_assignment.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20171004134607_add_triable_to_language.rb +5 -0
- 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
- 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
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20171229042201_add_assets_to_language.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180117014110_add_custom_editor_assets_to_language.rb +13 -0
- 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
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180123180836_add_accepts_reminders_to_users.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180129142749_add_api_client.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180130194923_add_last_reminded_date_to_users.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180130204935_add_course.rb +16 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180307150148_add_failed_submissions_count_to_assignments.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180323125804_remove_user_name.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180323140943_remove_unused_omniauth_fields.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180326224511_remove_book_ids.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180402015405_remove_course_uid.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180504173548_create_discussions.rb +12 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180504185845_add_discussion_id_to_message.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180526141344_add_tips_rules_to_exercise.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180605143727_add_submission_to_discussion.rb +16 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180611190239_add_randomizations_to_exercises.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180619182555_create_subscriptions.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180702153442_create_upvotes.rb +8 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180702175220_add_upvotes_count_to_discussions.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180704150839_rename_assignment_status_to_submission_status.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180725145801_add_submissions_caps_to_exams.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20180802190437_add_approved_to_messages.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181004173216_add_free_form_editor_to_exercises.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181014233438_remove_non_null_constraint_from_permissions.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181016203853_add_test_extension_back.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181021151505_add_id_format_back.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181022043658_add_private_flag_for_guides.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181022220518_add_teacher_info_to_guide.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181101180652_add_unique_index_to_organizations_name.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181105152420_remove_contact_email_from_book.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181113183935_rename_guide_contributors_to_collaborators.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181114201620_add_test_template_to_languages.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181117190241_add_feedback_to_language.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181121165956_rename_choices_column.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20181210131824_convert_course_invitation_into_fk.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190123180139_add_sources_section.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190123180147_add_learn_more_section.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190312152901_add_content_fk.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190326152631_add_settings_to_content.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190404181724_add_organization_to_discussion.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190506180102_add_multifile_to_languages.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190530173142_add_organization_to_assignment.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190702003600_add_loading_flags_to_language.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190702182407_add_new_profile_fields.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190724190355_add_settings_to_languages.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190905174934_add_submitted_at_to_assignments.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190918134321_remove_new_expectations.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190918140026_add_custom_expectations.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20190929180601_add_expectations_to_language.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20191022180238_remove_choice_values_from_exercises.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20191029200548_create_indicators.rb +12 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20191105171244_add_parent_to_assignments.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20191211153004_add_dirtiness_to_indicators.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20191217184525_add_progress_fields_to_indicators.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20200127142401_add_private_to_topics_and_books.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20200213175736_add_verified_names_to_users.rb +6 -0
- 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
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20200508191543_create_avatars.rb +8 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20200518135658_add_avatar_to_users.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/db/migrate/20200527180729_add_disabled_at_to_users.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain.rb +58 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/engine.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/evaluation.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/evaluation/automated.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/evaluation/manual.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/exceptions.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/exceptions/blocked_forum_error.rb +2 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/exceptions/disabled_error.rb +2 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/exceptions/forbidden_error.rb +2 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/exceptions/gone_error.rb +2 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/exceptions/not_found_error.rb +2 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/exceptions/unauthorized_error.rb +2 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/extensions.rb +4 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/extensions/array.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/extensions/hash.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/extensions/module.rb +17 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/extensions/string.rb +73 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories.rb +18 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/api_client_factory.rb +18 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/assignments_factory.rb +8 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/book_factory.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/chapter_factory.rb +17 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/complement_factory.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/course_factory.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/discussion_factory.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/exam_factory.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/exercise_factory.rb +84 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/guide_factory.rb +37 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/invitation_factory.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/lesson_factory.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/login_settings_factory.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/message_factory.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/organization_factory.rb +38 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/topic_factory.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/usage_factory.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/factories/user_factory.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/file.rb +18 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/helpers.rb +8 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/helpers/course.rb +13 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/helpers/organization.rb +72 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/helpers/user.rb +109 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/locales/activerecord/en.yml +29 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/locales/activerecord/es.yml +58 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/locales/activerecord/pt.yml +29 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/locales/console_submission/en.yml +4 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/locales/console_submission/es.yml +4 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/locales/console_submission/pt.yml +4 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/organization.rb +8 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/organization/profile.rb +39 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/organization/settings.rb +27 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/organization/theme.rb +4 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/seed.rb +33 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status.rb +72 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/discussion/closed.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/discussion/discussion.rb +44 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/discussion/opened.rb +31 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/discussion/pending_review.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/discussion/solved.rb +19 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/aborted.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/errored.rb +19 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/failed.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/manual_evaluation_pending.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/passed.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/passed_with_warnings.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/pending.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/running.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/skipped.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/status/submission/submission.rb +45 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/store.rb +3 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/store/bibliotheca.rb +29 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/store/github.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/store/github/exercise_schema.rb +40 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/store/github/guide_schema.rb +37 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/store/thesaurus.rb +85 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission.rb +18 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/base.rb +57 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/confirmation.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/console_submission.rb +13 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/persistent_submission.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/query.rb +19 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/question.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/solution.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/submission/try.rb +20 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/syncable.rb +91 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/syncable/with_resource_fields.rb +18 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/lib/mumuki/domain/version.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/mumuki-domain.gemspec +78 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/Rakefile +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/bin/bundle +3 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/bin/rails +4 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/bin/rake +4 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/bin/setup +38 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/bin/update +29 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/config.ru +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/config/application.rb +13 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/config/boot.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/config/database.travis.yml +4 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/config/database.yml +13 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/config/environment.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/config/environments/test.rb +47 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/dummy/db/schema.rb +387 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/evaluation_helper.rb +19 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/lib/bibliotheca_store_spec.rb +73 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/lib/organization_helpers_spec.rb +228 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/lib/thesaurus_store_spec.rb +329 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/lib/user_helpers_spec.rb +168 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/api_client_spec.rb +6 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/assignment_spec.rb +490 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/book_import_spec.rb +70 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/book_spec.rb +203 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/course_spec.rb +67 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/discussion_spec.rb +176 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/event_generation_spec.rb +189 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/event_publishing_spec.rb +36 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/exam_spec.rb +159 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/exercise_spec.rb +589 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/guide_import_spec.rb +317 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/guide_spec.rb +264 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/hash_spec.rb +17 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/indicator_spec.rb +101 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/interactive_spec.rb +144 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/invitation_spec.rb +25 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/language_spec.rb +56 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/lesson_spec.rb +90 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/message_spec.rb +87 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/navigation_spec.rb +78 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/organization_spec.rb +215 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/playground_spec.rb +23 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/problem_spec.rb +85 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/query_spec.rb +21 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/question_spec.rb +37 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/reading_spec.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/solution_spec.rb +77 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/stats_spec.rb +24 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/string_spec.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/topic_spec.rb +57 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/usage_spec.rb +82 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/user_changed_spec.rb +44 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/user_spec.rb +304 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/models/with_expectations_spec.rb +62 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-acb12583b793/spec/spec_helper.rb +57 -0
- 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, "&").replace(/"/g, """).replace(/'/g, "'").replace(/</g, "<");
|
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");
|