Михаил Капелько 7 months ago
parent
commit
b361d074dc
4 changed files with 102 additions and 14 deletions
  1. +50
    -14
      v4/cli.py
  2. +47
    -0
      v4/cli_test.py
  3. +3
    -0
      v4/main.py
  4. +2
    -0
      v4/memory.py

+ 50
- 14
v4/cli.py View File

@@ -12,41 +12,77 @@ def cli_greetUser(
return c
#}

# Ask user to select another item to have a pair of selected items
# Select item
#
# Conditions:
# 1. Id is digit, in bounds and not hidden
@llm_by_value
def cli_shouldPromptSelection(
def cli_selectItem(
c: cli_Context
) -> cli_Context:
if (
c.recentField == "cMemory" and
c.cMemory.recentField == "selectedItems" and
len(c.cMemory.selectedItems) == 1
if not (
c.input.isdigit()
):
c.outputPromptSelection = "Select the second item now:"
c.recentField = "outputPromptSelection"
c.recentField = "none"
return c
#}

int(c.input) >= 1 and
int(c.input) <= c.cMemory.playfieldSize * 2 and
int(c.input) not in c.cMemory.hiddenItems
):
# 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
#}

# Select item
# Ask user to select another item to have a pair of selected items
@llm_by_value
def cli_selectItem(
def cli_shouldPromptSelection(
c: cli_Context
) -> cli_Context:
if (
c.input.isdigit()
c.recentField == "cMemory" and
c.cMemory.recentField == "selectedItems" and
len(c.cMemory.selectedItems) == 1
):
id = int(c.input)
c.cMemory = memory_selectItem(c.cMemory)
c.recentField = "cMemory"
c.outputPromptSelection = "Select the second item now:"
c.recentField = "outputPromptSelection"
return c
#}
c.recentField = "none"
return c
#}

# Report selection of invalid item ids
#
# Conditions:
# 1. Index out of bounds: less than minimum
# 2. Index out of bounds: greater than maximum
# 3. Item is already hidden
#@llm_by_value
#def cli_shouldReportInvalidItemSelection(
# 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
##}

# Show help (aka commands)
@llm_by_value
def cli_showHelp(


+ 47
- 0
v4/cli_test.py View File

@@ -1,5 +1,7 @@
from cli import *
from cli_Context import *
from memory import *
from memory_Context import *

def cli_test_greetUser(
) -> str:
@@ -13,6 +15,51 @@ def cli_test_greetUser(
return "ERR: cli_greetUser"
#}

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(
) -> str:
c = cli_createContext()
c.cMemory = memory_createContext()
c.input = "0"
c = cli_selectItem(c)
c = cli_shouldReportInvalidItemSelection(c)
if (
c.recentField == "outputInvalidItemSelection"
):
return "OK: cli_shouldReportInvalidItemSelection"
#}
return "ERR: cli_shouldReportInvalidItemSelection"
#}

def cli_test_showHelp_h(
) -> str:
c = cli_createContext()


+ 3
- 0
v4/main.py View File

@@ -14,6 +14,9 @@ print(memory_test_shouldDetectVictory())
print(memory_test_shouldHideMatchingItems())

print(cli_test_greetUser())
print(cli_test_selectItem())
print(cli_test_shouldPromptSelection())
print(cli_test_shouldReportIvalidItemSelection_outOfBoundsMin())
print(cli_test_showHelp_h())
print(cli_test_showHelp_help())



+ 2
- 0
v4/memory.py View File

@@ -6,6 +6,8 @@ from llm import *
########

# Generate constant playfield
#
# Both ids and group ids start with 0
@llm_by_value
def memory_generateConstPlayfield(
c: memory_Context


Loading…
Cancel
Save