@@ -46,6 +46,62 @@ def cli_greetUser( | |||||
return c | return c | ||||
#} | #} | ||||
# Ask user to select second item to have a pair of selected items | |||||
@llm_by_value | |||||
def cli_promptSecondItemSelection( | |||||
c: memory_Context | |||||
) -> memory_Context: | |||||
if ( | |||||
c.recentField == "selectedItems" and | |||||
len(c.selectedItems) == 1 | |||||
): | |||||
c.outputPromptSelection = "Select the second item now:" | |||||
c.recentField = "outputPromptSelection" | |||||
return c | |||||
#} | |||||
c.recentField = "none" | |||||
return c | |||||
#} | |||||
# Report matched items | |||||
@llm_by_value | |||||
def cli_reportMatchedItems( | |||||
c: memory_Context | |||||
) -> memory_Context: | |||||
if ( | |||||
c.recentField == "hiddenItems" | |||||
): | |||||
c.outputMatchedItems = "Items matched! Go on:" | |||||
c.recentField = "outputMatchedItems" | |||||
return c | |||||
#} | |||||
c.recentField = "none" | |||||
return c | |||||
#} | |||||
# Select item | |||||
# | |||||
# Conditions: | |||||
# 1. Id is digit | |||||
@llm_by_value | |||||
def cli_selectItem( | |||||
c: memory_Context | |||||
) -> memory_Context: | |||||
if ( | |||||
c.recentField == "input" and | |||||
c.input.isdigit() | |||||
): | |||||
# CLI ids start with 1 while memory module has ids starting with 0 | |||||
# Convert CLI id to memory id | |||||
c.selectedId = int(c.input) - 1 | |||||
c.recentField = "selectedId" | |||||
return c | |||||
#} | |||||
c.recentField = "none" | |||||
return c | |||||
#} | |||||
# Show help (aka commands) | # Show help (aka commands) | ||||
# | # | ||||
# Conditions: | # Conditions: | ||||
@@ -77,63 +133,6 @@ def cli_showHelp( | |||||
return c | return c | ||||
#} | #} | ||||
## Select item | |||||
## | |||||
## Conditions: | |||||
## 1. Id is digit, in bounds and not hidden | |||||
#@llm_by_value | |||||
#def cli_selectItem( | |||||
# c: cli_Context | |||||
#) -> cli_Context: | |||||
# if ( | |||||
# c.input.isdigit() | |||||
# ): | |||||
# # User ids start with 1 while memory module has ids starting with 0 | |||||
# # Convert cli item id to memory item id | |||||
# c.cMemory.selectedId = int(c.input) - 1 | |||||
# c.cMemory = memory_selectItem(c.cMemory) | |||||
# c.recentField = "cMemory" | |||||
# return c | |||||
# #} | |||||
# c.recentField = "none" | |||||
# return c | |||||
##} | |||||
# | |||||
## Ask user to select another item to have a pair of selected items | |||||
#@llm_by_value | |||||
#def cli_shouldPromptSelection( | |||||
# c: cli_Context | |||||
#) -> cli_Context: | |||||
# if ( | |||||
# c.recentField == "cMemory" and | |||||
# c.cMemory.recentField == "selectedItems" and | |||||
# len(c.cMemory.selectedItems) == 1 | |||||
# ): | |||||
# c.outputPromptSelection = "Select the second item now:" | |||||
# c.recentField = "outputPromptSelection" | |||||
# return c | |||||
# #} | |||||
# c.recentField = "none" | |||||
# return c | |||||
##} | |||||
# | |||||
## Report matched items | |||||
#@llm_by_value | |||||
#def cli_shouldReportMatchedItems( | |||||
# c: cli_Context | |||||
#) -> cli_Context: | |||||
# if ( | |||||
# c.recentField == "cMemory" and | |||||
# c.cMemory.recentField == "hiddenItems" | |||||
# ): | |||||
# c.outputMatchedItems = "Items matched! Go on:" | |||||
# c.recentField = "outputMatchedItems" | |||||
# return c | |||||
# #} | |||||
# c.recentField = "none" | |||||
# return c | |||||
##} | |||||
# | |||||
## Report mismatched items | ## Report mismatched items | ||||
#@llm_by_value | #@llm_by_value | ||||
#def cli_shouldReportMismatchedItems( | #def cli_shouldReportMismatchedItems( | ||||
@@ -1,5 +0,0 @@ | |||||
#include "cli_Context.h" | |||||
cli_Context cli_createContext() { | |||||
return cli_Context(); | |||||
} |
@@ -1,17 +0,0 @@ | |||||
#include <map> | |||||
#include <string> | |||||
#include <vector> | |||||
#ifndef cli_Context_HEADER | |||||
#define cli_Context_HEADER | |||||
struct cli_Context { | |||||
std::string input = ""; | |||||
std::string outputGreeting = ""; | |||||
std::string outputHelp = ""; | |||||
std::string recentField = "none"; | |||||
}; | |||||
cli_Context cli_createContext(); | |||||
#endif // cli_Context_HEADER |
@@ -1,12 +0,0 @@ | |||||
class cli_Context: | |||||
def __init__(self): | |||||
self.cMemory = None | |||||
self.input = "" | |||||
self.outputGreeting = "" | |||||
self.outputHelp = "" | |||||
self.recentField = "none" | |||||
self.outputMatchedItems = "" | |||||
self.outputMismatchedItems = "" | |||||
def cli_createContext(): | |||||
return cli_Context() |
@@ -72,6 +72,61 @@ def cli_test_greetUser( | |||||
return "ERR: cli_greetUser" | return "ERR: cli_greetUser" | ||||
#} | #} | ||||
def cli_test_promptSecondItemSelection( | |||||
) -> str: | |||||
c = memory_createContext() | |||||
c.input = "1" | |||||
c.recentField = "input" | |||||
c = cli_selectItem(c) | |||||
c = memory_selectItem(c) | |||||
c = cli_promptSecondItemSelection(c) | |||||
if ( | |||||
c.recentField == "outputPromptSelection" | |||||
): | |||||
return "OK: cli_promptSecondItemSelection" | |||||
#} | |||||
return "ERR: cli_promptSecondItemSelection" | |||||
#} | |||||
def cli_test_reportMatchedItems( | |||||
) -> str: | |||||
c = memory_createContext() | |||||
c.playfieldSize = 2 | |||||
c.recentField = "playfieldSize" | |||||
c = memory_generateConstPlayfield(c) | |||||
c.input = "1" | |||||
c.recentField = "input" | |||||
c = cli_selectItem(c) | |||||
c = memory_selectItem(c) | |||||
c.input = "2" | |||||
c.recentField = "input" | |||||
c = cli_selectItem(c) | |||||
c = memory_selectItem(c) | |||||
c = memory_hideMatchingItems(c) | |||||
c = cli_reportMatchedItems(c) | |||||
if ( | |||||
c.recentField == "outputMatchedItems" | |||||
): | |||||
return "OK: cli_reportMatchedItems" | |||||
#} | |||||
return "ERR: cli_reportMatchedItems" | |||||
#} | |||||
def cli_test_selectItem( | |||||
) -> str: | |||||
c = memory_createContext() | |||||
c.input = "1" | |||||
c.recentField = "input" | |||||
c = cli_selectItem(c) | |||||
if ( | |||||
c.recentField == "selectedId" and | |||||
c.selectedId == 0 | |||||
): | |||||
return "OK: cli_selectItem" | |||||
#} | |||||
return "ERR: cli_selectItem" | |||||
#} | |||||
def cli_test_showHelp_h( | def cli_test_showHelp_h( | ||||
) -> str: | ) -> str: | ||||
c = memory_createContext() | c = memory_createContext() | ||||
@@ -100,36 +155,7 @@ def cli_test_showHelp_help( | |||||
return "ERR: cli_showHelp_help" | return "ERR: cli_showHelp_help" | ||||
#} | #} | ||||
#def cli_test_selectItem( | |||||
#) -> str: | |||||
# c = cli_createContext() | |||||
# c.cMemory = memory_createContext() | |||||
# c.input = "1" | |||||
# c = cli_selectItem(c) | |||||
# if ( | |||||
# c.recentField == "cMemory" and | |||||
# c.cMemory.recentField == "selectedItems" | |||||
# ): | |||||
# return "OK: cli_selectItem" | |||||
# #} | |||||
# return "ERR: cli_selectItem" | |||||
##} | |||||
# | |||||
#def cli_test_shouldPromptSelection( | |||||
#) -> str: | |||||
# c = cli_createContext() | |||||
# c.cMemory = memory_createContext() | |||||
# c.input = "1" | |||||
# c = cli_selectItem(c) | |||||
# c = cli_shouldPromptSelection(c) | |||||
# if ( | |||||
# c.recentField == "outputPromptSelection" | |||||
# ): | |||||
# return "OK: cli_shouldPromptSelection" | |||||
# #} | |||||
# return "ERR: cli_shouldPromptSelection" | |||||
##} | |||||
# | |||||
#def cli_test_shouldReportIvalidItemSelection_outOfBoundsMin( | #def cli_test_shouldReportIvalidItemSelection_outOfBoundsMin( | ||||
#) -> str: | #) -> str: | ||||
# c = cli_createContext() | # c = cli_createContext() | ||||
@@ -20,15 +20,23 @@ print(cli_test_exit_quit()) | |||||
print(cli_test_greetUser()) | print(cli_test_greetUser()) | ||||
print(cli_test_showHelp_h()) | print(cli_test_showHelp_h()) | ||||
print(cli_test_showHelp_help()) | print(cli_test_showHelp_help()) | ||||
#print(cli_test_selectItem()) | |||||
#print(cli_test_shouldPromptSelection()) | |||||
##print(cli_test_shouldReportIvalidItemSelection_outOfBoundsMin()) | |||||
print(cli_test_selectItem()) | |||||
print(cli_test_promptSecondItemSelection()) | |||||
print(cli_test_reportMatchedItems()) | |||||
ctrl = Controller(memory_createContext()) | ctrl = Controller(memory_createContext()) | ||||
ctrl.registerFunction(cli_exit) | ctrl.registerFunction(cli_exit) | ||||
ctrl.registerFunction(cli_greetUser) | ctrl.registerFunction(cli_greetUser) | ||||
ctrl.registerFunction(cli_promptSecondItemSelection) | |||||
ctrl.registerFunction(cli_reportMatchedItems) | |||||
ctrl.registerFunction(cli_selectItem) | |||||
ctrl.registerFunction(cli_showHelp) | ctrl.registerFunction(cli_showHelp) | ||||
ctrl.registerFunction(memory_deselectMismatchedItems) | |||||
ctrl.registerFunction(memory_detectVictory) | |||||
ctrl.registerFunction(memory_generateConstPlayfield) | |||||
ctrl.registerFunction(memory_hideMatchingItems) | |||||
ctrl.registerFunction(memory_selectItem) | |||||
def printOutput(c): | def printOutput(c): | ||||
if c.recentField.startswith("output"): | if c.recentField.startswith("output"): | ||||
@@ -37,18 +45,8 @@ ctrl.registerCallback(printOutput) | |||||
#ctrl.registerCallback(lambda c: print(f"ИГР App.dbg ctx: '{c}'")) | #ctrl.registerCallback(lambda c: print(f"ИГР App.dbg ctx: '{c}'")) | ||||
ctrl.registerFieldCallback("exit", lambda c: sys.exit(0)) | ctrl.registerFieldCallback("exit", lambda c: sys.exit(0)) | ||||
# | |||||
#c = shell_createContext() | |||||
#c.cCLI = cli_createContext() | |||||
#c.cCLI.cMemory = memory_createContext() | |||||
#c.cCLI.cMemory.playfieldSize = 2 | |||||
#c.cCLI.cMemory = memory_generateConstPlayfield(c.cCLI.cMemory) | |||||
# | |||||
#c = shell_launch(c) | |||||
#print(c.output) | |||||
# | |||||
ctrl.set("didLaunch", True) | ctrl.set("didLaunch", True) | ||||
ctrl.set("playfieldSize", 2) | |||||
for line in sys.stdin: | for line in sys.stdin: | ||||
ln = line.rstrip() | ln = line.rstrip() | ||||
@@ -8,6 +8,7 @@ class memory_Context: | |||||
self.outputHelp = "" | self.outputHelp = "" | ||||
self.outputMatchedItems = "" | self.outputMatchedItems = "" | ||||
self.outputMismatchedItems = "" | self.outputMismatchedItems = "" | ||||
self.outputPromptSelection = "" | |||||
self.playfieldItems = {} | self.playfieldItems = {} | ||||
self.playfieldSize = 0 | self.playfieldSize = 0 | ||||
self.recentField = "none" | self.recentField = "none" | ||||
@@ -1,5 +0,0 @@ | |||||
#include "shell_Context.h" | |||||
shell_Context shell_createContext() { | |||||
return shell_Context(); | |||||
} |
@@ -1,18 +0,0 @@ | |||||
#include <map> | |||||
#include <string> | |||||
#include <vector> | |||||
#include "cli_Context.h" | |||||
#ifndef shell_Context_HEADER | |||||
#define shell_Context_HEADER | |||||
struct shell_Context { | |||||
cli_Context cCLI; | |||||
bool exit = false; | |||||
std::string input = ""; | |||||
std::string output = ""; | |||||
}; | |||||
shell_Context shell_createContext(); | |||||
#endif // shell_Context_HEADER |
@@ -1,9 +0,0 @@ | |||||
class shell_Context: | |||||
def __init__(self): | |||||
self.cCLI = None | |||||
self.exit = False | |||||
self.input = "" | |||||
self.output = "" | |||||
def shell_createContext(): | |||||
return shell_Context() |