Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

87
LINES

< > BotCompany Repo | #1026824 // Parrot 1.2 [with API]

JavaX source code (Dynamic Module) [tags: use-pretranspiled] - run with: Stefan's OS

Uses 911K of libraries. Click here for Pure Java version (16421L/91K).

1  
!7
2  
3  
cmodule TrainableBot > DynSockPuppetConvo {
4  
  delegate Post to JChatConvo.
5  
  
6  
  LS suggestions;
7  
  S functions;
8  
  transient SingleComponentPanel scpSuggestions;
9  
  transient FunctionsLoader loader;
10  
  transient Thread playThread;
11  
  
12  
  start {
13  
    onPostAdded.add(post -> startPlaying());
14  
    loadIfNotLoaded();
15  
  }
16  
  
17  
  visual jvsplit(super,
18  
    withMargin(jhsplit(
19  
      jCenteredSection("Suggestions", scpSuggestions = singleComponentPanel(renderSuggestions())),
20  
      northAndCenterWithMargin(
21  
        jrightaligned(jbutton("Load", rThreadEnter loadFunctions)),
22  
        dm_textAreaAsSection functions()))));
23  
  
24  
  JComponent renderSuggestions() {
25  
    ret ele_renderSuggestions(null, suggestions,
26  
      sayAction := (IVF1<S>) s -> { addPost(s, true); dm_say(s); },
27  
      submitAction := (IVF1<S>) s -> { addPost(s, false); dm_say(s); });
28  
  }
29  
  
30  
  void showSuggestions(Cl<S> suggestions) {
31  
    setField(suggestions := asList(suggestions));
32  
    showSuggestions();
33  
  }
34  
  
35  
  void showSuggestions {
36  
    scpSuggestions?.setComponent(renderSuggestions());
37  
  }
38  
  
39  
  void loadFunctions {
40  
    dispose loader;
41  
    loader = new FunctionsLoader(filter isStandardFunction(tlftj(functions)));
42  
    loader.loadFunctionsParams = litparams(header := "set flag NoGenericFunctions.");
43  
    loader.onLoaded(r startPlaying);
44  
    loader.loadInBackground();
45  
  }
46  
  
47  
  void startPlaying enter {
48  
    if (loader == null) loadFunctions();
49  
    cancelThread(playThread);
50  
    playThread = null;
51  
    playThread = startThread(rEnter play);
52  
  }
53  
  
54  
  void play {
55  
    //showSuggestions(ll("test " + now()));
56  
    new LinkedHashSet<S> l;
57  
    S input = lastInput();
58  
    for ping (S f : loader.functions) {
59  
      addIfInstanceOf(l, S, callBlobFunction(f));
60  
      ping();
61  
      if (nempty(input))
62  
        addIfInstanceOf(l, S, callBlobFunction(f, input));
63  
    }
64  
    showSuggestions(l);
65  
  }
66  
  
67  
  // API
68  
  
69  
  void loadIfNotLoaded() { if (loader == null) loadFunctions(); }
70  
  Set<S> loadedFunctions() { ret loader.functions; }
71  
  S maxNum() { ret firstIntegerString(tlftj(functions)); }
72  
  O blob() { ret loader.blob; }
73  
  
74  
  O callBlobFunction(S fname, O... args) {
75  
    if (canCallWithVarargs(module(), fname, args))
76  
      ret callWithVarargs(module(), fname ,args);
77  
    else
78  
      ret callOpt(loader.blob, fname, args);
79  
  }
80  
  
81  
  LPairS userBotPairs() { ret chatConvo_userBotPairs(posts); }
82  
  LS rawLines() { ret collect html(posts); }
83  
  S firstLine() { ret getString html(first(posts)); }
84  
  int numLines() { ret l(posts); }
85  
  
86  
  void suggest(S s) { showSuggestions(ll(s)); }
87  
}

Author comment

Began life as a copy of #1026808

download  show line numbers  debug dex  old transpilations   

Travelled to 7 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt, xrpafgyirdlv

No comments. add comment

Snippet ID: #1026824
Snippet name: Parrot 1.2 [with API]
Eternal ID of this version: #1026824/16
Text MD5: 07874683d6681f8c3c3d654377c88043
Transpilation MD5: 559f691a0719d3fc177e7b5d0ad49bce
Author: stefan
Category: javax / stefan's os
Type: JavaX source code (Dynamic Module)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2020-01-26 15:58:52
Source code size: 2616 bytes / 87 lines
Pitched / IR pitched: No / No
Views / Downloads: 182 / 5092
Version history: 15 change(s)
Referenced in: [show references]