@@ -164,8 +164,11 @@ def load_file(self, filename):
164164 def stream (self , code ):
165165 """Stream in RiveScript source code dynamically.
166166
167- `code` should be an array of lines of RiveScript code."""
167+ `code` can either be a string containing RiveScript code or an array
168+ of lines of RiveScript code."""
168169 self ._say ("Streaming code." )
170+ if type (code ) in [str , unicode ]:
171+ code = code .split ("\n " )
169172 self ._parse ("stream()" , code )
170173
171174 def _parse (self , fname , code ):
@@ -1144,8 +1147,10 @@ def _sort_trigger_set(self, triggers):
11441147 for ip in sorted (track .keys ()):
11451148 self ._say ("ip=" + str (ip ))
11461149 for kind in ['atomic' , 'option' , 'alpha' , 'number' , 'wild' ]:
1147- for i in sorted (track [ip ][kind ], reverse = True ):
1148- running .extend (track [ip ][kind ][i ])
1150+ for wordcnt in sorted (track [ip ][kind ], reverse = True ):
1151+ # Triggers with a matching word count should be sorted
1152+ # by length, descending.
1153+ running .extend (sorted (track [ip ][kind ][wordcnt ], key = len , reverse = True ))
11491154 running .extend (sorted (track [ip ]['under' ], key = len , reverse = True ))
11501155 running .extend (sorted (track [ip ]['pound' ], key = len , reverse = True ))
11511156 running .extend (sorted (track [ip ]['star' ], key = len , reverse = True ))
0 commit comments