11
name
"Generic Coder"
/
eval-command
(method (inline)
    (if (= player this)
        (player:tell (+ "--> "
                        (tostr ((compile (+ "(method () "
                                (index 3 inline)
                                            "]\n"))))
                        "\n"))))
/
program-syntax
(method (inline)
    (if (= player this)
       (tell "Syntax: @program <variable name> on <object>\n")))
/
start-program
(method (objname pname)
   (if (= player this)
      (if (set compile-onto (std-match objname))
         (var prop
	   (set prop (+ pname "-txt")
            (tell (+ ">> Programming " prop " from scratch\n"))
            (enter-edit (tosym prop) 'compile-program '())
            1))
         (tell "I don't see that here\n"))))
/
program-cmd
(method (inline)
  (if (= player this)
    (if (= (index 4 inline) "on")
      (start-program (index 5 inline) (index 3 inline))
      (if (= (index 4 inline) "=")
         (start-program (index 3 inline) (index 5 inline))
         (program-syntax inline)))))
/
compile-program
(method (saved-to)
   (if (write-ok? caller)
     (begin
       (tell (+ ">> compiling '" (tostr saved-to) "' into variable '"
              (before "-TXT" (tostr saved-to)) "' :\n"))
       (var temp
         (if (set temp (compile (eval saved-to)))
           (if (compile-onto:set-variable
                  (tosym (before "-TXT" (tostr saved-to)))
                  temp)
	      (begin
                (tell ">> compilation successful\n")
                (rmvar saved-to))
              (tell (+ ">> unable to compile onto object "
                       (tostr compile-onto)
                       "\n>> still in editor:  .xit to abort edit\n"))))))))
/
edit-syntax
(method (inline)
  (if (= player this)
    (tell-line "Syntax:  @edit <variable name> on <object>")))
/
start-edit
(method (objname pname)
   (if (= player this)
      (if (set compile-onto (std-match objname))
         (var prop
	   (set prop (+ pname "-txt")
            (tell (+ ">> Editing existing version of " prop " at line one:\n"))
            (enter-edit (tosym prop) 'compile-program
                 (explode "\n" (compile-onto:list-method (tosym pname))))
            1))
         (tell "I don't see that here\n"))))
/
edit-cmd
(method (inline)
  (if (= player this)
    (if (= (index 3 inline) "on")
      (start-edit (index 4 inline) (index 2 inline))
      (if (= (index 3 inline) "=")
         (start-edit (index 2 inline) (index 4 inline))
         (edit-syntax inline)))))
/
mutate-syntax
(method (unused)
  (if (= player this)
     (tell "Syntax:  @mutate <object> to <object>\n")))
/
mutate-cmd
(method (inline)
  (if (= player this)
    (var match (var match2
      (if (set match (std-match (index 2 inline)))
        (if (set match2 (std-match (index 4 inline)))
          (ignore E_PERM
            (if (#0:set-parents match match2)
               (tell "Object has been mutated\n")
               (tell (+ "You cannot mutate " (index 2 inline)
                           " to " (index 4 inline) "\n"))))
              (tell (+ "I don't see " (index 4 inline) " here\n")))
            (tell (+ "I don't see " (index 2 inline) " here\n")))))
        (mutate-syntax)))
/
addcommand-syntax
(method (in)
  (if (= player this)
    (tell "Syntax:  @addcommand <symbol> on <object> with <template>\n")))
/
addcommand-creator
(method (inline)
  (if (= player this)
    (var obj
      (if (set obj (std-match (index 4 inline)))
        (var cmd-list
          (if (= (typeof (set cmd-list (compile (index 6 inline))))
                 'LIST)
            (if (obj:add-command cmd-list (tosym (index 2 inline)))
              (tell "Command added\n")
              (tell "Unable to add command\n"))
            (tell "Command must be in the form of a list\n")))
         (tell (+ "I don't see " (index 4 inline) " here.\n"))))))
/
rmcommand-syntax
(method (unused)
  (if (= player this)
    (tell "Syntax:  @rmcommand on <object> matching <line>\n")))
/
rmcommand-cmd
(method (inline)
  (if (= player this)
    (var obj
      (if (set obj (std-match (index 3 inline)))
        (if (obj:remove-command (index 5 inline))
          (tell "Command removed\n")
          (tell "That line does not match a command you can remove\n"))
        (tell "I can't find that object here\n")))))
/
rmvariable-syntax
(method (unused)
  (if (= player this)
    (tell "Syntax:  @rmvariable <symbol> from <object>\n")))
/
rmvariable-cmd
(method (inline)
  (if (= player this)
    (if (= (index 4 inline) "=")
      (rmvar-helper (index 3 inline) (index 5 inline))
      (rmvar-helper (index 5 inline) (index 3 inline)))))
/
rmvar-helper
(method (obj prop)
  (if (set obj (std-match obj))
     (if (obj:rm-variable (tosym prop))
        (tell "Variable removed\n")
        (tell "You cannot remove that variable\n"))
     (tell "I can't find that object\n")))
/
/
'("@prog" (or "ram" ""))
program-syntax
'("@prog" (or "ram" "") (or (before "=") (before " on ") "") (or "=" "on" "") SOME)
program-cmd
'("@edit")
edit-syntax
'("@edit" (or (before "=") (before " on ") "") (or "=" "on" "") SOME)
edit-cmd
'("eval" (or "uate" "") REST)
eval-command
'(";" "" SOME)
eval-command
'("@list")
mutate-syntax
'("@mutate" (or (before "=") (before " to ")) (or "=" "to") REST)
mutate-cmd
'("@rmvar" (or "iable" "") (or (before "=") (before " from ")) (or "=" " from ") SOME)
rmvariable-cmd
'("@rmvar" (or "iable" ""))
rmvariable-syntax
'("@addcommand")
addcommand-syntax
'("@addcommand" WORD " on " (before " with ") "with" SOME)
addcommand-creator
'("@rmcommand" " on " (before "matching") "matching" SOME)
rmcommand-cmd
'("@rmcommand")
rmcommand-syntax
/+++++++++ end of object #12 ... no lines after this ++++++++++