inkcpp_rb 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +1 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +84 -0
- data/LICENSE +7 -0
- data/README.md +3 -0
- data/Rakefile +16 -0
- data/bin/console +15 -0
- data/bin/setup +10 -0
- data/bin/tapioca +29 -0
- data/ext/inkcpp_rb/extconf.rb +19 -0
- data/ext/inkcpp_rb/inkcpp/.clang-format +99 -0
- data/ext/inkcpp_rb/inkcpp/.github/FUNDING.yml +1 -0
- data/ext/inkcpp_rb/inkcpp/.github/workflows/build.yml +344 -0
- data/ext/inkcpp_rb/inkcpp/.github/workflows/release.yml +49 -0
- data/ext/inkcpp_rb/inkcpp/.gitignore +25 -0
- data/ext/inkcpp_rb/inkcpp/.gitmodules +9 -0
- data/ext/inkcpp_rb/inkcpp/CMakeLists.txt +170 -0
- data/ext/inkcpp_rb/inkcpp/CODE_OF_CONDUCT.md +76 -0
- data/ext/inkcpp_rb/inkcpp/CONTRIBUTING.md +55 -0
- data/ext/inkcpp_rb/inkcpp/Config.cmake.in +2 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/cmake_example/CMakeLists.txt +13 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/cmake_example/main.c +38 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/cmake_example/main.cpp +40 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/cmake_example/test.ink +8 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/cmake_example/test.ink.json +1 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/cmake_example.zip +0 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/unreal/InkCPP_DEMO.zip +0 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/CreateThread.png +0 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/HandleChoice.png +0 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/ListElementOf.png +0 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/MinimalRuntime.png +0 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/MinimalThread.png +0 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/ObseverChange.png +0 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/TagListGetValue.png +0 -0
- data/ext/inkcpp_rb/inkcpp/Documentation/unreal/imgs/YieldResume.png +0 -0
- data/ext/inkcpp_rb/inkcpp/Doxyfile +2825 -0
- data/ext/inkcpp_rb/inkcpp/LICENSE.txt +22 -0
- data/ext/inkcpp_rb/inkcpp/Minimal.runsettings +8 -0
- data/ext/inkcpp_rb/inkcpp/README.md +192 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/CMakeLists.txt +67 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/array.h +481 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/avl_array.h +833 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/casting.h +93 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/choice.cpp +54 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/collections/restorable.cpp +124 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/collections/restorable.h +406 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/container_operations.cpp +52 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/container_operations.h +34 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/executioner.h +179 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/functional.cpp +86 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/functions.cpp +54 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/functions.h +40 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/globals_impl.cpp +289 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/globals_impl.h +149 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/header.cpp +44 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/include/choice.h +106 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/include/functional.h +327 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/include/globals.h +196 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/include/list.h +187 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/include/runner.h +291 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/include/snapshot.h +61 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/include/story.h +219 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/include/story_ptr.h +233 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/include/traits.h +270 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/include/types.h +169 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/list_impl.cpp +79 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/list_impl.h +39 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/list_operations.cpp +276 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/list_operations.h +356 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/list_table.cpp +841 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/list_table.h +450 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/numeric_operations.cpp +40 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/numeric_operations.h +529 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/operation_bases.h +164 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/operations.h +100 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/output.cpp +528 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/output.h +153 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/platform.h +22 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/random.h +38 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/runner_impl.cpp +1396 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/runner_impl.h +336 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/simple_restorable_stack.h +335 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/snapshot_impl.cpp +182 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/snapshot_impl.h +91 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/snapshot_interface.h +57 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/stack.cpp +618 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/stack.h +243 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/story_impl.cpp +361 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/story_impl.h +92 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/story_ptr.cpp +75 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/string_operations.cpp +125 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/string_operations.h +67 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/string_table.cpp +149 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/string_table.h +47 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/string_utils.h +207 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/system.cpp +39 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/tuple.hpp +151 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/value.cpp +279 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp/value.h +666 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_c/CMakeLists.txt +62 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_c/include/inkcpp.h +393 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_c/inkcpp.cpp +344 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_c/inkcpp_c.pc.in +10 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_c/tests/ExternalFunction.c +56 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_c/tests/Globals.c +98 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_c/tests/Lists.c +73 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_c/tests/Observer.c +36 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_c/tests/Snapshot.c +65 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_cl/CMakeLists.txt +49 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_cl/inkcpp_cl.cpp +215 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_cl/test.cpp +209 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_cl/test.h +8 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/CMakeLists.txt +37 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/binary_emitter.cpp +446 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/binary_emitter.h +70 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/binary_stream.cpp +166 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/binary_stream.h +79 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/command.cpp +107 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/compiler.cpp +96 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/emitter.cpp +62 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/emitter.h +104 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/include/compilation_results.h +22 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/include/compiler.h +44 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/json.hpp +24596 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/json_compiler.cpp +411 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/json_compiler.h +62 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/list_data.cpp +47 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/list_data.h +70 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/reporter.cpp +107 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_compiler/reporter.h +55 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_py/CMakeLists.txt +19 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_py/example.py +78 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_py/src/module.cpp +317 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_py/tests/conftest.py +53 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_py/tests/test_ExternalFunctions.py +35 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_py/tests/test_Globals.py +40 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_py/tests/test_Lists.py +43 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_py/tests/test_Observer.py +27 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_py/tests/test_Snapshot.py +57 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_py/unreal_example.ink +71 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/Array.cpp +115 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/CMakeLists.txt +117 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/Callstack.cpp +392 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/EmptyStringForDivert.cpp +36 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ExternalFunctionsExecuteProperly.cpp +34 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/FallbackFunction.cpp +77 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/Globals.cpp +73 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/InkyJson.cpp +34 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/LabelCondition.cpp +60 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/Lists.cpp +144 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/LookaheadSafe.cpp +46 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/Main.cpp +7 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/MoveTo.cpp +95 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/NewLines.cpp +76 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/NoEarlyTags.cpp +33 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/Observer.cpp +245 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/Pointer.cpp +191 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/Restorable.cpp +294 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/SpaceAfterBracketChoice.cpp +45 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/Stack.cpp +224 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/Tags.cpp +131 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ThirdTierChoiceAfterBrackets.cpp +38 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/UTF8.cpp +56 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/Value.cpp +210 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/catch.hpp +17970 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/AHF.ink +7 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/ChoiceBracketStory.ink +7 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/EmptyStringForDivert.ink +13 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/ExternalFunctionsExecuteProperly.ink +11 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/FallBack.ink +15 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/GlobalStory.ink +9 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/LabelConditionStory.ink +5 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/LinesStory.ink +42 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/ListLogicStory.ink +40 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/ListStory.ink +8 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/LookaheadSafe.ink +14 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/MoveTo.ink +36 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/NoEarlyTags.ink +19 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/ObserverStory.ink +8 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/SimpleStoryFlow.ink +65 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/TagsStory.ink +22 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/TheIntercept.ink +1686 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/ThirdTierChoiceAfterBracketsStory.ink +13 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/UTF-8-demo.txt +212 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/UTF8Story.ink +218 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/simple-1.1.1-inklecate.json +154 -0
- data/ext/inkcpp_rb/inkcpp/inkcpp_test/ink/simple-1.1.1-inky.json +160 -0
- data/ext/inkcpp_rb/inkcpp/notes/ArchitectureNotes.md +54 -0
- data/ext/inkcpp_rb/inkcpp/notes/ListNotes.md +69 -0
- data/ext/inkcpp_rb/inkcpp/notes/OperationNotes.md +35 -0
- data/ext/inkcpp_rb/inkcpp/notes/TagsNotes.md +24 -0
- data/ext/inkcpp_rb/inkcpp/notes/WhitespaceNotes.md +28 -0
- data/ext/inkcpp_rb/inkcpp/proofing/README.md +3 -0
- data/ext/inkcpp_rb/inkcpp/proofing/inkcpp_runtime_driver +12 -0
- data/ext/inkcpp_rb/inkcpp/pyproject.toml +63 -0
- data/ext/inkcpp_rb/inkcpp/setup.py +166 -0
- data/ext/inkcpp_rb/inkcpp/shared/CMakeLists.txt +14 -0
- data/ext/inkcpp_rb/inkcpp/shared/private/command.h +172 -0
- data/ext/inkcpp_rb/inkcpp/shared/private/header.h +46 -0
- data/ext/inkcpp_rb/inkcpp/shared/public/config.h +53 -0
- data/ext/inkcpp_rb/inkcpp/shared/public/system.h +307 -0
- data/ext/inkcpp_rb/inkcpp/shared/public/version.h +14 -0
- data/ext/inkcpp_rb/inkcpp/tests/TestAllSequenceTypes.ink +59 -0
- data/ext/inkcpp_rb/inkcpp/tests/TestArithmetic.ink +17 -0
- data/ext/inkcpp_rb/inkcpp/tests/TestBasicStringLiterals.ink +8 -0
- data/ext/inkcpp_rb/inkcpp/tests/TestBasicTunnel.ink +10 -0
- data/ext/inkcpp_rb/inkcpp/tests/TestBlanksInInlineSequences.ink +51 -0
- data/ext/inkcpp_rb/inkcpp/tests/TestCallStackEvaluation.ink +15 -0
- data/ext/inkcpp_rb/inkcpp/tests/TestChoiceCount.ink +15 -0
- data/ext/inkcpp_rb/inkcpp/tests/TestChoiceDivertsToDone.ink +6 -0
- data/ext/inkcpp_rb/inkcpp/tests/TestChoiceWithBracketsOnly.ink +9 -0
- data/ext/inkcpp_rb/inkcpp/tests/TestCompareDivertTargets.ink +26 -0
- data/ext/inkcpp_rb/inkcpp/tests/TestComplexTunnels.ink +22 -0
- data/ext/inkcpp_rb/inkcpp/tests/TestConditionalChoiceInWeave.ink +19 -0
- data/ext/inkcpp_rb/inkcpp/tests/TestTunnelOnwardsAfterTunnel.ink +17 -0
- data/ext/inkcpp_rb/inkcpp/unreal/CMakeLists.txt +51 -0
- data/ext/inkcpp_rb/inkcpp/unreal/UE_example.ink +92 -0
- data/ext/inkcpp_rb/inkcpp/unreal/blueprint_filter.js +377 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Resources/Icon128.png +0 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/InkAsset.cpp +47 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/InkChoice.cpp +40 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/InkList.cpp +86 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/InkRuntime.cpp +265 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/InkThread.cpp +239 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/InkVar.cpp +143 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/TagList.cpp +95 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Private/inkcpp.cpp +13 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkAsset.h +50 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkChoice.h +58 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkDelegates.h +139 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkList.h +102 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkRuntime.h +177 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkSnapshot.h +30 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkThread.h +215 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/InkVar.h +245 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/TagList.h +77 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/Public/inkcpp.h +217 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp/inkcpp.Build.cs +62 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp_editor/Private/InkAssetFactory.cpp +237 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp_editor/Private/InkAssetFactory.h +43 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp_editor/Private/inkcpp_editor.cpp +13 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp_editor/Private/inklecate_cmd.cpp.in +24 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp_editor/Public/inkcpp_editor.h +9 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/Source/inkcpp_editor/inkcpp_editor.Build.cs +61 -0
- data/ext/inkcpp_rb/inkcpp/unreal/inkcpp/inkcpp.uplugin +44 -0
- data/ext/inkcpp_rb/inkcpp/unreal/render.css +1 -0
- data/ext/inkcpp_rb/inkcpp_rb.cpp +321 -0
- data/inkcpp_rb.gemspec +54 -0
- data/rbi/inkcpp_rb.rbi +211 -0
- data/sorbet/config +4 -0
- data/sorbet/rbi/annotations/.gitattributes +1 -0
- data/sorbet/rbi/annotations/minitest.rbi +119 -0
- data/sorbet/rbi/gems/.gitattributes +1 -0
- data/sorbet/rbi/gems/benchmark@0.4.0.rbi +618 -0
- data/sorbet/rbi/gems/erubi@1.13.1.rbi +155 -0
- data/sorbet/rbi/gems/minitest@5.25.4.rbi +1547 -0
- data/sorbet/rbi/gems/netrc@0.11.0.rbi +159 -0
- data/sorbet/rbi/gems/parallel@1.26.3.rbi +291 -0
- data/sorbet/rbi/gems/prism@1.3.0.rbi +40040 -0
- data/sorbet/rbi/gems/rake-compiler@1.2.8.rbi +9 -0
- data/sorbet/rbi/gems/rake@13.2.1.rbi +3033 -0
- data/sorbet/rbi/gems/rbi@0.2.2.rbi +4527 -0
- data/sorbet/rbi/gems/rice@4.3.3.rbi +44 -0
- data/sorbet/rbi/gems/spoom@1.5.0.rbi +4932 -0
- data/sorbet/rbi/gems/tapioca@0.16.7.rbi +3611 -0
- data/sorbet/rbi/gems/thor@1.3.2.rbi +4378 -0
- data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +435 -0
- data/sorbet/rbi/gems/yard@0.9.37.rbi +18379 -0
- data/sorbet/tapioca/config.yml +13 -0
- data/sorbet/tapioca/require.rb +4 -0
- metadata +400 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import inkcpp_py as ink
|
|
2
|
+
import pytest
|
|
3
|
+
|
|
4
|
+
def check_end(runner):
|
|
5
|
+
assert runner.num_choices() == 3
|
|
6
|
+
runner.choose(2)
|
|
7
|
+
while runner.can_continue():
|
|
8
|
+
runner.getline()
|
|
9
|
+
assert runner.num_choices() == 2
|
|
10
|
+
|
|
11
|
+
class TestSnapshot:
|
|
12
|
+
def test_snapshot(self, assets, generate):
|
|
13
|
+
[story, glob, runner] = generate(assets['SimpleStoryFlow'])
|
|
14
|
+
runner2 = story.new_runner(glob)
|
|
15
|
+
runner.getline()
|
|
16
|
+
assert runner.num_choices() == 3
|
|
17
|
+
snap0 = runner.create_snapshot()
|
|
18
|
+
|
|
19
|
+
runner.choose(2)
|
|
20
|
+
|
|
21
|
+
snap1 = runner.create_snapshot()
|
|
22
|
+
|
|
23
|
+
cnt = 0
|
|
24
|
+
while runner.can_continue():
|
|
25
|
+
runner.getline()
|
|
26
|
+
cnt += 1
|
|
27
|
+
|
|
28
|
+
snap2 = runner.create_snapshot()
|
|
29
|
+
|
|
30
|
+
check_end(runner)
|
|
31
|
+
|
|
32
|
+
glob = story.new_globals_from_snapshot(snap0)
|
|
33
|
+
runner = story.new_runner_from_snapshot(snap0, glob, 0)
|
|
34
|
+
assert runner.num_choices() == 3
|
|
35
|
+
runner.choose(2)
|
|
36
|
+
cnt_x = 0
|
|
37
|
+
while runner.can_continue():
|
|
38
|
+
runner.getline()
|
|
39
|
+
cnt_x += 1
|
|
40
|
+
assert cnt_x == cnt
|
|
41
|
+
|
|
42
|
+
check_end(runner)
|
|
43
|
+
|
|
44
|
+
glob = story.new_globals_from_snapshot(snap1)
|
|
45
|
+
runner = story.new_runner_from_snapshot(snap1, glob, 0)
|
|
46
|
+
cnt_x = 0
|
|
47
|
+
while runner.can_continue():
|
|
48
|
+
runner.getline()
|
|
49
|
+
cnt_x += 1
|
|
50
|
+
assert cnt_x == cnt
|
|
51
|
+
|
|
52
|
+
check_end(runner)
|
|
53
|
+
|
|
54
|
+
glob = story.new_globals_from_snapshot(snap2)
|
|
55
|
+
runner = story.new_runner_from_snapshot(snap2, glob, 0)
|
|
56
|
+
assert not runner.can_continue()
|
|
57
|
+
check_end(runner)
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
->Start
|
|
2
|
+
EXTERNAL SetBrightness(x)
|
|
3
|
+
=== function SetBrightness(x) ===
|
|
4
|
+
~ return
|
|
5
|
+
|
|
6
|
+
EXTERNAL GetGreeting()
|
|
7
|
+
=== function GetGreeting() ===
|
|
8
|
+
~ return "Hey, "
|
|
9
|
+
|
|
10
|
+
VAR brightness = 50
|
|
11
|
+
|
|
12
|
+
VAR date = "???"
|
|
13
|
+
|
|
14
|
+
LIST background = (a), b, c
|
|
15
|
+
|
|
16
|
+
=== Start ===
|
|
17
|
+
{GetGreeting()}, your personal assistent here. # Story Start
|
|
18
|
+
Today is the {date}
|
|
19
|
+
Why we don't start with some customisation options:
|
|
20
|
+
* [Yes]
|
|
21
|
+
-> Settings ->
|
|
22
|
+
How The story looks now? much better :)
|
|
23
|
+
->DONE
|
|
24
|
+
* [I Don't like you.]
|
|
25
|
+
Then Bye
|
|
26
|
+
->DONE
|
|
27
|
+
|
|
28
|
+
=== Settings ===
|
|
29
|
+
|
|
30
|
+
= All
|
|
31
|
+
Let Start with the color.
|
|
32
|
+
->Color->
|
|
33
|
+
The illumination seems off?
|
|
34
|
+
->Brightness->
|
|
35
|
+
And now some custom background :)
|
|
36
|
+
->Background->
|
|
37
|
+
->->
|
|
38
|
+
|
|
39
|
+
= Color
|
|
40
|
+
Which color do like?
|
|
41
|
+
+ [Magenta # c:mag]
|
|
42
|
+
A wired choice ... # setColor_255_0_255
|
|
43
|
+
+ [Cyan # c:cya]
|
|
44
|
+
A think this will be a intense experience. # setColor_0_255_255
|
|
45
|
+
+ [Yellow # c:yel]
|
|
46
|
+
A delighting decision. # setColor_255_255_0
|
|
47
|
+
- Do You Like your decision?
|
|
48
|
+
+ [Yes] ->->
|
|
49
|
+
+ [No] -> Color
|
|
50
|
+
|
|
51
|
+
= Brightness
|
|
52
|
+
Do you like the Brightness level?
|
|
53
|
+
+ [A bit more please.]
|
|
54
|
+
~ brightness += 5
|
|
55
|
+
+ [A bit less.]
|
|
56
|
+
~ brightness -= 5
|
|
57
|
+
+ [The settings {is fine| is now to my compliance!}]
|
|
58
|
+
->->
|
|
59
|
+
- ~ SetBrightness(brightness)
|
|
60
|
+
->Brightness
|
|
61
|
+
|
|
62
|
+
= Background
|
|
63
|
+
>> SetBg({background})
|
|
64
|
+
How do you like this image?
|
|
65
|
+
+ {background < LIST_MAX(LIST_ALL(background))} [Mhe the next please.]
|
|
66
|
+
~ background++
|
|
67
|
+
+ {background > LIST_MIN(LIST_ALL(background))} [Can you show me the previous please?]
|
|
68
|
+
~ background--
|
|
69
|
+
+ [This is great]
|
|
70
|
+
->->
|
|
71
|
+
- -> Background
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
#include "catch.hpp"
|
|
2
|
+
|
|
3
|
+
#include "..//inkcpp/array.h"
|
|
4
|
+
|
|
5
|
+
using namespace ink;
|
|
6
|
+
using ink::runtime::internal::allocated_restorable_array;
|
|
7
|
+
|
|
8
|
+
typedef allocated_restorable_array<uint32_t> test_array;
|
|
9
|
+
|
|
10
|
+
SCENARIO("a restorable array can hold values", "[array]")
|
|
11
|
+
{
|
|
12
|
+
GIVEN("an empty array")
|
|
13
|
+
{
|
|
14
|
+
const ink::size_t length = 10;
|
|
15
|
+
test_array array = test_array(length, 0, ~0);
|
|
16
|
+
|
|
17
|
+
THEN("the default values should be zero")
|
|
18
|
+
{
|
|
19
|
+
for (ink::size_t i = 0; i < length; i++)
|
|
20
|
+
{
|
|
21
|
+
REQUIRE(array[i] == 0);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
WHEN("we assign a value")
|
|
26
|
+
{
|
|
27
|
+
array.set(3, 15);
|
|
28
|
+
|
|
29
|
+
THEN("the value should be set")
|
|
30
|
+
{
|
|
31
|
+
REQUIRE(array[3] == 15);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
THEN("the other values should be zero still")
|
|
35
|
+
{
|
|
36
|
+
for (ink::size_t i = 0; i < length; i++)
|
|
37
|
+
{
|
|
38
|
+
if (i == 3)
|
|
39
|
+
continue;
|
|
40
|
+
|
|
41
|
+
REQUIRE(array[i] == 0);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
SCENARIO("a restorable array can save/restore/forget", "[array]")
|
|
49
|
+
{
|
|
50
|
+
GIVEN("a saved array with a few values")
|
|
51
|
+
{
|
|
52
|
+
// Load up the array
|
|
53
|
+
test_array array = test_array(5, 0, ~0);
|
|
54
|
+
array.set(0, 0);
|
|
55
|
+
array.set(1, 1);
|
|
56
|
+
array.set(2, 2);
|
|
57
|
+
array.set(3, 3);
|
|
58
|
+
array.set(4, 4);
|
|
59
|
+
|
|
60
|
+
// Save its state
|
|
61
|
+
array.save();
|
|
62
|
+
|
|
63
|
+
WHEN("we change some values")
|
|
64
|
+
{
|
|
65
|
+
array.set(0, 10);
|
|
66
|
+
array.set(1, 11);
|
|
67
|
+
|
|
68
|
+
THEN("the new values should be returned")
|
|
69
|
+
{
|
|
70
|
+
REQUIRE(array[0] == 10);
|
|
71
|
+
REQUIRE(array[1] == 11);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
THEN("old values should be returned when not changed")
|
|
75
|
+
{
|
|
76
|
+
REQUIRE(array[2] == 2);
|
|
77
|
+
REQUIRE(array[3] == 3);
|
|
78
|
+
REQUIRE(array[4] == 4);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
WHEN("we restore the array")
|
|
82
|
+
{
|
|
83
|
+
array.restore();
|
|
84
|
+
|
|
85
|
+
THEN("we should get our old values back")
|
|
86
|
+
{
|
|
87
|
+
REQUIRE(array[0] == 0);
|
|
88
|
+
REQUIRE(array[1] == 1);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
WHEN("we save again")
|
|
92
|
+
{
|
|
93
|
+
array.save();
|
|
94
|
+
|
|
95
|
+
THEN("we shouldn't get the weird values")
|
|
96
|
+
{
|
|
97
|
+
REQUIRE(array[0] == 0);
|
|
98
|
+
REQUIRE(array[1] == 1);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
WHEN("we forget the save")
|
|
104
|
+
{
|
|
105
|
+
array.forget();
|
|
106
|
+
|
|
107
|
+
THEN("we should still have the new values")
|
|
108
|
+
{
|
|
109
|
+
REQUIRE(array[0] == 10);
|
|
110
|
+
REQUIRE(array[1] == 11);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
add_executable(inkcpp_test catch.hpp Main.cpp
|
|
2
|
+
Array.cpp
|
|
3
|
+
Pointer.cpp
|
|
4
|
+
Stack.cpp
|
|
5
|
+
Callstack.cpp
|
|
6
|
+
Restorable.cpp
|
|
7
|
+
Value.cpp
|
|
8
|
+
Globals.cpp
|
|
9
|
+
Lists.cpp
|
|
10
|
+
Tags.cpp
|
|
11
|
+
NewLines.cpp
|
|
12
|
+
FallbackFunction.cpp
|
|
13
|
+
LabelCondition.cpp
|
|
14
|
+
Observer.cpp
|
|
15
|
+
InkyJson.cpp
|
|
16
|
+
SpaceAfterBracketChoice.cpp
|
|
17
|
+
ThirdTierChoiceAfterBrackets.cpp
|
|
18
|
+
NoEarlyTags.cpp
|
|
19
|
+
ExternalFunctionsExecuteProperly.cpp
|
|
20
|
+
LookaheadSafe.cpp
|
|
21
|
+
EmptyStringForDivert.cpp
|
|
22
|
+
MoveTo.cpp
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
target_link_libraries(inkcpp_test PUBLIC inkcpp inkcpp_compiler inkcpp_shared)
|
|
26
|
+
target_include_directories(inkcpp_test PRIVATE ../shared/private/)
|
|
27
|
+
|
|
28
|
+
# For https://en.cppreference.com/w/cpp/filesystem#Notes
|
|
29
|
+
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
30
|
+
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.1")
|
|
31
|
+
target_link_libraries(inkcpp_test PRIVATE stdc++fs)
|
|
32
|
+
endif()
|
|
33
|
+
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
34
|
+
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "9.0")
|
|
35
|
+
target_link_libraries(inkcpp_test PRIVATE stdc++fs)
|
|
36
|
+
endif()
|
|
37
|
+
endif()
|
|
38
|
+
|
|
39
|
+
add_test(NAME UnitTests COMMAND $<TARGET_FILE:inkcpp_test>)
|
|
40
|
+
|
|
41
|
+
if ($ENV{INKLECATE})
|
|
42
|
+
set(INKLECATE_CMD $ENV{INKLECATE})
|
|
43
|
+
else()
|
|
44
|
+
set(INKLECATE_CMD "inklecate")
|
|
45
|
+
endif()
|
|
46
|
+
|
|
47
|
+
string(TOUPPER "${INKCPP_INKLECATE}" inkcpp_inklecate_upper)
|
|
48
|
+
if((inkcpp_inklecate_upper STREQUAL "ALL") OR (inkcpp_inklecate_upper STREQUAL "OS"))
|
|
49
|
+
if(UNIX AND NOT APPLE)
|
|
50
|
+
FetchContent_GetProperties(inklecate_linux)
|
|
51
|
+
if(inklecate_linux_POPULATED)
|
|
52
|
+
set(INKLECATE_CMD "${inklecate_linux_SOURCE_DIR}/inklecate")
|
|
53
|
+
else()
|
|
54
|
+
message(FATAL_ERROR "inklecate download is not provided, please check if the download failed.
|
|
55
|
+
You may set INCPP_INKLECATE=NONE and provide inkcleate via your PATH or the INKLECATE enviroment variable.
|
|
56
|
+
You can also disable tests altogether by setting INKCPP_TEST=OFF")
|
|
57
|
+
endif(inklecate_linux_POPULATED)
|
|
58
|
+
elseif(APPLE)
|
|
59
|
+
if(inklecate_mac_POPULATED)
|
|
60
|
+
set(INKLECATE_CMD "${inklecate_mac_SOURCE_DIR}/inklecate")
|
|
61
|
+
else()
|
|
62
|
+
message(FATAL_ERROR "inklecate download is not provided, please check if the download failed.
|
|
63
|
+
You may set INCPP_INKLECATE=NONE and provide inkcleate via your PATH or the INKLECATE enviroment variable.
|
|
64
|
+
You can also disable tests altogether by setting INKCPP_TEST=OFF")
|
|
65
|
+
endif(inklecate_mac_POPULATED)
|
|
66
|
+
elseif(MSYS OR MINGW OR WIN32 OR CYGWIN)
|
|
67
|
+
if(inklecate_windows_POPULATED)
|
|
68
|
+
set(INKLECATE_CMD "${inklecate_windows_SOURCE_DIR}/inklecate")
|
|
69
|
+
else()
|
|
70
|
+
message(FATAL_ERROR "inklecate download is not provided, please check if the download failed.
|
|
71
|
+
You may set INCPP_INKLECATE=NONE and provide inkcleate via your PATH or the INKLECATE enviroment variable.
|
|
72
|
+
You can also disable tests altogether by setting INKCPP_TEST=OFF")
|
|
73
|
+
endif(inklecate_windows_POPULATED)
|
|
74
|
+
else()
|
|
75
|
+
message(FATAL_ERROR "Current os could not be identified, therfore inklecate must be provided explicit for the tests to work
|
|
76
|
+
please set INKCPP_INKLECATE=NONE and provide inklecate via your PATH or the INKLECATE enviroment variables.
|
|
77
|
+
Alternatily disable tests by setting INKCPP_TEST=OFF.")
|
|
78
|
+
endif()
|
|
79
|
+
endif((inkcpp_inklecate_upper STREQUAL "ALL") OR (inkcpp_inklecate_upper STREQUAL "OS"))
|
|
80
|
+
|
|
81
|
+
set(INK_TEST_RESOURCE_DIR "${PROJECT_BINARY_DIR}/ink")
|
|
82
|
+
file(MAKE_DIRECTORY "${INK_TEST_RESOURCE_DIR}")
|
|
83
|
+
|
|
84
|
+
target_compile_definitions(inkcpp_test PRIVATE
|
|
85
|
+
INK_TEST_RESOURCE_DIR="${INK_TEST_RESOURCE_DIR}/")
|
|
86
|
+
|
|
87
|
+
file(GLOB JSON_FILES "${CMAKE_CURRENT_SOURCE_DIR}/ink/*.json")
|
|
88
|
+
file(COPY ${JSON_FILES} DESTINATION ${INK_TEST_RESOURCE_DIR})
|
|
89
|
+
|
|
90
|
+
file(GLOB INK_FILES "${CMAKE_CURRENT_SOURCE_DIR}/ink/*.ink")
|
|
91
|
+
foreach(INK_FILE IN LISTS INK_FILES)
|
|
92
|
+
get_filename_component(INK_FILENAME ${INK_FILE} NAME_WE)
|
|
93
|
+
set(output "${INK_TEST_RESOURCE_DIR}/${INK_FILENAME}.bin")
|
|
94
|
+
add_custom_command(
|
|
95
|
+
OUTPUT ${output}
|
|
96
|
+
COMMAND $<TARGET_FILE:inkcpp_cl> -o "${output}" --inklecate "${INKLECATE_CMD}" "${INK_FILE}"
|
|
97
|
+
DEPENDS ${INK_FILE}
|
|
98
|
+
COMMENT "Compile test ink file '${INK_FILENAME}.ink' -> '${output}'"
|
|
99
|
+
)
|
|
100
|
+
list(APPEND INK_OUT_FILES ${output})
|
|
101
|
+
endforeach()
|
|
102
|
+
target_sources(inkcpp_test PRIVATE ${INK_OUT_FILES})
|
|
103
|
+
|
|
104
|
+
if(TARGET inkcpp_c)
|
|
105
|
+
file(GLOB TEST_FILES "${PROJECT_SOURCE_DIR}/inkcpp_c/tests/*.c")
|
|
106
|
+
foreach(TEST_FILE IN LISTS TEST_FILES)
|
|
107
|
+
get_filename_component(TEST_NAME ${TEST_FILE} NAME_WE)
|
|
108
|
+
add_executable(${TEST_NAME} ${TEST_FILE})
|
|
109
|
+
target_link_libraries(${TEST_NAME} PRIVATE inkcpp_c)
|
|
110
|
+
target_compile_definitions(${TEST_NAME} PRIVATE
|
|
111
|
+
INK_TEST_RESOURCE_DIR="${INK_TEST_RESOURCE_DIR}/")
|
|
112
|
+
add_test(
|
|
113
|
+
NAME ${TEST_NAME}
|
|
114
|
+
COMMAND $<TARGET_FILE:${TEST_NAME}>
|
|
115
|
+
)
|
|
116
|
+
endforeach()
|
|
117
|
+
endif(TARGET inkcpp_c)
|