├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .swp ├── LICENSE ├── Readme.md ├── ReadmeScratchpadUi.md ├── ace ├── ace.js ├── ext-beautify.js ├── ext-code_lens.js ├── ext-elastic_tabstops_lite.js ├── ext-emmet.js ├── ext-error_marker.js ├── ext-hardwrap.js ├── ext-keybinding_menu.js ├── ext-language_tools.js ├── ext-linking.js ├── ext-modelist.js ├── ext-options.js ├── ext-prompt.js ├── ext-rtl.js ├── ext-searchbox.js ├── ext-settings_menu.js ├── ext-spellcheck.js ├── ext-split.js ├── ext-static_highlight.js ├── ext-statusbar.js ├── ext-textarea.js ├── ext-themelist.js ├── ext-whitespace.js ├── keybinding-emacs.js ├── keybinding-sublime.js ├── keybinding-vim.js ├── keybinding-vscode.js ├── mode-abap.js ├── mode-abc.js ├── mode-actionscript.js ├── mode-ada.js ├── mode-alda.js ├── mode-apache_conf.js ├── mode-apex.js ├── mode-applescript.js ├── mode-aql.js ├── mode-asciidoc.js ├── mode-asl.js ├── mode-assembly_x86.js ├── mode-autohotkey.js ├── mode-batchfile.js ├── mode-c9search.js ├── mode-c_cpp.js ├── mode-cirru.js ├── mode-clojure.js ├── mode-cobol.js ├── mode-coffee.js ├── mode-coldfusion.js ├── mode-crystal.js ├── mode-csharp.js ├── mode-csound_document.js ├── mode-csound_orchestra.js ├── mode-csound_score.js ├── mode-csp.js ├── mode-css.js ├── mode-curly.js ├── mode-d.js ├── mode-dart.js ├── mode-diff.js ├── mode-django.js ├── mode-dockerfile.js ├── mode-dot.js ├── mode-drools.js ├── mode-edifact.js ├── mode-eiffel.js ├── mode-ejs.js ├── mode-elixir.js ├── mode-elm.js ├── mode-erlang.js ├── mode-forth.js ├── mode-fortran.js ├── mode-fsharp.js ├── mode-fsl.js ├── mode-ftl.js ├── mode-gcode.js ├── mode-gherkin.js ├── mode-gitignore.js ├── mode-glsl.js ├── mode-gobstones.js ├── mode-golang.js ├── mode-graphqlschema.js ├── mode-groovy.js ├── mode-haml.js ├── mode-handlebars.js ├── mode-haskell.js ├── mode-haskell_cabal.js ├── mode-haxe.js ├── mode-hjson.js ├── mode-html.js ├── mode-html_elixir.js ├── mode-html_ruby.js ├── mode-ini.js ├── mode-io.js ├── mode-jack.js ├── mode-jade.js ├── mode-java.js ├── mode-javascript.js ├── mode-json.js ├── mode-json5.js ├── mode-jsoniq.js ├── mode-jsp.js ├── mode-jssm.js ├── mode-jsx.js ├── mode-julia.js ├── mode-kotlin.js ├── mode-latex.js ├── mode-latte.js ├── mode-less.js ├── mode-liquid.js ├── mode-lisp.js ├── mode-livescript.js ├── mode-logiql.js ├── mode-logtalk.js ├── mode-lsl.js ├── mode-lua.js ├── mode-luapage.js ├── mode-lucene.js ├── mode-makefile.js ├── mode-markdown.js ├── mode-mask.js ├── mode-matlab.js ├── mode-maze.js ├── mode-mediawiki.js ├── mode-mel.js ├── mode-mips.js ├── mode-mixal.js ├── mode-mushcode.js ├── mode-mysql.js ├── mode-nginx.js ├── mode-nim.js ├── mode-nix.js ├── mode-nsis.js ├── mode-nunjucks.js ├── mode-objectivec.js ├── mode-ocaml.js ├── mode-pascal.js ├── mode-perl.js ├── mode-pgsql.js ├── mode-php.js ├── mode-php_laravel_blade.js ├── mode-pig.js ├── mode-plain_text.js ├── mode-powershell.js ├── mode-praat.js ├── mode-prisma.js ├── mode-prolog.js ├── mode-properties.js ├── mode-protobuf.js ├── mode-puppet.js ├── mode-python.js ├── mode-qml.js ├── mode-r.js ├── mode-raku.js ├── mode-razor.js ├── mode-rdoc.js ├── mode-red.js ├── mode-redshift.js ├── mode-rhtml.js ├── mode-rst.js ├── mode-ruby.js ├── mode-rust.js ├── mode-sass.js ├── mode-scad.js ├── mode-scala.js ├── mode-scheme.js ├── mode-scrypt.js ├── mode-scss.js ├── mode-sh.js ├── mode-sjs.js ├── mode-slim.js ├── mode-smarty.js ├── mode-smithy.js ├── mode-snippets.js ├── mode-soy_template.js ├── mode-space.js ├── mode-sparql.js ├── mode-sql.js ├── mode-sqlserver.js ├── mode-stylus.js ├── mode-svg.js ├── mode-swift.js ├── mode-tcl.js ├── mode-terraform.js ├── mode-tex.js ├── mode-text.js ├── mode-textile.js ├── mode-toml.js ├── mode-tsx.js ├── mode-turtle.js ├── mode-twig.js ├── mode-typescript.js ├── mode-vala.js ├── mode-vbscript.js ├── mode-velocity.js ├── mode-verilog.js ├── mode-vhdl.js ├── mode-visualforce.js ├── mode-wollok.js ├── mode-xml.js ├── mode-xquery.js ├── mode-yaml.js ├── mode-zeek.js ├── snippets │ ├── abap.js │ ├── abc.js │ ├── actionscript.js │ ├── ada.js │ ├── alda.js │ ├── apache_conf.js │ ├── apex.js │ ├── applescript.js │ ├── aql.js │ ├── asciidoc.js │ ├── asl.js │ ├── assembly_x86.js │ ├── autohotkey.js │ ├── batchfile.js │ ├── c9search.js │ ├── c_cpp.js │ ├── cirru.js │ ├── clojure.js │ ├── cobol.js │ ├── coffee.js │ ├── coldfusion.js │ ├── crystal.js │ ├── csharp.js │ ├── csound_document.js │ ├── csound_orchestra.js │ ├── csound_score.js │ ├── csp.js │ ├── css.js │ ├── curly.js │ ├── d.js │ ├── dart.js │ ├── diff.js │ ├── django.js │ ├── dockerfile.js │ ├── dot.js │ ├── drools.js │ ├── edifact.js │ ├── eiffel.js │ ├── ejs.js │ ├── elixir.js │ ├── elm.js │ ├── erlang.js │ ├── forth.js │ ├── fortran.js │ ├── fsharp.js │ ├── fsl.js │ ├── ftl.js │ ├── gcode.js │ ├── gherkin.js │ ├── gitignore.js │ ├── glsl.js │ ├── gobstones.js │ ├── golang.js │ ├── graphqlschema.js │ ├── groovy.js │ ├── haml.js │ ├── handlebars.js │ ├── haskell.js │ ├── haskell_cabal.js │ ├── haxe.js │ ├── hjson.js │ ├── html.js │ ├── html_elixir.js │ ├── html_ruby.js │ ├── ini.js │ ├── io.js │ ├── jack.js │ ├── jade.js │ ├── java.js │ ├── javascript.js │ ├── json.js │ ├── json5.js │ ├── jsoniq.js │ ├── jsp.js │ ├── jssm.js │ ├── jsx.js │ ├── julia.js │ ├── kotlin.js │ ├── latex.js │ ├── latte.js │ ├── less.js │ ├── liquid.js │ ├── lisp.js │ ├── livescript.js │ ├── logiql.js │ ├── logtalk.js │ ├── lsl.js │ ├── lua.js │ ├── luapage.js │ ├── lucene.js │ ├── makefile.js │ ├── markdown.js │ ├── mask.js │ ├── matlab.js │ ├── maze.js │ ├── mediawiki.js │ ├── mel.js │ ├── mips.js │ ├── mixal.js │ ├── mushcode.js │ ├── mysql.js │ ├── nginx.js │ ├── nim.js │ ├── nix.js │ ├── nsis.js │ ├── nunjucks.js │ ├── objectivec.js │ ├── ocaml.js │ ├── pascal.js │ ├── perl.js │ ├── pgsql.js │ ├── php.js │ ├── php_laravel_blade.js │ ├── pig.js │ ├── plain_text.js │ ├── powershell.js │ ├── praat.js │ ├── prisma.js │ ├── prolog.js │ ├── properties.js │ ├── protobuf.js │ ├── puppet.js │ ├── python.js │ ├── qml.js │ ├── r.js │ ├── raku.js │ ├── razor.js │ ├── rdoc.js │ ├── red.js │ ├── redshift.js │ ├── rhtml.js │ ├── rst.js │ ├── ruby.js │ ├── rust.js │ ├── sass.js │ ├── scad.js │ ├── scala.js │ ├── scheme.js │ ├── scrypt.js │ ├── scss.js │ ├── sh.js │ ├── sjs.js │ ├── slim.js │ ├── smarty.js │ ├── smithy.js │ ├── snippets.js │ ├── soy_template.js │ ├── space.js │ ├── sparql.js │ ├── sql.js │ ├── sqlserver.js │ ├── stylus.js │ ├── svg.js │ ├── swift.js │ ├── tcl.js │ ├── terraform.js │ ├── tex.js │ ├── text.js │ ├── textile.js │ ├── toml.js │ ├── tsx.js │ ├── turtle.js │ ├── twig.js │ ├── typescript.js │ ├── vala.js │ ├── vbscript.js │ ├── velocity.js │ ├── verilog.js │ ├── vhdl.js │ ├── visualforce.js │ ├── wollok.js │ ├── xml.js │ ├── xquery.js │ ├── yaml.js │ └── zeek.js ├── theme-ambiance.js ├── theme-chaos.js ├── theme-chrome.js ├── theme-clouds.js ├── theme-clouds_midnight.js ├── theme-cobalt.js ├── theme-crimson_editor.js ├── theme-dawn.js ├── theme-dracula.js ├── theme-dreamweaver.js ├── theme-eclipse.js ├── theme-github.js ├── theme-gob.js ├── theme-gruvbox.js ├── theme-idle_fingers.js ├── theme-iplastic.js ├── theme-katzenmilch.js ├── theme-kr_theme.js ├── theme-kuroir.js ├── theme-merbivore.js ├── theme-merbivore_soft.js ├── theme-mono_industrial.js ├── theme-monokai.js ├── theme-nord_dark.js ├── theme-one_dark.js ├── theme-pastel_on_dark.js ├── theme-solarized_dark.js ├── theme-solarized_light.js ├── theme-sqlserver.js ├── theme-terminal.js ├── theme-textmate.js ├── theme-tomorrow.js ├── theme-tomorrow_night.js ├── theme-tomorrow_night_blue.js ├── theme-tomorrow_night_bright.js ├── theme-tomorrow_night_eighties.js ├── theme-twilight.js ├── theme-vibrant_ink.js ├── theme-xcode.js ├── worker-base.js ├── worker-coffee.js ├── worker-css.js ├── worker-html.js ├── worker-javascript.js ├── worker-json.js ├── worker-lua.js ├── worker-php.js ├── worker-xml.js └── worker-xquery.js ├── ajax.php ├── amd ├── ajaxquestionloaderinline.js ├── build │ ├── ajaxquestionloader.min.js │ ├── ajaxquestionloader.min.js.map │ ├── authorform.min.js │ ├── authorform.min.js.map │ ├── graphelements.min.js │ ├── graphelements.min.js.map │ ├── graphutil.min.js │ ├── graphutil.min.js.map │ ├── multilanguagequestion.min.js │ ├── multilanguagequestion.min.js.map │ ├── outputdisplayarea.min.js │ ├── outputdisplayarea.min.js.map │ ├── resetbutton.min.js │ ├── resetbutton.min.js.map │ ├── showdiff.min.js │ ├── showdiff.min.js.map │ ├── textareas.min.js │ ├── textareas.min.js.map │ ├── ui_ace.min.js │ ├── ui_ace.min.js.map │ ├── ui_ace_gapfiller.min.js │ ├── ui_ace_gapfiller.min.js.map │ ├── ui_gapfiller.min.js │ ├── ui_gapfiller.min.js.map │ ├── ui_graph.min.js │ ├── ui_graph.min.js.map │ ├── ui_html.min.js │ ├── ui_html.min.js.map │ ├── ui_scratchpad.min.js │ ├── ui_scratchpad.min.js.map │ ├── ui_table.min.js │ ├── ui_table.min.js.map │ ├── userinterfacewrapper.min.js │ ├── userinterfacewrapper.min.js.map │ ├── userinterfacewrapper.min.js.map.orig │ └── userinterfacewrapper.min.js.orig └── src │ ├── ajaxquestionloader.js │ ├── authorform.js │ ├── graphelements.js │ ├── graphutil.js │ ├── multilanguagequestion.js │ ├── outputdisplayarea.js │ ├── resetbutton.js │ ├── showdiff.js │ ├── textareas.js │ ├── ui_ace.js │ ├── ui_ace.json │ ├── ui_ace_gapfiller.js │ ├── ui_ace_gapfiller.json │ ├── ui_gapfiller.js │ ├── ui_gapfiller.json │ ├── ui_graph.js │ ├── ui_graph.json │ ├── ui_html.js │ ├── ui_html.json │ ├── ui_scratchpad.js │ ├── ui_scratchpad.json │ ├── ui_table.js │ ├── ui_table.json │ └── userinterfacewrapper.js ├── authorguide.md ├── backup └── moodle2 │ ├── backup_qtype_coderunner_plugin.class.php │ └── restore_qtype_coderunner_plugin.class.php ├── bulktest.php ├── bulktestall.php ├── bulktestindex.php ├── cachepurge.php ├── cachepurgeindex.php ├── changehistory.md ├── classes ├── bad_json_exception.php ├── bulk_tester.php ├── cache_purger.php ├── combinator_grader_outcome.php ├── constants.php ├── display_options.php ├── equality_grader.php ├── escapers.php ├── event │ └── sandbox_webservice_exec.php ├── exception.php ├── external │ └── run_in_sandbox.php ├── grader.php ├── html_wrapper.php ├── ideonesandbox.php ├── jobesandbox.php ├── jobrunner.php ├── localsandbox.php ├── near_equality_grader.php ├── overload_exception.php ├── privacy │ └── provider.php ├── regex_grader.php ├── sandbox.php ├── student.php ├── task │ ├── cache_cleaner.php │ └── qtype_coderunner_setup_question_prototypes.php ├── template_grader.php ├── test_result.php ├── testing_outcome.php ├── twig.php ├── twig_security_policy.php ├── twigmacros.php ├── ui_parameters.php ├── ui_plugins.php ├── util.php └── wsthrottle.php ├── db ├── access.php ├── builtin_PROTOTYPES.xml ├── caches.php ├── install.php ├── install.xml ├── nodejsfix.xml ├── services.php ├── tasks.php ├── upgrade.php └── upgradelib.php ├── docs └── Readme.md ├── downloadquizattempts.php ├── downloadquizattemptsanon.php ├── edit_coderunner_form.php ├── findduplicates.php ├── findduplicatesindex.php ├── getallattempts.php ├── getallsubmissions.sql ├── lang └── en │ └── qtype_coderunner.php ├── lib.php ├── loadtesterrors.txt ├── loadtesting.py ├── loadtesting2.py ├── loadtesting3.py ├── loadtestingresults2.ods ├── logo.jpg ├── miscsqlqueries ├── mkdocs.yml ├── pix ├── fullscreen.svg ├── icon.svg └── windowed.svg ├── problemspec.php ├── prototypeusage.php ├── prototypeusageindex.php ├── question.php ├── questiontestrun.php ├── questiontype.php ├── quizsubmissions.py ├── renderer.php ├── samples ├── csharpprogviapython.xml ├── genericpythonoutputonly.xml ├── graphuidemoquestion.xml ├── input_mpl_wrapper.py ├── octavefunctionquestion.xml ├── programtestingprototypeandexamples.xml ├── prototype_c_via_python.xml ├── python3demoquizquestions.xml ├── randomisationexamples.xml ├── simpledemoquestions.xml ├── sqlexamples.xml ├── trivialnodejsquestion.xml ├── uocprototypes.xml └── uoctkinterprototype.xml ├── settings.php ├── styles.css ├── templates ├── answer_textarea.mustache ├── help_icon.mustache ├── output_displayarea.mustache ├── scratchpad.mustache ├── scratchpad_controls.mustache ├── scratchpad_ui.mustache └── screenmode_button.mustache ├── tests ├── behat │ ├── ace_scratchpad_compatibility.feature │ ├── attachmentimportexport.feature │ ├── attachments.feature │ ├── backup_and_restore.feature │ ├── behat_coderunner.php │ ├── check_graph_question_types.feature │ ├── check_python_template_params.feature │ ├── check_stepinfo.feature │ ├── check_twig_student_variable.feature │ ├── create_python3_sqr_function.feature │ ├── duplicate_prototype.feature │ ├── edit.feature │ ├── edit_question_precheck.feature │ ├── edit_table.feature │ ├── export.feature │ ├── gapfiller_ui.feature │ ├── grading_scenarios.feature │ ├── html_ui.feature │ ├── import.feature │ ├── make_combinator_prototype.feature │ ├── make_prototype.feature │ ├── missing_prototype.feature │ ├── reset_button.feature │ ├── run_python3_sqr_function.feature │ ├── run_python3_sqr_function_templated.feature │ ├── sandbox_webservice.feature │ ├── scratchpad_ui.feature │ ├── scratchpad_ui_params.feature │ ├── set_uiplugin.feature │ ├── showdifferences_button.feature │ ├── template_params_error.feature │ ├── test_combinator_grader.feature │ └── twigprefix.feature ├── c_questions_test.php ├── cpp_questions_test.php ├── customise_test.php ├── datafile_test.php ├── fixtures │ ├── input_mpl_wrapper_html.py │ ├── input_mpl_wrapper_json.py │ ├── input_wrapper_json.py │ ├── loadtesting_pseudocourse_backup_V3.1.2.mbz │ ├── loadtesting_pseudocourse_backup_V4.5.3.mbz │ ├── prototype_c_via_python_v1.xml │ ├── prototype_c_via_python_v2.xml │ ├── simpledemoquestions.V2.xml │ ├── sqrexportwithsampleattachment.xml │ ├── sqrmodule.py │ └── test-sandbox-config-dist.php ├── grader_test.php ├── graphui_save_test.php ├── helper.php ├── ideonesandbox_test.php ├── java_question_test.php ├── jobesandbox_test.php ├── matlab_question_test.php ├── nodejs_question_test.php ├── octave_question_test.php ├── penaltyregime_test.php ├── phpquestions_test.php ├── precheckwalkthrough_test.php ├── prototype_test.php ├── pythonpylint_test.php ├── pythonquestions_test.php ├── questiontype_test.php ├── restore_test.php ├── template_test.php ├── test.php ├── ui_parameters_test.php ├── walkthrough_combinator_grader_test.php ├── walkthrough_display_feedback_test.php ├── walkthrough_extras_test.php ├── walkthrough_multilang_test.php ├── walkthrough_randomisation_test.php └── walkthrough_test.php ├── thirdpartylibs.xml ├── ucprivate ├── findquiztagsforquestionattempt.sql └── miscqueries.sql ├── unsupportedquestiontypes ├── README.txt ├── examples │ ├── c_gapfiller_example.xml │ ├── c_program_w_echo_and_scratchpad_example.xml │ ├── cpp_gapfiller_example.xml │ ├── dotnet_c#_method_example.xml │ ├── dotnet_c#_program_example.xml │ ├── python3_files_program_example.xml │ ├── python3_parsons_problem_example.xml │ ├── python3_scratchpad_example1.xml │ ├── python3_scratchpad_example2.xml │ ├── python3_sst_example.xml │ └── python3_test_table_example.xml └── prototypes │ ├── PROTOTYPE_c_gapfiller.xml │ ├── PROTOTYPE_c_program_with_echo_and_scratchpad.xml │ ├── PROTOTYPE_cpp_gapfiller.xml │ ├── PROTOTYPE_dotnet_c#_method.xml │ ├── PROTOTYPE_dotnet_c#_program.xml │ ├── PROTOTYPE_python3_files_program.xml │ ├── PROTOTYPE_python3_parsons_problem.xml │ ├── PROTOTYPE_python3_scratchpad.xml │ ├── PROTOTYPE_python3_sst.xml │ └── PROTOTYPE_python3_test_table.xml ├── vendor ├── autoload.php ├── composer │ ├── ClassLoader.php │ ├── InstalledVersions.php │ ├── LICENSE │ ├── autoload_classmap.php │ ├── autoload_files.php │ ├── autoload_namespaces.php │ ├── autoload_psr4.php │ ├── autoload_real.php │ ├── autoload_static.php │ ├── installed.json │ ├── installed.php │ └── platform_check.php ├── symfony │ ├── deprecation-contracts │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ └── function.php │ ├── polyfill-ctype │ │ ├── Ctype.php │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bootstrap.php │ │ └── bootstrap80.php │ ├── polyfill-mbstring │ │ ├── LICENSE │ │ ├── Mbstring.php │ │ ├── README.md │ │ ├── Resources │ │ │ └── unidata │ │ │ │ ├── caseFolding.php │ │ │ │ ├── lowerCase.php │ │ │ │ ├── titleCaseRegexp.php │ │ │ │ └── upperCase.php │ │ ├── bootstrap.php │ │ └── bootstrap80.php │ └── polyfill-php81 │ │ ├── LICENSE │ │ ├── Php81.php │ │ ├── README.md │ │ ├── Resources │ │ └── stubs │ │ │ ├── CURLStringFile.php │ │ │ └── ReturnTypeWillChange.php │ │ └── bootstrap.php └── twig │ └── twig │ ├── CHANGELOG │ ├── LICENSE │ ├── README.rst │ ├── phpstan-baseline.neon │ ├── phpstan.neon.dist │ └── src │ ├── AbstractTwigCallable.php │ ├── Attribute │ ├── FirstClassTwigCallableReady.php │ └── YieldReady.php │ ├── Cache │ ├── CacheInterface.php │ ├── ChainCache.php │ ├── FilesystemCache.php │ ├── NullCache.php │ ├── ReadOnlyFilesystemCache.php │ └── RemovableCacheInterface.php │ ├── Compiler.php │ ├── DeprecatedCallableInfo.php │ ├── Environment.php │ ├── Error │ ├── Error.php │ ├── LoaderError.php │ ├── RuntimeError.php │ └── SyntaxError.php │ ├── ExpressionParser.php │ ├── Extension │ ├── AbstractExtension.php │ ├── CoreExtension.php │ ├── DebugExtension.php │ ├── EscaperExtension.php │ ├── ExtensionInterface.php │ ├── GlobalsInterface.php │ ├── OptimizerExtension.php │ ├── ProfilerExtension.php │ ├── RuntimeExtensionInterface.php │ ├── SandboxExtension.php │ ├── StagingExtension.php │ ├── StringLoaderExtension.php │ └── YieldNotReadyExtension.php │ ├── ExtensionSet.php │ ├── FileExtensionEscapingStrategy.php │ ├── Lexer.php │ ├── Loader │ ├── ArrayLoader.php │ ├── ChainLoader.php │ ├── FilesystemLoader.php │ └── LoaderInterface.php │ ├── Markup.php │ ├── Node │ ├── AutoEscapeNode.php │ ├── BlockNode.php │ ├── BlockReferenceNode.php │ ├── BodyNode.php │ ├── CaptureNode.php │ ├── CheckSecurityCallNode.php │ ├── CheckSecurityNode.php │ ├── CheckToStringNode.php │ ├── DeprecatedNode.php │ ├── DoNode.php │ ├── EmbedNode.php │ ├── EmptyNode.php │ ├── Expression │ │ ├── AbstractExpression.php │ │ ├── ArrayExpression.php │ │ ├── ArrowFunctionExpression.php │ │ ├── AssignNameExpression.php │ │ ├── Binary │ │ │ ├── AbstractBinary.php │ │ │ ├── AddBinary.php │ │ │ ├── AndBinary.php │ │ │ ├── BitwiseAndBinary.php │ │ │ ├── BitwiseOrBinary.php │ │ │ ├── BitwiseXorBinary.php │ │ │ ├── ConcatBinary.php │ │ │ ├── DivBinary.php │ │ │ ├── ElvisBinary.php │ │ │ ├── EndsWithBinary.php │ │ │ ├── EqualBinary.php │ │ │ ├── FloorDivBinary.php │ │ │ ├── GreaterBinary.php │ │ │ ├── GreaterEqualBinary.php │ │ │ ├── HasEveryBinary.php │ │ │ ├── HasSomeBinary.php │ │ │ ├── InBinary.php │ │ │ ├── LessBinary.php │ │ │ ├── LessEqualBinary.php │ │ │ ├── MatchesBinary.php │ │ │ ├── ModBinary.php │ │ │ ├── MulBinary.php │ │ │ ├── NotEqualBinary.php │ │ │ ├── NotInBinary.php │ │ │ ├── NullCoalesceBinary.php │ │ │ ├── OrBinary.php │ │ │ ├── PowerBinary.php │ │ │ ├── RangeBinary.php │ │ │ ├── SpaceshipBinary.php │ │ │ ├── StartsWithBinary.php │ │ │ ├── SubBinary.php │ │ │ └── XorBinary.php │ │ ├── BlockReferenceExpression.php │ │ ├── CallExpression.php │ │ ├── ConditionalExpression.php │ │ ├── ConstantExpression.php │ │ ├── Filter │ │ │ ├── DefaultFilter.php │ │ │ └── RawFilter.php │ │ ├── FilterExpression.php │ │ ├── FunctionExpression.php │ │ ├── FunctionNode │ │ │ ├── EnumCasesFunction.php │ │ │ └── EnumFunction.php │ │ ├── GetAttrExpression.php │ │ ├── InlinePrint.php │ │ ├── MacroReferenceExpression.php │ │ ├── MethodCallExpression.php │ │ ├── NameExpression.php │ │ ├── NullCoalesceExpression.php │ │ ├── OperatorEscapeInterface.php │ │ ├── ParentExpression.php │ │ ├── TempNameExpression.php │ │ ├── Ternary │ │ │ └── ConditionalTernary.php │ │ ├── Test │ │ │ ├── ConstantTest.php │ │ │ ├── DefinedTest.php │ │ │ ├── DivisiblebyTest.php │ │ │ ├── EvenTest.php │ │ │ ├── NullTest.php │ │ │ ├── OddTest.php │ │ │ └── SameasTest.php │ │ ├── TestExpression.php │ │ ├── Unary │ │ │ ├── AbstractUnary.php │ │ │ ├── NegUnary.php │ │ │ ├── NotUnary.php │ │ │ ├── PosUnary.php │ │ │ ├── SpreadUnary.php │ │ │ └── StringCastUnary.php │ │ ├── Variable │ │ │ ├── AssignContextVariable.php │ │ │ ├── AssignTemplateVariable.php │ │ │ ├── ContextVariable.php │ │ │ ├── LocalVariable.php │ │ │ └── TemplateVariable.php │ │ └── VariadicExpression.php │ ├── FlushNode.php │ ├── ForLoopNode.php │ ├── ForNode.php │ ├── IfNode.php │ ├── ImportNode.php │ ├── IncludeNode.php │ ├── MacroNode.php │ ├── ModuleNode.php │ ├── NameDeprecation.php │ ├── Node.php │ ├── NodeCaptureInterface.php │ ├── NodeOutputInterface.php │ ├── Nodes.php │ ├── PrintNode.php │ ├── SandboxNode.php │ ├── SetNode.php │ ├── TextNode.php │ ├── TypesNode.php │ └── WithNode.php │ ├── NodeTraverser.php │ ├── NodeVisitor │ ├── AbstractNodeVisitor.php │ ├── EscaperNodeVisitor.php │ ├── NodeVisitorInterface.php │ ├── OptimizerNodeVisitor.php │ ├── SafeAnalysisNodeVisitor.php │ ├── SandboxNodeVisitor.php │ └── YieldNotReadyNodeVisitor.php │ ├── OperatorPrecedenceChange.php │ ├── Parser.php │ ├── Profiler │ ├── Dumper │ │ ├── BaseDumper.php │ │ ├── BlackfireDumper.php │ │ ├── HtmlDumper.php │ │ └── TextDumper.php │ ├── Node │ │ ├── EnterProfileNode.php │ │ └── LeaveProfileNode.php │ ├── NodeVisitor │ │ └── ProfilerNodeVisitor.php │ └── Profile.php │ ├── Resources │ ├── core.php │ ├── debug.php │ ├── escaper.php │ └── string_loader.php │ ├── Runtime │ └── EscaperRuntime.php │ ├── RuntimeLoader │ ├── ContainerRuntimeLoader.php │ ├── FactoryRuntimeLoader.php │ └── RuntimeLoaderInterface.php │ ├── Sandbox │ ├── SecurityError.php │ ├── SecurityNotAllowedFilterError.php │ ├── SecurityNotAllowedFunctionError.php │ ├── SecurityNotAllowedMethodError.php │ ├── SecurityNotAllowedPropertyError.php │ ├── SecurityNotAllowedTagError.php │ ├── SecurityPolicy.php │ ├── SecurityPolicyInterface.php │ └── SourcePolicyInterface.php │ ├── Source.php │ ├── Template.php │ ├── TemplateWrapper.php │ ├── Test │ ├── IntegrationTestCase.php │ └── NodeTestCase.php │ ├── Token.php │ ├── TokenParser │ ├── AbstractTokenParser.php │ ├── ApplyTokenParser.php │ ├── AutoEscapeTokenParser.php │ ├── BlockTokenParser.php │ ├── DeprecatedTokenParser.php │ ├── DoTokenParser.php │ ├── EmbedTokenParser.php │ ├── ExtendsTokenParser.php │ ├── FlushTokenParser.php │ ├── ForTokenParser.php │ ├── FromTokenParser.php │ ├── GuardTokenParser.php │ ├── IfTokenParser.php │ ├── ImportTokenParser.php │ ├── IncludeTokenParser.php │ ├── MacroTokenParser.php │ ├── SandboxTokenParser.php │ ├── SetTokenParser.php │ ├── TokenParserInterface.php │ ├── TypesTokenParser.php │ ├── UseTokenParser.php │ └── WithTokenParser.php │ ├── TokenStream.php │ ├── TwigCallableInterface.php │ ├── TwigFilter.php │ ├── TwigFunction.php │ ├── TwigTest.php │ └── Util │ ├── CallableArgumentsExtractor.php │ ├── DeprecationCollector.php │ ├── ReflectionCallable.php │ └── TemplateDirIterator.php └── version.php /.gitignore: -------------------------------------------------------------------------------- 1 | nbproject 2 | TopLogs 3 | .html 4 | loadtestingresults.ods 5 | /MoodleBook/makemoodlebook.py 6 | gh-md-toc 7 | moodlebook.zip 8 | /makemoodlebook.py 9 | /MoodleBook/ 10 | /Screendumps/ 11 | Readme.md.* 12 | /tests/fixtures/test-sandbox-config.php 13 | /LocalStuff/ 14 | /Preloading/selenium-server-standalone-2.53.0.jar 15 | /selenium-server-standalone-2.53.0.jar 16 | /selenium-server-standalone-3.0.1.jar 17 | striptrailingwhitespace.py 18 | composer.json 19 | composer.lock 20 | excludesfromstylechecker.txt 21 | miscsqlqueries 22 | moodleopenshift.md 23 | dbquerieswhilefixingbug.sql 24 | /questions-moodle-Questions for export-20171106-1418.xml 25 | /twighacking.php 26 | NonRepoFiles/* 27 | /amd/src/blockly/ 28 | /amd/build/blockly/ 29 | /amd/build/bak/ 30 | /amd/build/ui_blockly.min.js 31 | /amd/build/ui_blockly.min.js.map 32 | /amd/src/partiallyupdatedgraph/ 33 | /amd/src/ui_blockly.js 34 | /amd/src/ui_blockly.json 35 | /amd/src/.eslintrc.js 36 | .grunt 37 | .vscode/ 38 | -------------------------------------------------------------------------------- /.swp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/e415e499e4cdd53f74e42739c32ba665258f5b4e/.swp -------------------------------------------------------------------------------- /ace/ext-error_marker.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/ext/error_marker"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/mode-plain_text.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | var oop = require("../lib/oop"); 5 | var TextMode = require("./text").Mode; 6 | var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; 7 | var Behaviour = require("./behaviour").Behaviour; 8 | 9 | var Mode = function() { 10 | this.HighlightRules = TextHighlightRules; 11 | this.$behaviour = new Behaviour(); 12 | }; 13 | 14 | oop.inherits(Mode, TextMode); 15 | 16 | (function() { 17 | this.type = "text"; 18 | this.getNextLineIndent = function(state, line, tab) { 19 | return ''; 20 | }; 21 | this.$id = "ace/mode/plain_text"; 22 | }).call(Mode.prototype); 23 | 24 | exports.Mode = Mode; 25 | }); (function() { 26 | ace.require(["ace/mode/plain_text"], function(m) { 27 | if (typeof module == "object" && typeof exports == "object" && module) { 28 | module.exports = m; 29 | } 30 | }); 31 | })(); 32 | -------------------------------------------------------------------------------- /ace/mode-text.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/mode/text"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/abap.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/abap"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/ada.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/ada"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/alda.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/alda"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/apache_conf.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/apache_conf"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/apex.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/apex"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/applescript.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/applescript"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/aql.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/aql"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/asciidoc.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/asciidoc"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/asl.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/asl"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/assembly_x86.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/assembly_x86"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/autohotkey.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/autohotkey"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/batchfile.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/batchfile"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/c9search.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/c9search"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/cirru.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/cirru"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/cobol.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/cobol"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/coldfusion.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/coldfusion"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/crystal.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/crystal"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/csharp.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/csharp"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/csound_document.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/csound_document",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# \n\ 5 | snippet synth\n\ 6 | \n\ 7 | \n\ 8 | ${1}\n\ 9 | \n\ 10 | \n\ 11 | e\n\ 12 | \n\ 13 | \n\ 14 | "; 15 | exports.scope = "csound_document"; 16 | 17 | }); (function() { 18 | ace.require(["ace/snippets/csound_document"], function(m) { 19 | if (typeof module == "object" && typeof exports == "object" && module) { 20 | module.exports = m; 21 | } 22 | }); 23 | })(); 24 | -------------------------------------------------------------------------------- /ace/snippets/csound_score.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/csound_score"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/csp.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/csp"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/curly.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/curly"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/d.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/d"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/diff.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/diff",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# DEP-3 (http://dep.debian.net/deps/dep3/) style patch header\n\ 5 | snippet header DEP-3 style header\n\ 6 | Description: ${1}\n\ 7 | Origin: ${2:vendor|upstream|other}, ${3:url of the original patch}\n\ 8 | Bug: ${4:url in upstream bugtracker}\n\ 9 | Forwarded: ${5:no|not-needed|url}\n\ 10 | Author: ${6:`g:snips_author`}\n\ 11 | Reviewed-by: ${7:name and email}\n\ 12 | Last-Update: ${8:`strftime(\"%Y-%m-%d\")`}\n\ 13 | Applied-Upstream: ${9:upstream version|url|commit}\n\ 14 | \n\ 15 | "; 16 | exports.scope = "diff"; 17 | 18 | }); (function() { 19 | ace.require(["ace/snippets/diff"], function(m) { 20 | if (typeof module == "object" && typeof exports == "object" && module) { 21 | module.exports = m; 22 | } 23 | }); 24 | })(); 25 | -------------------------------------------------------------------------------- /ace/snippets/dockerfile.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/dockerfile"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/dot.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/dot"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/drools.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/drools",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "\n\ 5 | snippet rule\n\ 6 | rule \"${1?:rule_name}\"\n\ 7 | when\n\ 8 | ${2:// when...} \n\ 9 | then\n\ 10 | ${3:// then...}\n\ 11 | end\n\ 12 | \n\ 13 | snippet query\n\ 14 | query ${1?:query_name}\n\ 15 | ${2:// find} \n\ 16 | end\n\ 17 | \n\ 18 | snippet declare\n\ 19 | declare ${1?:type_name}\n\ 20 | ${2:// attributes} \n\ 21 | end\n\ 22 | \n\ 23 | "; 24 | exports.scope = "drools"; 25 | 26 | }); (function() { 27 | ace.require(["ace/snippets/drools"], function(m) { 28 | if (typeof module == "object" && typeof exports == "object" && module) { 29 | module.exports = m; 30 | } 31 | }); 32 | })(); 33 | -------------------------------------------------------------------------------- /ace/snippets/eiffel.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/eiffel"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/ejs.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/ejs"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/elixir.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/elixir"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/elm.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/elm"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/forth.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/forth"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/fortran.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/fortran"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/fsharp.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/fsharp"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/fsl.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/fsl",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText =undefined; 5 | exports.scope = ""; 6 | 7 | }); (function() { 8 | ace.require(["ace/snippets/fsl"], function(m) { 9 | if (typeof module == "object" && typeof exports == "object" && module) { 10 | module.exports = m; 11 | } 12 | }); 13 | })(); 14 | -------------------------------------------------------------------------------- /ace/snippets/ftl.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/ftl"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/gcode.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/gcode"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/gherkin.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/gherkin"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/gitignore.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/gitignore"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/glsl.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/glsl"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/golang.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/golang"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/graphqlschema.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/graphqlschema",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# Type Snippet\n\ 5 | trigger type\n\ 6 | snippet type\n\ 7 | type ${1:type_name} {\n\ 8 | ${2:type_siblings}\n\ 9 | }\n\ 10 | \n\ 11 | # Input Snippet\n\ 12 | trigger input\n\ 13 | snippet input\n\ 14 | input ${1:input_name} {\n\ 15 | ${2:input_siblings}\n\ 16 | }\n\ 17 | \n\ 18 | # Interface Snippet\n\ 19 | trigger interface\n\ 20 | snippet interface\n\ 21 | interface ${1:interface_name} {\n\ 22 | ${2:interface_siblings}\n\ 23 | }\n\ 24 | \n\ 25 | # Interface Snippet\n\ 26 | trigger union\n\ 27 | snippet union\n\ 28 | union ${1:union_name} = ${2:type} | ${3: type}\n\ 29 | \n\ 30 | # Enum Snippet\n\ 31 | trigger enum\n\ 32 | snippet enum\n\ 33 | enum ${1:enum_name} {\n\ 34 | ${2:enum_siblings}\n\ 35 | }\n\ 36 | "; 37 | exports.scope = "graphqlschema"; 38 | 39 | }); (function() { 40 | ace.require(["ace/snippets/graphqlschema"], function(m) { 41 | if (typeof module == "object" && typeof exports == "object" && module) { 42 | module.exports = m; 43 | } 44 | }); 45 | })(); 46 | -------------------------------------------------------------------------------- /ace/snippets/groovy.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/groovy"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/haml.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/haml",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet t\n\ 5 | %table\n\ 6 | %tr\n\ 7 | %th\n\ 8 | ${1:headers}\n\ 9 | %tr\n\ 10 | %td\n\ 11 | ${2:headers}\n\ 12 | snippet ul\n\ 13 | %ul\n\ 14 | %li\n\ 15 | ${1:item}\n\ 16 | %li\n\ 17 | snippet =rp\n\ 18 | = render :partial => '${1:partial}'\n\ 19 | snippet =rpl\n\ 20 | = render :partial => '${1:partial}', :locals => {}\n\ 21 | snippet =rpc\n\ 22 | = render :partial => '${1:partial}', :collection => @$1\n\ 23 | \n\ 24 | "; 25 | exports.scope = "haml"; 26 | 27 | }); (function() { 28 | ace.require(["ace/snippets/haml"], function(m) { 29 | if (typeof module == "object" && typeof exports == "object" && module) { 30 | module.exports = m; 31 | } 32 | }); 33 | })(); 34 | -------------------------------------------------------------------------------- /ace/snippets/handlebars.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/handlebars"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/haskell_cabal.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/haskell_cabal"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/haxe.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/haxe"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/hjson.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/hjson"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/html_elixir.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/html_elixir"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/html_ruby.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/html_ruby"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/ini.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/ini"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/jack.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/jack"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/jade.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/jade"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/json.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/json"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/json5.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/json5"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/jssm.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/jssm"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/jsx.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/jsx"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/julia.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/julia"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/kotlin.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/kotlin"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/latex.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/latex"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/latte.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/latte"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/less.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/less"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/lisp.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/lisp"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/livescript.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/livescript"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/logiql.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/logiql"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/logtalk.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/logtalk"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/lua.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/lua",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet #!\n\ 5 | #!/usr/bin/env lua\n\ 6 | $1\n\ 7 | snippet local\n\ 8 | local ${1:x} = ${2:1}\n\ 9 | snippet fun\n\ 10 | function ${1:fname}(${2:...})\n\ 11 | ${3:-- body}\n\ 12 | end\n\ 13 | snippet for\n\ 14 | for ${1:i}=${2:1},${3:10} do\n\ 15 | ${4:print(i)}\n\ 16 | end\n\ 17 | snippet forp\n\ 18 | for ${1:i},${2:v} in pairs(${3:table_name}) do\n\ 19 | ${4:-- body}\n\ 20 | end\n\ 21 | snippet fori\n\ 22 | for ${1:i},${2:v} in ipairs(${3:table_name}) do\n\ 23 | ${4:-- body}\n\ 24 | end\n\ 25 | "; 26 | exports.scope = "lua"; 27 | 28 | }); (function() { 29 | ace.require(["ace/snippets/lua"], function(m) { 30 | if (typeof module == "object" && typeof exports == "object" && module) { 31 | module.exports = m; 32 | } 33 | }); 34 | })(); 35 | -------------------------------------------------------------------------------- /ace/snippets/luapage.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/luapage"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/lucene.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/lucene"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/makefile.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/makefile",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet ifeq\n\ 5 | ifeq (${1:cond0},${2:cond1})\n\ 6 | ${3:code}\n\ 7 | endif\n\ 8 | "; 9 | exports.scope = "makefile"; 10 | 11 | }); (function() { 12 | ace.require(["ace/snippets/makefile"], function(m) { 13 | if (typeof module == "object" && typeof exports == "object" && module) { 14 | module.exports = m; 15 | } 16 | }); 17 | })(); 18 | -------------------------------------------------------------------------------- /ace/snippets/mask.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/mask"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/matlab.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/matlab"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/maze.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/maze",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet >\n\ 5 | description assignment\n\ 6 | scope maze\n\ 7 | -> ${1}= ${2}\n\ 8 | \n\ 9 | snippet >\n\ 10 | description if\n\ 11 | scope maze\n\ 12 | -> IF ${2:**} THEN %${3:L} ELSE %${4:R}\n\ 13 | "; 14 | exports.scope = "maze"; 15 | 16 | }); (function() { 17 | ace.require(["ace/snippets/maze"], function(m) { 18 | if (typeof module == "object" && typeof exports == "object" && module) { 19 | module.exports = m; 20 | } 21 | }); 22 | })(); 23 | -------------------------------------------------------------------------------- /ace/snippets/mediawiki.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/mediawiki"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/mel.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/mel"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/mips.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/mips"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/mixal.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/mixal"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/mushcode.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/mushcode"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/mysql.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/mysql"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/nginx.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/nginx"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/nim.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/nim"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/nix.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/nix"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/nsis.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/nsis"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/nunjucks.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/nunjucks"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/objectivec.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/objectivec"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/ocaml.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/ocaml"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/pascal.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/pascal"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/pgsql.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/pgsql"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/php_laravel_blade.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/php_laravel_blade"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/pig.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/pig"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/plain_text.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/plain_text"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/powershell.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/powershell"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/praat.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/praat"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/prisma.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/prisma"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/prolog.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/prolog"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/properties.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/properties"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/protobuf.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/protobuf"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/puppet.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/puppet"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/qml.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/qml"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/raku.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/raku"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/razor.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/razor",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "snippet if\n\ 5 | (${1} == ${2}) {\n\ 6 | ${3}\n\ 7 | }"; 8 | exports.scope = "razor"; 9 | 10 | }); (function() { 11 | ace.require(["ace/snippets/razor"], function(m) { 12 | if (typeof module == "object" && typeof exports == "object" && module) { 13 | module.exports = m; 14 | } 15 | }); 16 | })(); 17 | -------------------------------------------------------------------------------- /ace/snippets/rdoc.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/rdoc"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/red.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/red"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/redshift.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/redshift"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/rhtml.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/rhtml"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/rst.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/rst",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# rst\n\ 5 | \n\ 6 | snippet :\n\ 7 | :${1:field name}: ${2:field body}\n\ 8 | snippet *\n\ 9 | *${1:Emphasis}*\n\ 10 | snippet **\n\ 11 | **${1:Strong emphasis}**\n\ 12 | snippet _\n\ 13 | \\`${1:hyperlink-name}\\`_\n\ 14 | .. _\\`$1\\`: ${2:link-block}\n\ 15 | snippet =\n\ 16 | ${1:Title}\n\ 17 | =====${2:=}\n\ 18 | ${3}\n\ 19 | snippet -\n\ 20 | ${1:Title}\n\ 21 | -----${2:-}\n\ 22 | ${3}\n\ 23 | snippet cont:\n\ 24 | .. contents::\n\ 25 | \n\ 26 | "; 27 | exports.scope = "rst"; 28 | 29 | }); (function() { 30 | ace.require(["ace/snippets/rst"], function(m) { 31 | if (typeof module == "object" && typeof exports == "object" && module) { 32 | module.exports = m; 33 | } 34 | }); 35 | })(); 36 | -------------------------------------------------------------------------------- /ace/snippets/rust.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/rust"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/sass.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/sass"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/scad.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/scad"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/scala.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/scala"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/scheme.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/scheme"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/scrypt.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/scrypt"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/scss.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/scss"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/sjs.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/sjs"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/slim.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/slim"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/smarty.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/smarty"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/smithy.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/smithy"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/snippets.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/snippets",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# snippets for making snippets :)\n\ 5 | snippet snip\n\ 6 | snippet ${1:trigger}\n\ 7 | ${2}\n\ 8 | snippet msnip\n\ 9 | snippet ${1:trigger} ${2:description}\n\ 10 | ${3}\n\ 11 | snippet v\n\ 12 | {VISUAL}\n\ 13 | "; 14 | exports.scope = "snippets"; 15 | 16 | }); (function() { 17 | ace.require(["ace/snippets/snippets"], function(m) { 18 | if (typeof module == "object" && typeof exports == "object" && module) { 19 | module.exports = m; 20 | } 21 | }); 22 | })(); 23 | -------------------------------------------------------------------------------- /ace/snippets/soy_template.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/soy_template"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/space.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/space"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/sparql.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/sparql"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/stylus.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/stylus"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/svg.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/svg"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/swift.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/swift"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/terraform.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/terraform"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/text.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/text"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/textile.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/textile",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# Jekyll post header\n\ 5 | snippet header\n\ 6 | ---\n\ 7 | title: ${1:title}\n\ 8 | layout: post\n\ 9 | date: ${2:date} ${3:hour:minute:second} -05:00\n\ 10 | ---\n\ 11 | \n\ 12 | # Image\n\ 13 | snippet img\n\ 14 | !${1:url}(${2:title}):${3:link}!\n\ 15 | \n\ 16 | # Table\n\ 17 | snippet |\n\ 18 | |${1}|${2}\n\ 19 | \n\ 20 | # Link\n\ 21 | snippet link\n\ 22 | \"${1:link text}\":${2:url}\n\ 23 | \n\ 24 | # Acronym\n\ 25 | snippet (\n\ 26 | (${1:Expand acronym})${2}\n\ 27 | \n\ 28 | # Footnote\n\ 29 | snippet fn\n\ 30 | [${1:ref number}] ${3}\n\ 31 | \n\ 32 | fn$1. ${2:footnote}\n\ 33 | \n\ 34 | "; 35 | exports.scope = "textile"; 36 | 37 | }); (function() { 38 | ace.require(["ace/snippets/textile"], function(m) { 39 | if (typeof module == "object" && typeof exports == "object" && module) { 40 | module.exports = m; 41 | } 42 | }); 43 | })(); 44 | -------------------------------------------------------------------------------- /ace/snippets/toml.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/toml"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/tsx.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/tsx"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/turtle.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/turtle"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/twig.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/twig"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/typescript.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/typescript"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/vbscript.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/vbscript"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/velocity.js: -------------------------------------------------------------------------------- 1 | ace.define("ace/snippets/velocity",["require","exports","module"], function(require, exports, module) { 2 | "use strict"; 3 | 4 | exports.snippetText = "# macro\n\ 5 | snippet #macro\n\ 6 | #macro ( ${1:macroName} ${2:\\$var1, [\\$var2, ...]} )\n\ 7 | ${3:## macro code}\n\ 8 | #end\n\ 9 | # foreach\n\ 10 | snippet #foreach\n\ 11 | #foreach ( ${1:\\$item} in ${2:\\$collection} )\n\ 12 | ${3:## foreach code}\n\ 13 | #end\n\ 14 | # if\n\ 15 | snippet #if\n\ 16 | #if ( ${1:true} )\n\ 17 | ${0}\n\ 18 | #end\n\ 19 | # if ... else\n\ 20 | snippet #ife\n\ 21 | #if ( ${1:true} )\n\ 22 | ${2}\n\ 23 | #else\n\ 24 | ${0}\n\ 25 | #end\n\ 26 | #import\n\ 27 | snippet #import\n\ 28 | #import ( \"${1:path/to/velocity/format}\" )\n\ 29 | # set\n\ 30 | snippet #set\n\ 31 | #set ( $${1:var} = ${0} )\n\ 32 | "; 33 | exports.scope = "velocity"; 34 | exports.includeScopes = ["html", "javascript", "css"]; 35 | 36 | }); (function() { 37 | ace.require(["ace/snippets/velocity"], function(m) { 38 | if (typeof module == "object" && typeof exports == "object" && module) { 39 | module.exports = m; 40 | } 41 | }); 42 | })(); 43 | -------------------------------------------------------------------------------- /ace/snippets/verilog.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/verilog"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/vhdl.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/vhdl"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/visualforce.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/visualforce"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/xml.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/xml"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/yaml.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/yaml"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /ace/snippets/zeek.js: -------------------------------------------------------------------------------- 1 | 2 | ; (function() { 3 | ace.require(["ace/snippets/zeek"], function(m) { 4 | if (typeof module == "object" && typeof exports == "object" && module) { 5 | module.exports = m; 6 | } 7 | }); 8 | })(); 9 | -------------------------------------------------------------------------------- /amd/build/resetbutton.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This AMD module provides the functionality for the "Reset" 3 | * button that is shown just below the student answer field if the question is 4 | * defined to have preloaded text. 5 | * If clicked, the button reloads the student answer field with the original 6 | * preloaded text (after a Confirm dialogue, of course). 7 | * 8 | * @module qtype_coderunner/resetbutton 9 | * @copyright Richard Lobb, 2016, The University of Canterbury 10 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 11 | */ 12 | define("qtype_coderunner/resetbutton",["jquery"],(function($){return{initResetButton:function(buttonId,answerId,confirmText){var uiWrapper,resetButton=$('[id="'+buttonId+'"]'),studentAnswer=$('[id="'+answerId+'"]');resetButton.on("click",(function(){if(window.behattesting||window.confirm(confirmText)){var reloadText=resetButton.attr("data-reload-text");(uiWrapper=studentAnswer.get(0).current_ui_wrapper)&&uiWrapper.uiInstance?(uiWrapper.stop(),studentAnswer.val(reloadText),uiWrapper.restart()):studentAnswer.val(reloadText)}}))}}})); 13 | 14 | //# sourceMappingURL=resetbutton.min.js.map -------------------------------------------------------------------------------- /amd/src/ui_ace.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ui_ace", 3 | "parameters": { 4 | "auto_switch_light_dark": { 5 | "type": "boolean", 6 | "default": false 7 | }, 8 | "font_size": { 9 | "type": "string", 10 | "default": "14px" 11 | }, 12 | "import_from_scratchpad": { 13 | "type": "boolean", 14 | "default": true 15 | }, 16 | "live_autocompletion": { 17 | "type": "boolean", 18 | "default": false 19 | }, 20 | "theme": { 21 | "type": "string", 22 | "default": "textmate" 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /amd/src/ui_ace_gapfiller.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ui_ace_gapfiller", 3 | "parameters": { 4 | "ui_source": { 5 | "type": "string", 6 | "default": "globalextra" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /amd/src/ui_gapfiller.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ui_gapfiller", 3 | "parameters": { 4 | "ui_source": { 5 | "type": "string", 6 | "default": "globalextra" 7 | }, 8 | "delimiters": { 9 | "type": "string[]", 10 | "default": ["{[", "]}"] 11 | }, 12 | "sync_interval_secs": { 13 | "type": "int", 14 | "default": 3 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /amd/src/ui_html.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ui_html", 3 | "parameters": { 4 | "sync_interval_secs": { 5 | "type": "int", 6 | "default": 5 7 | }, 8 | "html_src": { 9 | "type": "string", 10 | "default": "globalextra" 11 | }, 12 | "enable_in_editor": { 13 | "type": "boolean", 14 | "default": true 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /amd/src/ui_table.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ui_table", 3 | "parameters": { 4 | "num_rows": { 5 | "type": "int", 6 | "default": null, 7 | "required": true 8 | }, 9 | "num_columns": { 10 | "type": "int", 11 | "default": null, 12 | "required": true 13 | }, 14 | "column_headers": { 15 | "type": "string[]", 16 | "default": [] 17 | }, 18 | "row_labels": { 19 | "type": "string[]", 20 | "default": [] 21 | }, 22 | "dynamic_rows": { 23 | "type": "boolean", 24 | "default": false 25 | }, 26 | "locked_cells": { 27 | "type": "int[][]", 28 | "default": [] 29 | }, 30 | "column_width_percents": { 31 | "type": "float[]", 32 | "default": [] 33 | }, 34 | "sync_interval_secs": { 35 | "type": "int", 36 | "default": 5 37 | }, 38 | "lines_per_cell": { 39 | "type": "int", 40 | "default": 2 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /classes/bad_json_exception.php: -------------------------------------------------------------------------------- 1 | . 16 | 17 | /** 18 | * Library routines for qtype_coderunner 19 | */ 20 | 21 | /* The class for an exception when bad json passed to util::template_params */ 22 | class qtype_coderunner_bad_json_exception extends Exception { 23 | } 24 | -------------------------------------------------------------------------------- /classes/display_options.php: -------------------------------------------------------------------------------- 1 | . 16 | 17 | namespace qtype_coderunner; 18 | 19 | defined('MOODLE_INTERNAL') || die(); 20 | require_once($CFG->dirroot . '/question/engine/lib.php'); 21 | 22 | /** 23 | * An extension of question_display_options that includes the extra options used by the coderunner. 24 | * 25 | * @package qtype_coderunner 26 | * @copyright 2024 The Open University 27 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 28 | */ 29 | class display_options extends \question_display_options { 30 | 31 | /** 32 | * @var bool 33 | */ 34 | public $suppressruntestslink = false; 35 | } 36 | -------------------------------------------------------------------------------- /classes/exception.php: -------------------------------------------------------------------------------- 1 | . 16 | 17 | /** 18 | * Library routines for qtype_coderunner 19 | */ 20 | 21 | /* The class for exceptions thrown in the coderunner plugin */ 22 | class qtype_coderunner_exception extends moodle_exception { 23 | /** 24 | * @param string $errorcode exception description identifier 25 | * @param mixed $debuginfo debugging data to display 26 | */ 27 | public function __construct($errorcode, $a = null, $debuginfo = null) { 28 | parent::__construct($errorcode, 'qtype_coderunner', '', $a, $debuginfo); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /db/install.php: -------------------------------------------------------------------------------- 1 | . 16 | 17 | /** 18 | * Extra install code for the CodeRunner question type. 19 | */ 20 | 21 | function xmldb_qtype_coderunner_install() { 22 | require_once(__DIR__ . '/upgradelib.php'); 23 | update_question_types(); 24 | } 25 | -------------------------------------------------------------------------------- /downloadquizattemptsanon.php: -------------------------------------------------------------------------------- 1 | . 16 | 17 | /** 18 | * This admin script is a variant of downloadquizattempts.php (q.v.) that 19 | * differs only in that the user name and email are replaced by a single 20 | * hashed_email field. 21 | * 22 | * @package qtype_coderunner 23 | * @copyright 2017 Richard Lobb, The University of Canterbury 24 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 25 | */ 26 | define('ANONYMISE', 1); 27 | include(__DIR__ . '/downloadquizattempts.php'); 28 | -------------------------------------------------------------------------------- /loadtesterrors.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/e415e499e4cdd53f74e42739c32ba665258f5b4e/loadtesterrors.txt -------------------------------------------------------------------------------- /loadtestingresults2.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/e415e499e4cdd53f74e42739c32ba665258f5b4e/loadtestingresults2.ods -------------------------------------------------------------------------------- /logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/e415e499e4cdd53f74e42739c32ba665258f5b4e/logo.jpg -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: CodeRunner Documentation 2 | theme: 3 | name: material 4 | features: 5 | - navigation.indexes 6 | - navigation.sections 7 | - navigation.expand 8 | - toc.follow 9 | 10 | plugins: 11 | - search 12 | - awesome-pages 13 | 14 | markdown_extensions: 15 | - toc: 16 | permalink: true 17 | toc_depth: 3 18 | -------------------------------------------------------------------------------- /pix/fullscreen.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /pix/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 16 | 21 | Cr 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /pix/windowed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /templates/answer_textarea.mustache: -------------------------------------------------------------------------------- 1 | {{! 2 | This file is part of Moodle - https://moodle.org/ 3 | 4 | Moodle is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Moodle is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Moodle. If not, see . 16 | }} 17 | {{! 18 | @template qtype_coderunner/answer_textarea 19 | 20 | 21 | 22 | Example context (json): 23 | { 24 | "id": "question:12", 25 | "text": "print('hello world!')", 26 | "rows": 16, 27 | "name": "answer_code", 28 | "lang": "C" 29 | } 30 | }} 31 | 37 | -------------------------------------------------------------------------------- /templates/output_displayarea.mustache: -------------------------------------------------------------------------------- 1 | {{! 2 | This file is part of Moodle - https://moodle.org/ 3 | 4 | Moodle is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Moodle is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Moodle. If not, see . 16 | }} 17 | {{! 18 | @template qtype_coderunner/output_displayarea 19 | 20 | 21 | 22 | Example context (json): 23 | { 24 | "id": "question:12_run-output", 25 | "text": "hello world" 26 | } 27 | }} 28 | 29 |
30 |
{{ text }}
33 |
36 |
37 | -------------------------------------------------------------------------------- /tests/fixtures/loadtesting_pseudocourse_backup_V3.1.2.mbz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/e415e499e4cdd53f74e42739c32ba665258f5b4e/tests/fixtures/loadtesting_pseudocourse_backup_V3.1.2.mbz -------------------------------------------------------------------------------- /tests/fixtures/loadtesting_pseudocourse_backup_V4.5.3.mbz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trampgeek/moodle-qtype_coderunner/e415e499e4cdd53f74e42739c32ba665258f5b4e/tests/fixtures/loadtesting_pseudocourse_backup_V4.5.3.mbz -------------------------------------------------------------------------------- /tests/fixtures/sqrmodule.py: -------------------------------------------------------------------------------- 1 | """An implementation of the sqr function in a file to be attached and imported""" 2 | def sqr(n): 3 | return n * n 4 | -------------------------------------------------------------------------------- /thirdpartylibs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | vendor/twig 5 | Twig 6 | 1.28.2 7 | BSD 3-Clause 8 | 9 | 10 | ace 11 | Ace 12 | 1.2.5 13 | BSD 3-Clause 14 | 15 | 16 | -------------------------------------------------------------------------------- /ucprivate/findquiztagsforquestionattempt.sql: -------------------------------------------------------------------------------- 1 | SELECT DISTINCT t.id, t.name, t.rawname 2 | FROM mdl_question_attempt_steps qas 3 | JOIN mdl_question_attempts qa ON qa.id = qas.questionattemptid 4 | JOIN mdl_quiz_attempts quiza ON quiza.uniqueid = qa.questionusageid 5 | JOIN mdl_quiz quiz ON quiz.id = quiza.quiz 6 | join mdl_course_modules cm on `instance` = quiz.id 7 | JOIN mdl_tag_instance ti ON ti.itemid = cm.id 8 | JOIN mdl_tag t ON t.id = ti.tagid 9 | WHERE ti.itemtype='course_modules' 10 | AND qas.id = 17354; 11 | -------------------------------------------------------------------------------- /vendor/autoload.php: -------------------------------------------------------------------------------- 1 | $vendorDir . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', 10 | 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 11 | 'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', 12 | ); 13 | -------------------------------------------------------------------------------- /vendor/composer/autoload_files.php: -------------------------------------------------------------------------------- 1 | $vendorDir . '/symfony/deprecation-contracts/function.php', 10 | '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', 11 | '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', 12 | '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php', 13 | '89efb1254ef2d1c5d80096acd12c4098' => $vendorDir . '/twig/twig/src/Resources/core.php', 14 | 'ffecb95d45175fd40f75be8a23b34f90' => $vendorDir . '/twig/twig/src/Resources/debug.php', 15 | 'c7baa00073ee9c61edf148c51917cfb4' => $vendorDir . '/twig/twig/src/Resources/escaper.php', 16 | 'f844ccf1d25df8663951193c3fc307c8' => $vendorDir . '/twig/twig/src/Resources/string_loader.php', 17 | ); 18 | -------------------------------------------------------------------------------- /vendor/composer/autoload_namespaces.php: -------------------------------------------------------------------------------- 1 | array($vendorDir . '/twig/twig/src'), 10 | 'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'), 11 | 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), 12 | 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), 13 | ); 14 | -------------------------------------------------------------------------------- /vendor/composer/platform_check.php: -------------------------------------------------------------------------------- 1 | = 80100)) { 8 | $issues[] = 'Your Composer dependencies require a PHP version ">= 8.1.0". You are running ' . PHP_VERSION . '.'; 9 | } 10 | 11 | if ($issues) { 12 | if (!headers_sent()) { 13 | header('HTTP/1.1 500 Internal Server Error'); 14 | } 15 | if (!ini_get('display_errors')) { 16 | if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { 17 | fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); 18 | } elseif (!headers_sent()) { 19 | echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; 20 | } 21 | } 22 | trigger_error( 23 | 'Composer detected issues in your platform: ' . implode(' ', $issues), 24 | E_USER_ERROR 25 | ); 26 | } 27 | -------------------------------------------------------------------------------- /vendor/symfony/deprecation-contracts/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | CHANGELOG 2 | ========= 3 | 4 | The changelog is maintained for all Symfony contracts at the following URL: 5 | https://github.com/symfony/contracts/blob/main/CHANGELOG.md 6 | -------------------------------------------------------------------------------- /vendor/symfony/deprecation-contracts/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020-present Fabien Potencier 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /vendor/symfony/deprecation-contracts/README.md: -------------------------------------------------------------------------------- 1 | Symfony Deprecation Contracts 2 | ============================= 3 | 4 | A generic function and convention to trigger deprecation notices. 5 | 6 | This package provides a single global function named `trigger_deprecation()` that triggers silenced deprecation notices. 7 | 8 | By using a custom PHP error handler such as the one provided by the Symfony ErrorHandler component, 9 | the triggered deprecations can be caught and logged for later discovery, both on dev and prod environments. 10 | 11 | The function requires at least 3 arguments: 12 | - the name of the Composer package that is triggering the deprecation 13 | - the version of the package that introduced the deprecation 14 | - the message of the deprecation 15 | - more arguments can be provided: they will be inserted in the message using `printf()` formatting 16 | 17 | Example: 18 | ```php 19 | trigger_deprecation('symfony/blockchain', '8.9', 'Using "%s" is deprecated, use "%s" instead.', 'bitcoin', 'fabcoin'); 20 | ``` 21 | 22 | This will generate the following message: 23 | `Since symfony/blockchain 8.9: Using "bitcoin" is deprecated, use "fabcoin" instead.` 24 | 25 | While not recommended, the deprecation notices can be completely ignored by declaring an empty 26 | `function trigger_deprecation() {}` in your application. 27 | -------------------------------------------------------------------------------- /vendor/symfony/deprecation-contracts/function.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | if (!function_exists('trigger_deprecation')) { 13 | /** 14 | * Triggers a silenced deprecation notice. 15 | * 16 | * @param string $package The name of the Composer package that is triggering the deprecation 17 | * @param string $version The version of the package that introduced the deprecation 18 | * @param string $message The message of the deprecation 19 | * @param mixed ...$args Values to insert in the message using printf() formatting 20 | * 21 | * @author Nicolas Grekas 22 | */ 23 | function trigger_deprecation(string $package, string $version, string $message, mixed ...$args): void 24 | { 25 | @trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), \E_USER_DEPRECATED); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-ctype/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018-present Fabien Potencier 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-ctype/README.md: -------------------------------------------------------------------------------- 1 | Symfony Polyfill / Ctype 2 | ======================== 3 | 4 | This component provides `ctype_*` functions to users who run php versions without the ctype extension. 5 | 6 | More information can be found in the 7 | [main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). 8 | 9 | License 10 | ======= 11 | 12 | This library is released under the [MIT license](LICENSE). 13 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-mbstring/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015-present Fabien Potencier 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-mbstring/README.md: -------------------------------------------------------------------------------- 1 | Symfony Polyfill / Mbstring 2 | =========================== 3 | 4 | This component provides a partial, native PHP implementation for the 5 | [Mbstring](https://php.net/mbstring) extension. 6 | 7 | More information can be found in the 8 | [main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). 9 | 10 | License 11 | ======= 12 | 13 | This library is released under the [MIT license](LICENSE). 14 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php81/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021-present Fabien Potencier 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is furnished 8 | to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php81/Php81.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | namespace Symfony\Polyfill\Php81; 13 | 14 | /** 15 | * @author Nicolas Grekas 16 | * 17 | * @internal 18 | */ 19 | final class Php81 20 | { 21 | public static function array_is_list(array $array): bool 22 | { 23 | if ([] === $array || $array === array_values($array)) { 24 | return true; 25 | } 26 | 27 | $nextKey = -1; 28 | 29 | foreach ($array as $k => $v) { 30 | if ($k !== ++$nextKey) { 31 | return false; 32 | } 33 | } 34 | 35 | return true; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php81/README.md: -------------------------------------------------------------------------------- 1 | Symfony Polyfill / Php81 2 | ======================== 3 | 4 | This component provides features added to PHP 8.1 core: 5 | 6 | - [`array_is_list`](https://php.net/array_is_list) 7 | - [`enum_exists`](https://php.net/enum-exists) 8 | - [`MYSQLI_REFRESH_REPLICA`](https://php.net/mysqli.constants#constantmysqli-refresh-replica) constant 9 | - [`ReturnTypeWillChange`](https://wiki.php.net/rfc/internal_method_return_types) 10 | - [`CURLStringFile`](https://php.net/CURLStringFile) (but only if PHP >= 7.4 is used) 11 | 12 | More information can be found in the 13 | [main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). 14 | 15 | License 16 | ======= 17 | 18 | This library is released under the [MIT license](LICENSE). 19 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | if (\PHP_VERSION_ID < 80100) { 13 | #[Attribute(Attribute::TARGET_METHOD)] 14 | final class ReturnTypeWillChange 15 | { 16 | public function __construct() 17 | { 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /vendor/symfony/polyfill-php81/bootstrap.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | use Symfony\Polyfill\Php81 as p; 13 | 14 | if (\PHP_VERSION_ID >= 80100) { 15 | return; 16 | } 17 | 18 | if (defined('MYSQLI_REFRESH_SLAVE') && !defined('MYSQLI_REFRESH_REPLICA')) { 19 | define('MYSQLI_REFRESH_REPLICA', 64); 20 | } 21 | 22 | if (!function_exists('array_is_list')) { 23 | function array_is_list(array $array): bool { return p\Php81::array_is_list($array); } 24 | } 25 | 26 | if (!function_exists('enum_exists')) { 27 | function enum_exists(string $enum, bool $autoload = true): bool { return $autoload && class_exists($enum) && false; } 28 | } 29 | -------------------------------------------------------------------------------- /vendor/twig/twig/README.rst: -------------------------------------------------------------------------------- 1 | Twig, the flexible, fast, and secure template language for PHP 2 | ============================================================== 3 | 4 | Twig is a template language for PHP. 5 | 6 | Twig uses a syntax similar to the Django and Jinja template languages which 7 | inspired the Twig runtime environment. 8 | 9 | Sponsors 10 | -------- 11 | 12 | .. raw:: html 13 | 14 | 15 | Blackfire.io 16 | 17 | 18 | More Information 19 | ---------------- 20 | 21 | Read the `documentation`_ for more information. 22 | 23 | .. _documentation: https://twig.symfony.com/documentation 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/phpstan-baseline.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | ignoreErrors: 3 | - # The method is dynamically generated by the CheckSecurityNode 4 | message: '#^Call to an undefined method Twig\\Template\:\:checkSecurity\(\)\.$#' 5 | identifier: method.notFound 6 | count: 1 7 | path: src/Extension/CoreExtension.php 8 | 9 | - # Avoid BC-break 10 | message: '#^Constructor of class Twig\\Node\\ForNode has an unused parameter \$ifexpr\.$#' 11 | identifier: constructor.unusedParameter 12 | count: 1 13 | path: src/Node/ForNode.php 14 | 15 | - # 2 parameters will be required 16 | message: '#^Method Twig\\Node\\IncludeNode\:\:addGetTemplate\(\) invoked with 2 parameters, 1 required\.$#' 17 | identifier: arguments.count 18 | count: 1 19 | path: src/Node/IncludeNode.php 20 | 21 | - # int|string will be supported in 4.x 22 | message: '#^PHPDoc tag @param for parameter $name with type int|string is not subtype of native type string\.$#' 23 | identifier: parameter.phpDocType 24 | count: 5 25 | path: src/Node/Node.php 26 | 27 | - # Adding 0 to the string representation of a number is valid and what we want here 28 | message: '#^Binary operation "\+" between 0 and string results in an error\.$#' 29 | identifier: binaryOp.invalid 30 | count: 1 31 | path: src/Lexer.php 32 | -------------------------------------------------------------------------------- /vendor/twig/twig/phpstan.neon.dist: -------------------------------------------------------------------------------- 1 | includes: 2 | - phpstan-baseline.neon 3 | 4 | parameters: 5 | level: 3 6 | paths: 7 | - src 8 | excludePaths: 9 | - src/Test 10 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Attribute/FirstClassTwigCallableReady.php: -------------------------------------------------------------------------------- 1 | 22 | */ 23 | interface CacheInterface 24 | { 25 | /** 26 | * Generates a cache key for the given template class name. 27 | */ 28 | public function generateKey(string $name, string $className): string; 29 | 30 | /** 31 | * Writes the compiled template to cache. 32 | * 33 | * @param string $content The template representation as a PHP class 34 | */ 35 | public function write(string $key, string $content): void; 36 | 37 | /** 38 | * Loads a template from the cache. 39 | */ 40 | public function load(string $key): void; 41 | 42 | /** 43 | * Returns the modification timestamp of a key. 44 | */ 45 | public function getTimestamp(string $key): int; 46 | } 47 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Cache/NullCache.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class NullCache implements CacheInterface, RemovableCacheInterface 20 | { 21 | public function generateKey(string $name, string $className): string 22 | { 23 | return ''; 24 | } 25 | 26 | public function write(string $key, string $content): void 27 | { 28 | } 29 | 30 | public function load(string $key): void 31 | { 32 | } 33 | 34 | public function getTimestamp(string $key): int 35 | { 36 | return 0; 37 | } 38 | 39 | public function remove(string $name, string $cls): void 40 | { 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Cache/ReadOnlyFilesystemCache.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class ReadOnlyFilesystemCache extends FilesystemCache 20 | { 21 | public function write(string $key, string $content): void 22 | { 23 | // Do nothing with the content, it's a read-only filesystem. 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Cache/RemovableCacheInterface.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | interface RemovableCacheInterface 18 | { 19 | public function remove(string $name, string $cls): void; 20 | } 21 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Error/LoaderError.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class LoaderError extends Error 20 | { 21 | } 22 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Error/RuntimeError.php: -------------------------------------------------------------------------------- 1 | 19 | */ 20 | class RuntimeError extends Error 21 | { 22 | } 23 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Extension/AbstractExtension.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | interface GlobalsInterface 20 | { 21 | /** 22 | * @return array 23 | */ 24 | public function getGlobals(): array; 25 | } 26 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Extension/OptimizerExtension.php: -------------------------------------------------------------------------------- 1 | optimizers)]; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Extension/ProfilerExtension.php: -------------------------------------------------------------------------------- 1 | actives[] = $profile; 24 | } 25 | 26 | /** 27 | * @return void 28 | */ 29 | public function enter(Profile $profile) 30 | { 31 | $this->actives[0]->addProfile($profile); 32 | array_unshift($this->actives, $profile); 33 | } 34 | 35 | /** 36 | * @return void 37 | */ 38 | public function leave(Profile $profile) 39 | { 40 | $profile->leave(); 41 | array_shift($this->actives); 42 | 43 | if (1 === \count($this->actives)) { 44 | $this->actives[0]->leave(); 45 | } 46 | } 47 | 48 | public function getNodeVisitors(): array 49 | { 50 | return [new ProfilerNodeVisitor(static::class)]; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Extension/RuntimeExtensionInterface.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | interface RuntimeExtensionInterface 18 | { 19 | } 20 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Extension/StringLoaderExtension.php: -------------------------------------------------------------------------------- 1 | true]), 24 | ]; 25 | } 26 | 27 | /** 28 | * Loads a template from a string. 29 | * 30 | * {{ include(template_from_string("Hello {{ name }}")) }} 31 | * 32 | * @param string|null $name An optional name of the template to be used in error messages 33 | * 34 | * @internal 35 | */ 36 | public static function templateFromString(Environment $env, string|\Stringable $template, ?string $name = null): TemplateWrapper 37 | { 38 | return $env->createTemplate((string) $template, $name); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Extension/YieldNotReadyExtension.php: -------------------------------------------------------------------------------- 1 | useYield)]; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Loader/LoaderInterface.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | interface LoaderInterface 23 | { 24 | /** 25 | * Returns the source context for a given template logical name. 26 | * 27 | * @throws LoaderError When $name is not found 28 | */ 29 | public function getSourceContext(string $name): Source; 30 | 31 | /** 32 | * Gets the cache key to use for the cache for a given template name. 33 | * 34 | * @throws LoaderError When $name is not found 35 | */ 36 | public function getCacheKey(string $name): string; 37 | 38 | /** 39 | * @param int $time Timestamp of the last modification time of the cached template 40 | * 41 | * @throws LoaderError When $name is not found 42 | */ 43 | public function isFresh(string $name, int $time): bool; 44 | 45 | /** 46 | * @return bool 47 | */ 48 | public function exists(string $name); 49 | } 50 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Markup.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class Markup implements \Countable, \JsonSerializable, \Stringable 20 | { 21 | private $content; 22 | private ?string $charset; 23 | 24 | public function __construct($content, $charset) 25 | { 26 | $this->content = (string) $content; 27 | $this->charset = $charset; 28 | } 29 | 30 | public function __toString() 31 | { 32 | return $this->content; 33 | } 34 | 35 | public function getCharset(): string 36 | { 37 | return $this->charset; 38 | } 39 | 40 | /** 41 | * @return int 42 | */ 43 | #[\ReturnTypeWillChange] 44 | public function count() 45 | { 46 | return mb_strlen($this->content, $this->charset); 47 | } 48 | 49 | /** 50 | * @return mixed 51 | */ 52 | #[\ReturnTypeWillChange] 53 | public function jsonSerialize() 54 | { 55 | return $this->content; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/AutoEscapeNode.php: -------------------------------------------------------------------------------- 1 | 27 | */ 28 | #[YieldReady] 29 | class AutoEscapeNode extends Node 30 | { 31 | public function __construct($value, Node $body, int $lineno) 32 | { 33 | parent::__construct(['body' => $body], ['value' => $value], $lineno); 34 | } 35 | 36 | public function compile(Compiler $compiler): void 37 | { 38 | $compiler->subcompile($this->getNode('body')); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/BlockReferenceNode.php: -------------------------------------------------------------------------------- 1 | 22 | */ 23 | #[YieldReady] 24 | class BlockReferenceNode extends Node implements NodeOutputInterface 25 | { 26 | public function __construct(string $name, int $lineno) 27 | { 28 | parent::__construct([], ['name' => $name], $lineno); 29 | } 30 | 31 | public function compile(Compiler $compiler): void 32 | { 33 | $compiler 34 | ->addDebugInfo($this) 35 | ->write(\sprintf("yield from \$this->unwrap()->yieldBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name'))) 36 | ; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/BodyNode.php: -------------------------------------------------------------------------------- 1 | 20 | */ 21 | #[YieldReady] 22 | class BodyNode extends Node 23 | { 24 | } 25 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/CheckSecurityCallNode.php: -------------------------------------------------------------------------------- 1 | 19 | */ 20 | #[YieldReady] 21 | class CheckSecurityCallNode extends Node 22 | { 23 | public function compile(Compiler $compiler) 24 | { 25 | $compiler 26 | ->write("\$this->sandbox = \$this->extensions[SandboxExtension::class];\n") 27 | ->write("\$this->checkSecurity();\n") 28 | ; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/DoNode.php: -------------------------------------------------------------------------------- 1 | 22 | */ 23 | #[YieldReady] 24 | class DoNode extends Node 25 | { 26 | public function __construct(AbstractExpression $expr, int $lineno) 27 | { 28 | parent::__construct(['expr' => $expr], [], $lineno); 29 | } 30 | 31 | public function compile(Compiler $compiler): void 32 | { 33 | $compiler 34 | ->addDebugInfo($this) 35 | ->write('') 36 | ->subcompile($this->getNode('expr')) 37 | ->raw(";\n") 38 | ; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/EmptyNode.php: -------------------------------------------------------------------------------- 1 | 20 | */ 21 | #[YieldReady] 22 | final class EmptyNode extends Node 23 | { 24 | public function __construct(int $lineno = 0) 25 | { 26 | parent::__construct([], [], $lineno); 27 | } 28 | 29 | public function setNode(string $name, Node $node): void 30 | { 31 | throw new \LogicException('EmptyNode cannot have children.'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/AbstractExpression.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | abstract class AbstractExpression extends Node 23 | { 24 | public function isGenerator(): bool 25 | { 26 | return $this->hasAttribute('is_generator') && $this->getAttribute('is_generator'); 27 | } 28 | 29 | /** 30 | * @return static 31 | */ 32 | public function setExplicitParentheses(): self 33 | { 34 | $this->setAttribute('with_parentheses', true); 35 | 36 | return $this; 37 | } 38 | 39 | public function hasExplicitParentheses(): bool 40 | { 41 | return $this->hasAttribute('with_parentheses') && $this->getAttribute('with_parentheses'); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/AddBinary.php: -------------------------------------------------------------------------------- 1 | raw('+'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/AndBinary.php: -------------------------------------------------------------------------------- 1 | raw('&&'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/BitwiseAndBinary.php: -------------------------------------------------------------------------------- 1 | raw('&'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/BitwiseOrBinary.php: -------------------------------------------------------------------------------- 1 | raw('|'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/BitwiseXorBinary.php: -------------------------------------------------------------------------------- 1 | raw('^'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/ConcatBinary.php: -------------------------------------------------------------------------------- 1 | raw('.'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/DivBinary.php: -------------------------------------------------------------------------------- 1 | raw('/'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/EndsWithBinary.php: -------------------------------------------------------------------------------- 1 | getVarName(); 21 | $right = $compiler->getVarName(); 22 | $compiler 23 | ->raw(\sprintf('(is_string($%s = ', $left)) 24 | ->subcompile($this->getNode('left')) 25 | ->raw(\sprintf(') && is_string($%s = ', $right)) 26 | ->subcompile($this->getNode('right')) 27 | ->raw(\sprintf(') && str_ends_with($%1$s, $%2$s))', $left, $right)) 28 | ; 29 | } 30 | 31 | public function operator(Compiler $compiler): Compiler 32 | { 33 | return $compiler->raw(''); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/EqualBinary.php: -------------------------------------------------------------------------------- 1 | = 80000) { 21 | parent::compile($compiler); 22 | 23 | return; 24 | } 25 | 26 | $compiler 27 | ->raw('(0 === CoreExtension::compare(') 28 | ->subcompile($this->getNode('left')) 29 | ->raw(', ') 30 | ->subcompile($this->getNode('right')) 31 | ->raw('))') 32 | ; 33 | } 34 | 35 | public function operator(Compiler $compiler): Compiler 36 | { 37 | return $compiler->raw('=='); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/FloorDivBinary.php: -------------------------------------------------------------------------------- 1 | raw('(int) floor('); 21 | parent::compile($compiler); 22 | $compiler->raw(')'); 23 | } 24 | 25 | public function operator(Compiler $compiler): Compiler 26 | { 27 | return $compiler->raw('/'); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/GreaterBinary.php: -------------------------------------------------------------------------------- 1 | = 80000) { 21 | parent::compile($compiler); 22 | 23 | return; 24 | } 25 | 26 | $compiler 27 | ->raw('(1 === CoreExtension::compare(') 28 | ->subcompile($this->getNode('left')) 29 | ->raw(', ') 30 | ->subcompile($this->getNode('right')) 31 | ->raw('))') 32 | ; 33 | } 34 | 35 | public function operator(Compiler $compiler): Compiler 36 | { 37 | return $compiler->raw('>'); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/GreaterEqualBinary.php: -------------------------------------------------------------------------------- 1 | = 80000) { 21 | parent::compile($compiler); 22 | 23 | return; 24 | } 25 | 26 | $compiler 27 | ->raw('(0 <= CoreExtension::compare(') 28 | ->subcompile($this->getNode('left')) 29 | ->raw(', ') 30 | ->subcompile($this->getNode('right')) 31 | ->raw('))') 32 | ; 33 | } 34 | 35 | public function operator(Compiler $compiler): Compiler 36 | { 37 | return $compiler->raw('>='); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/HasEveryBinary.php: -------------------------------------------------------------------------------- 1 | raw('CoreExtension::arrayEvery($this->env, ') 22 | ->subcompile($this->getNode('left')) 23 | ->raw(', ') 24 | ->subcompile($this->getNode('right')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | public function operator(Compiler $compiler): Compiler 30 | { 31 | return $compiler->raw(''); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/HasSomeBinary.php: -------------------------------------------------------------------------------- 1 | raw('CoreExtension::arraySome($this->env, ') 22 | ->subcompile($this->getNode('left')) 23 | ->raw(', ') 24 | ->subcompile($this->getNode('right')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | public function operator(Compiler $compiler): Compiler 30 | { 31 | return $compiler->raw(''); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/InBinary.php: -------------------------------------------------------------------------------- 1 | raw('CoreExtension::inFilter(') 22 | ->subcompile($this->getNode('left')) 23 | ->raw(', ') 24 | ->subcompile($this->getNode('right')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | public function operator(Compiler $compiler): Compiler 30 | { 31 | return $compiler->raw('in'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/LessBinary.php: -------------------------------------------------------------------------------- 1 | = 80000) { 21 | parent::compile($compiler); 22 | 23 | return; 24 | } 25 | 26 | $compiler 27 | ->raw('(-1 === CoreExtension::compare(') 28 | ->subcompile($this->getNode('left')) 29 | ->raw(', ') 30 | ->subcompile($this->getNode('right')) 31 | ->raw('))') 32 | ; 33 | } 34 | 35 | public function operator(Compiler $compiler): Compiler 36 | { 37 | return $compiler->raw('<'); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/LessEqualBinary.php: -------------------------------------------------------------------------------- 1 | = 80000) { 21 | parent::compile($compiler); 22 | 23 | return; 24 | } 25 | 26 | $compiler 27 | ->raw('(0 >= CoreExtension::compare(') 28 | ->subcompile($this->getNode('left')) 29 | ->raw(', ') 30 | ->subcompile($this->getNode('right')) 31 | ->raw('))') 32 | ; 33 | } 34 | 35 | public function operator(Compiler $compiler): Compiler 36 | { 37 | return $compiler->raw('<='); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/ModBinary.php: -------------------------------------------------------------------------------- 1 | raw('%'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/MulBinary.php: -------------------------------------------------------------------------------- 1 | raw('*'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php: -------------------------------------------------------------------------------- 1 | = 80000) { 21 | parent::compile($compiler); 22 | 23 | return; 24 | } 25 | 26 | $compiler 27 | ->raw('(0 !== CoreExtension::compare(') 28 | ->subcompile($this->getNode('left')) 29 | ->raw(', ') 30 | ->subcompile($this->getNode('right')) 31 | ->raw('))') 32 | ; 33 | } 34 | 35 | public function operator(Compiler $compiler): Compiler 36 | { 37 | return $compiler->raw('!='); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/NotInBinary.php: -------------------------------------------------------------------------------- 1 | raw('!CoreExtension::inFilter(') 22 | ->subcompile($this->getNode('left')) 23 | ->raw(', ') 24 | ->subcompile($this->getNode('right')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | public function operator(Compiler $compiler): Compiler 30 | { 31 | return $compiler->raw('not in'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/OrBinary.php: -------------------------------------------------------------------------------- 1 | raw('||'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/PowerBinary.php: -------------------------------------------------------------------------------- 1 | raw('**'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/RangeBinary.php: -------------------------------------------------------------------------------- 1 | raw('range(') 22 | ->subcompile($this->getNode('left')) 23 | ->raw(', ') 24 | ->subcompile($this->getNode('right')) 25 | ->raw(')') 26 | ; 27 | } 28 | 29 | public function operator(Compiler $compiler): Compiler 30 | { 31 | return $compiler->raw('..'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/SpaceshipBinary.php: -------------------------------------------------------------------------------- 1 | raw('<=>'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php: -------------------------------------------------------------------------------- 1 | getVarName(); 21 | $right = $compiler->getVarName(); 22 | $compiler 23 | ->raw(\sprintf('(is_string($%s = ', $left)) 24 | ->subcompile($this->getNode('left')) 25 | ->raw(\sprintf(') && is_string($%s = ', $right)) 26 | ->subcompile($this->getNode('right')) 27 | ->raw(\sprintf(') && str_starts_with($%1$s, $%2$s))', $left, $right)) 28 | ; 29 | } 30 | 31 | public function operator(Compiler $compiler): Compiler 32 | { 33 | return $compiler->raw(''); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/SubBinary.php: -------------------------------------------------------------------------------- 1 | raw('-'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Binary/XorBinary.php: -------------------------------------------------------------------------------- 1 | raw('xor'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/ConstantExpression.php: -------------------------------------------------------------------------------- 1 | $value], $lineno); 25 | } 26 | 27 | public function compile(Compiler $compiler): void 28 | { 29 | $compiler->repr($this->getAttribute('value')); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/InlinePrint.php: -------------------------------------------------------------------------------- 1 | $node], [], $lineno); 30 | } 31 | 32 | public function compile(Compiler $compiler): void 33 | { 34 | $compiler 35 | ->raw('yield ') 36 | ->subcompile($this->getNode('node')) 37 | ; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/OperatorEscapeInterface.php: -------------------------------------------------------------------------------- 1 | 1. 16 | * 17 | * @author Fabien Potencier 18 | */ 19 | interface OperatorEscapeInterface 20 | { 21 | /** 22 | * @return string[] 23 | */ 24 | public function getOperandNamesToEscape(): array; 25 | } 26 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/ParentExpression.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | class ParentExpression extends AbstractExpression 23 | { 24 | public function __construct(string $name, int $lineno) 25 | { 26 | parent::__construct([], ['output' => false, 'name' => $name], $lineno); 27 | } 28 | 29 | public function compile(Compiler $compiler): void 30 | { 31 | if ($this->getAttribute('output')) { 32 | $compiler 33 | ->addDebugInfo($this) 34 | ->write('yield from $this->yieldParentBlock(') 35 | ->string($this->getAttribute('name')) 36 | ->raw(", \$context, \$blocks);\n") 37 | ; 38 | } else { 39 | $compiler 40 | ->raw('$this->renderParentBlock(') 41 | ->string($this->getAttribute('name')) 42 | ->raw(', $context, $blocks)') 43 | ; 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Ternary/ConditionalTernary.php: -------------------------------------------------------------------------------- 1 | $test, 'left' => $left, 'right' => $right], [], $lineno); 23 | } 24 | 25 | public function compile(Compiler $compiler): void 26 | { 27 | $compiler 28 | ->raw('((') 29 | ->subcompile($this->getNode('test')) 30 | ->raw(') ? (') 31 | ->subcompile($this->getNode('left')) 32 | ->raw(') : (') 33 | ->subcompile($this->getNode('right')) 34 | ->raw('))') 35 | ; 36 | } 37 | 38 | public function getOperandNamesToEscape(): array 39 | { 40 | return ['left', 'right']; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Test/DivisiblebyTest.php: -------------------------------------------------------------------------------- 1 | 23 | */ 24 | class DivisiblebyTest extends TestExpression 25 | { 26 | public function compile(Compiler $compiler): void 27 | { 28 | $compiler 29 | ->raw('(0 == ') 30 | ->subcompile($this->getNode('node')) 31 | ->raw(' % ') 32 | ->subcompile($this->getNode('arguments')->getNode('0')) 33 | ->raw(')') 34 | ; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Test/EvenTest.php: -------------------------------------------------------------------------------- 1 | 23 | */ 24 | class EvenTest extends TestExpression 25 | { 26 | public function compile(Compiler $compiler): void 27 | { 28 | $compiler 29 | ->raw('(') 30 | ->subcompile($this->getNode('node')) 31 | ->raw(' % 2 == 0') 32 | ->raw(')') 33 | ; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Test/NullTest.php: -------------------------------------------------------------------------------- 1 | 23 | */ 24 | class NullTest extends TestExpression 25 | { 26 | public function compile(Compiler $compiler): void 27 | { 28 | $compiler 29 | ->raw('(null === ') 30 | ->subcompile($this->getNode('node')) 31 | ->raw(')') 32 | ; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Test/OddTest.php: -------------------------------------------------------------------------------- 1 | 23 | */ 24 | class OddTest extends TestExpression 25 | { 26 | public function compile(Compiler $compiler): void 27 | { 28 | $compiler 29 | ->raw('(') 30 | ->subcompile($this->getNode('node')) 31 | ->raw(' % 2 != 0') 32 | ->raw(')') 33 | ; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Test/SameasTest.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | class SameasTest extends TestExpression 23 | { 24 | public function compile(Compiler $compiler): void 25 | { 26 | $compiler 27 | ->raw('(') 28 | ->subcompile($this->getNode('node')) 29 | ->raw(' === ') 30 | ->subcompile($this->getNode('arguments')->getNode('0')) 31 | ->raw(')') 32 | ; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Unary/NegUnary.php: -------------------------------------------------------------------------------- 1 | raw('-'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Unary/NotUnary.php: -------------------------------------------------------------------------------- 1 | raw('!'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Unary/PosUnary.php: -------------------------------------------------------------------------------- 1 | raw('+'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Unary/SpreadUnary.php: -------------------------------------------------------------------------------- 1 | raw('...'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Unary/StringCastUnary.php: -------------------------------------------------------------------------------- 1 | raw('(string)'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Variable/AssignContextVariable.php: -------------------------------------------------------------------------------- 1 | $var], ['global' => $global], $var->getTemplateLine()); 22 | } 23 | 24 | public function compile(Compiler $compiler): void 25 | { 26 | /** @var TemplateVariable $var */ 27 | $var = $this->nodes['var']; 28 | 29 | $compiler 30 | ->addDebugInfo($this) 31 | ->write('$macros[') 32 | ->string($var->getName($compiler)) 33 | ->raw('] = ') 34 | ; 35 | 36 | if ($this->getAttribute('global')) { 37 | $compiler 38 | ->raw('$this->macros[') 39 | ->string($var->getName($compiler)) 40 | ->raw('] = ') 41 | ; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/Variable/ContextVariable.php: -------------------------------------------------------------------------------- 1 | getAttribute('name')) { 22 | $this->setAttribute('name', $compiler->getVarName()); 23 | } 24 | 25 | return $this->getAttribute('name'); 26 | } 27 | 28 | public function compile(Compiler $compiler): void 29 | { 30 | $name = $this->getName($compiler); 31 | 32 | if ('_self' === $name) { 33 | $compiler->raw('$this'); 34 | } else { 35 | $compiler 36 | ->raw('$macros[') 37 | ->string($name) 38 | ->raw(']') 39 | ; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Expression/VariadicExpression.php: -------------------------------------------------------------------------------- 1 | raw('...'); 21 | 22 | parent::compile($compiler); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/FlushNode.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | #[YieldReady] 23 | class FlushNode extends Node 24 | { 25 | public function __construct(int $lineno) 26 | { 27 | parent::__construct([], [], $lineno); 28 | } 29 | 30 | public function compile(Compiler $compiler): void 31 | { 32 | $compiler->addDebugInfo($this); 33 | 34 | if ($compiler->getEnvironment()->useYield()) { 35 | $compiler->write("yield '';\n"); 36 | } 37 | 38 | $compiler->write("flush();\n"); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/NameDeprecation.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class NameDeprecation 20 | { 21 | private $package; 22 | private $version; 23 | private $newName; 24 | 25 | public function __construct(string $package = '', string $version = '', string $newName = '') 26 | { 27 | $this->package = $package; 28 | $this->version = $version; 29 | $this->newName = $newName; 30 | } 31 | 32 | public function getPackage(): string 33 | { 34 | return $this->package; 35 | } 36 | 37 | public function getVersion(): string 38 | { 39 | return $this->version; 40 | } 41 | 42 | public function getNewName(): string 43 | { 44 | return $this->newName; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/NodeCaptureInterface.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | interface NodeCaptureInterface 20 | { 21 | } 22 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/NodeOutputInterface.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | interface NodeOutputInterface 20 | { 21 | } 22 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/Nodes.php: -------------------------------------------------------------------------------- 1 | 20 | */ 21 | #[YieldReady] 22 | final class Nodes extends Node 23 | { 24 | public function __construct(array $nodes = [], int $lineno = 0) 25 | { 26 | parent::__construct($nodes, [], $lineno); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/PrintNode.php: -------------------------------------------------------------------------------- 1 | 23 | */ 24 | #[YieldReady] 25 | class PrintNode extends Node implements NodeOutputInterface 26 | { 27 | public function __construct(AbstractExpression $expr, int $lineno) 28 | { 29 | parent::__construct(['expr' => $expr], [], $lineno); 30 | } 31 | 32 | public function compile(Compiler $compiler): void 33 | { 34 | /** @var AbstractExpression */ 35 | $expr = $this->getNode('expr'); 36 | 37 | $compiler 38 | ->addDebugInfo($this) 39 | ->write($expr->isGenerator() ? 'yield from ' : 'yield ') 40 | ->subcompile($expr) 41 | ->raw(";\n") 42 | ; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/TextNode.php: -------------------------------------------------------------------------------- 1 | 22 | */ 23 | #[YieldReady] 24 | class TextNode extends Node implements NodeOutputInterface 25 | { 26 | public function __construct(string $data, int $lineno) 27 | { 28 | parent::__construct([], ['data' => $data], $lineno); 29 | } 30 | 31 | public function compile(Compiler $compiler): void 32 | { 33 | $compiler->addDebugInfo($this); 34 | 35 | $compiler 36 | ->write('yield ') 37 | ->string($this->getAttribute('data')) 38 | ->raw(";\n") 39 | ; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Node/TypesNode.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | #[YieldReady] 14 | class TypesNode extends Node 15 | { 16 | /** 17 | * @param array $types 18 | */ 19 | public function __construct(array $types, int $lineno) 20 | { 21 | parent::__construct([], ['mapping' => $types], $lineno); 22 | } 23 | 24 | public function compile(Compiler $compiler) 25 | { 26 | // Don't compile anything. 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/NodeVisitor/NodeVisitorInterface.php: -------------------------------------------------------------------------------- 1 | 21 | */ 22 | interface NodeVisitorInterface 23 | { 24 | /** 25 | * Called before child nodes are visited. 26 | * 27 | * @return Node The modified node 28 | */ 29 | public function enterNode(Node $node, Environment $env): Node; 30 | 31 | /** 32 | * Called after child nodes are visited. 33 | * 34 | * @return Node|null The modified node or null if the node must be removed 35 | */ 36 | public function leaveNode(Node $node, Environment $env): ?Node; 37 | 38 | /** 39 | * Returns the priority for this visitor. 40 | * 41 | * Priority should be between -10 and 10 (0 is the default). 42 | * 43 | * @return int The priority level 44 | */ 45 | public function getPriority(); 46 | } 47 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/OperatorPrecedenceChange.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class OperatorPrecedenceChange 20 | { 21 | public function __construct( 22 | private string $package, 23 | private string $version, 24 | private int $newPrecedence, 25 | ) { 26 | } 27 | 28 | public function getPackage(): string 29 | { 30 | return $this->package; 31 | } 32 | 33 | public function getVersion(): string 34 | { 35 | return $this->version; 36 | } 37 | 38 | public function getNewPrecedence(): int 39 | { 40 | return $this->newPrecedence; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Profiler/Dumper/TextDumper.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class TextDumper extends BaseDumper 20 | { 21 | protected function formatTemplate(Profile $profile, $prefix): string 22 | { 23 | return \sprintf('%s└ %s', $prefix, $profile->getTemplate()); 24 | } 25 | 26 | protected function formatNonTemplate(Profile $profile, $prefix): string 27 | { 28 | return \sprintf('%s└ %s::%s(%s)', $prefix, $profile->getTemplate(), $profile->getType(), $profile->getName()); 29 | } 30 | 31 | protected function formatTime(Profile $profile, $percent): string 32 | { 33 | return \sprintf('%.2fms/%.0f%%', $profile->getDuration() * 1000, $percent); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Profiler/Node/LeaveProfileNode.php: -------------------------------------------------------------------------------- 1 | 22 | */ 23 | #[YieldReady] 24 | class LeaveProfileNode extends Node 25 | { 26 | public function __construct(string $varName) 27 | { 28 | parent::__construct([], ['var_name' => $varName]); 29 | } 30 | 31 | public function compile(Compiler $compiler): void 32 | { 33 | $compiler 34 | ->write("\n") 35 | ->write(\sprintf("\$%s->leave(\$%s);\n\n", $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof')) 36 | ; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Resources/debug.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | use Twig\Environment; 13 | use Twig\Extension\DebugExtension; 14 | 15 | /** 16 | * @internal 17 | * 18 | * @deprecated since Twig 3.9 19 | */ 20 | function twig_var_dump(Environment $env, $context, ...$vars) 21 | { 22 | trigger_deprecation('twig/twig', '3.9', 'Using the internal "%s" function is deprecated.', __FUNCTION__); 23 | 24 | DebugExtension::dump($env, $context, ...$vars); 25 | } 26 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Resources/string_loader.php: -------------------------------------------------------------------------------- 1 | 7 | * 8 | * For the full copyright and license information, please view the LICENSE 9 | * file that was distributed with this source code. 10 | */ 11 | 12 | use Twig\Environment; 13 | use Twig\Extension\StringLoaderExtension; 14 | use Twig\TemplateWrapper; 15 | 16 | /** 17 | * @internal 18 | * 19 | * @deprecated since Twig 3.9 20 | */ 21 | function twig_template_from_string(Environment $env, $template, ?string $name = null): TemplateWrapper 22 | { 23 | trigger_deprecation('twig/twig', '3.9', 'Using the internal "%s" function is deprecated.', __FUNCTION__); 24 | 25 | return StringLoaderExtension::templateFromString($env, $template, $name); 26 | } 27 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/RuntimeLoader/ContainerRuntimeLoader.php: -------------------------------------------------------------------------------- 1 | 22 | * @author Robin Chalas 23 | */ 24 | class ContainerRuntimeLoader implements RuntimeLoaderInterface 25 | { 26 | public function __construct( 27 | private ContainerInterface $container, 28 | ) { 29 | } 30 | 31 | public function load(string $class) 32 | { 33 | return $this->container->has($class) ? $this->container->get($class) : null; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/RuntimeLoader/FactoryRuntimeLoader.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | class FactoryRuntimeLoader implements RuntimeLoaderInterface 20 | { 21 | /** 22 | * @param array $map An array where keys are class names and values factory callables 23 | */ 24 | public function __construct( 25 | private array $map = [], 26 | ) { 27 | } 28 | 29 | public function load(string $class) 30 | { 31 | if (!isset($this->map[$class])) { 32 | return null; 33 | } 34 | 35 | $runtimeFactory = $this->map[$class]; 36 | 37 | return $runtimeFactory(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/RuntimeLoader/RuntimeLoaderInterface.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | interface RuntimeLoaderInterface 20 | { 21 | /** 22 | * Creates the runtime implementation of a Twig element (filter/function/test). 23 | * 24 | * @return object|null The runtime instance or null if the loader does not know how to create the runtime for this class 25 | */ 26 | public function load(string $class); 27 | } 28 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SecurityError.php: -------------------------------------------------------------------------------- 1 | 20 | */ 21 | class SecurityError extends Error 22 | { 23 | } 24 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SecurityNotAllowedFilterError.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class SecurityNotAllowedFilterError extends SecurityError 20 | { 21 | private $filterName; 22 | 23 | public function __construct(string $message, string $functionName) 24 | { 25 | parent::__construct($message); 26 | $this->filterName = $functionName; 27 | } 28 | 29 | public function getFilterName(): string 30 | { 31 | return $this->filterName; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SecurityNotAllowedFunctionError.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class SecurityNotAllowedFunctionError extends SecurityError 20 | { 21 | private $functionName; 22 | 23 | public function __construct(string $message, string $functionName) 24 | { 25 | parent::__construct($message); 26 | $this->functionName = $functionName; 27 | } 28 | 29 | public function getFunctionName(): string 30 | { 31 | return $this->functionName; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SecurityNotAllowedMethodError.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class SecurityNotAllowedMethodError extends SecurityError 20 | { 21 | private $className; 22 | private $methodName; 23 | 24 | public function __construct(string $message, string $className, string $methodName) 25 | { 26 | parent::__construct($message); 27 | $this->className = $className; 28 | $this->methodName = $methodName; 29 | } 30 | 31 | public function getClassName(): string 32 | { 33 | return $this->className; 34 | } 35 | 36 | public function getMethodName() 37 | { 38 | return $this->methodName; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SecurityNotAllowedPropertyError.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class SecurityNotAllowedPropertyError extends SecurityError 20 | { 21 | private $className; 22 | private $propertyName; 23 | 24 | public function __construct(string $message, string $className, string $propertyName) 25 | { 26 | parent::__construct($message); 27 | $this->className = $className; 28 | $this->propertyName = $propertyName; 29 | } 30 | 31 | public function getClassName(): string 32 | { 33 | return $this->className; 34 | } 35 | 36 | public function getPropertyName() 37 | { 38 | return $this->propertyName; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SecurityNotAllowedTagError.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class SecurityNotAllowedTagError extends SecurityError 20 | { 21 | private $tagName; 22 | 23 | public function __construct(string $message, string $tagName) 24 | { 25 | parent::__construct($message); 26 | $this->tagName = $tagName; 27 | } 28 | 29 | public function getTagName(): string 30 | { 31 | return $this->tagName; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SecurityPolicyInterface.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | interface SecurityPolicyInterface 20 | { 21 | /** 22 | * @param string[] $tags 23 | * @param string[] $filters 24 | * @param string[] $functions 25 | * 26 | * @throws SecurityError 27 | */ 28 | public function checkSecurity($tags, $filters, $functions): void; 29 | 30 | /** 31 | * @param object $obj 32 | * @param string $method 33 | * 34 | * @throws SecurityNotAllowedMethodError 35 | */ 36 | public function checkMethodAllowed($obj, $method): void; 37 | 38 | /** 39 | * @param object $obj 40 | * @param string $property 41 | * 42 | * @throws SecurityNotAllowedPropertyError 43 | */ 44 | public function checkPropertyAllowed($obj, $property): void; 45 | } 46 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Sandbox/SourcePolicyInterface.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | final class Source 20 | { 21 | /** 22 | * @param string $code The template source code 23 | * @param string $name The template logical name 24 | * @param string $path The filesystem path of the template if any 25 | */ 26 | public function __construct( 27 | private string $code, 28 | private string $name, 29 | private string $path = '', 30 | ) { 31 | } 32 | 33 | public function getCode(): string 34 | { 35 | return $this->code; 36 | } 37 | 38 | public function getName(): string 39 | { 40 | return $this->name; 41 | } 42 | 43 | public function getPath(): string 44 | { 45 | return $this->path; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/TokenParser/AbstractTokenParser.php: -------------------------------------------------------------------------------- 1 | 20 | */ 21 | abstract class AbstractTokenParser implements TokenParserInterface 22 | { 23 | /** 24 | * @var Parser 25 | */ 26 | protected $parser; 27 | 28 | public function setParser(Parser $parser): void 29 | { 30 | $this->parser = $parser; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/TokenParser/DoTokenParser.php: -------------------------------------------------------------------------------- 1 | parser->getExpressionParser()->parseExpression(); 28 | 29 | $this->parser->getStream()->expect(Token::BLOCK_END_TYPE); 30 | 31 | return new DoNode($expr, $token->getLine()); 32 | } 33 | 34 | public function getTag(): string 35 | { 36 | return 'do'; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/TokenParser/FlushTokenParser.php: -------------------------------------------------------------------------------- 1 | parser->getStream()->expect(Token::BLOCK_END_TYPE); 30 | 31 | return new FlushNode($token->getLine()); 32 | } 33 | 34 | public function getTag(): string 35 | { 36 | return 'flush'; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/TokenParser/TokenParserInterface.php: -------------------------------------------------------------------------------- 1 | 23 | */ 24 | interface TokenParserInterface 25 | { 26 | /** 27 | * Sets the parser associated with this token parser. 28 | */ 29 | public function setParser(Parser $parser): void; 30 | 31 | /** 32 | * Parses a token and returns a node. 33 | * 34 | * @return Node 35 | * 36 | * @throws SyntaxError 37 | */ 38 | public function parse(Token $token); 39 | 40 | /** 41 | * Gets the tag name associated with this token parser. 42 | * 43 | * @return string 44 | */ 45 | public function getTag(); 46 | } 47 | -------------------------------------------------------------------------------- /vendor/twig/twig/src/Util/TemplateDirIterator.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | class TemplateDirIterator extends \IteratorIterator 18 | { 19 | /** 20 | * @return mixed 21 | */ 22 | #[\ReturnTypeWillChange] 23 | public function current() 24 | { 25 | return file_get_contents(parent::current()); 26 | } 27 | 28 | /** 29 | * @return mixed 30 | */ 31 | #[\ReturnTypeWillChange] 32 | public function key() 33 | { 34 | return (string) parent::key(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /version.php: -------------------------------------------------------------------------------- 1 | . 16 | 17 | /** 18 | * @package qtype_coderunner 19 | * @copyright Richard Lobb, The University of Canterbury, New Zealand. 20 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 21 | */ 22 | 23 | defined('MOODLE_INTERNAL') || die(); 24 | 25 | $plugin->version = 2025052100; 26 | $plugin->requires = 2023100900; // Moodle 4.3.0 or later. 27 | $plugin->cron = 0; 28 | $plugin->component = 'qtype_coderunner'; 29 | $plugin->maturity = MATURITY_STABLE; 30 | $plugin->release = '5.7.1+'; 31 | 32 | $plugin->dependencies = [ 33 | 'qbehaviour_adaptive_adapted_for_coderunner' => 2024041800, 34 | ]; 35 | --------------------------------------------------------------------------------