Commit Graph

26 Commits

Author SHA1 Message Date
Steve Howell
e60f148a3e Clean up double negatives in message_matches_search_term
(imported from commit 677bb3a76d3404f9899498777e7f1169947422c7)
2014-01-30 17:19:50 -05:00
Steve Howell
189743e813 Extract message_matches_search_term in filter.js.
This diff really just moves code; it's a trivial function extraction.

(imported from commit 8ff82b089e49645a6c6034152a9fc9cd83da0737)
2014-01-30 16:46:51 -05:00
Steve Howell
3a412b35e1 Use _.all() in Filter._build_predicate.
By using _.all() instead of a for loop, we avoid a tiny bit of
confusing between "break" being for a switch statement and being for
the loop.

(imported from commit cd6e7ff788b50f4dadce93e7f0efcb381bc59270)
2014-01-30 16:45:47 -05:00
Steve Howell
de7708ed6e Handle id:<msg id> searches with multiple terms.
If you do a search like id:5 topic:foo and message #5
does not have the topic "foo", we now return zero results.

(imported from commit 8121fac1dbd79024c51af1f310d831dab9242e36)
2014-01-30 15:57:32 -05:00
Steve Howell
53027b71a4 Use operator/operand inside the Filter instance methods.
Avoid tuples in the methods inside Filter.prototype.

(imported from commit beed799e767d9645735a2bd4eefb5d431c04f17f)
2014-01-30 12:53:08 -05:00
Steve Howell
b18307b667 Start using operator/operands internally in Filter class.
By having Filter.canonicalize_tuple() call filter_term(),
we make it so that Filter objects get operator/operand
fields in their terms when we initialize this.

This mostly caused test breakage for tests that were doing
assert.deepEqual; now we just check to make sure that the
field we need are there.

(imported from commit 63b2516dc72edeb11e76a1fa4442570b9c605baa)
2014-01-30 12:53:08 -05:00
Steve Howell
12626ead66 Populate terms with named fields in filter_term().
Consumers of Filter.parse() can now reference
search term parts like so: term.operand, term.operator

(Legacy code can still use term[0] and term[1].)

(imported from commit 06d0da65f13f1eb7e3ba8eac0e69448aab2735ab)
2014-01-30 12:53:08 -05:00
Steve Howell
fdd57f5abe Extract filter_term() in filter.js
(imported from commit 142464bb02817108726f9c118459c38e55b96bbf)
2014-01-30 12:53:07 -05:00
Tim Abbott
2276c6e524 Add support for loading a narrows-only embedded Zulip window.
Features:
* Only shows messages in the narrow
* New messages in the narrow will arrive as they are sent
* Works even for streams you're not subscribed to
* Automatically subscribes you to a stream on send
* Doesn't update your pointer
* All searches etc. automatically have the narrow added

(imported from commit 2e12b76849f6ca0f53dda5985dad477a04f7bbac)
2013-12-16 17:46:02 -05:00
acrefoot
6460ecdc18 Show @-mentioned messages even for muted streams
(imported from commit 8a32599869c9f510d9c42f4c17b16d1e662e7669)
2013-12-09 20:09:11 -05:00
Steve Howell
70b0e73a24 Support sender:me and pm-with:me search syntax.
We convert sender:me to sender:steve@zulip.com at parsing time,
so users will see the canonicalization in the search bar.  Likewise
for pm-with.

(imported from commit aa9951f13d4633cfef85f03e5486d607fdef414f)
2013-12-05 13:49:04 -05:00
Tim Abbott
40b6761e37 Fix short-circuiting of filters with certain narrow keywords.
(imported from commit 663646bb6eea921c1f8f845ede94fb5284d4543a)
2013-11-25 14:00:28 -05:00
Leo Franchi
0d6ad56c29 Decode operand in filter.js in operator-aware way
When decoding an operand, a + can be converted to a space
only if the operand is not an email address.

(imported from commit 08fc36a579bbe6409137c60c0fa9579fe3ab2c43)
2013-10-02 12:11:15 -04:00
Leo Franchi
41b286232d Allow filtering to alerted messages with is:alerted
(imported from commit 99834f1ee1b9b2e0f5c7427afa1494bf404e3626)
2013-09-05 10:18:41 -04:00
Steve Howell
fdc589de3a Extract mit_edu_topic_name_match() in filter.js
(imported from commit e062cf7e987ca5af20417fe49785efa35574f628)
2013-09-04 10:39:00 -04:00
Steve Howell
26a8aee2d0 Extracted mit_edu_stream_name_match() in filter.js.
The original code was buried inside a switch statement inside
a for statement.

(imported from commit 768c4ee8596cb63b2caa14c5b113cc867db90293)
2013-09-04 10:38:59 -04:00
Steve Howell
3239efd864 Simplify MIT regex code and harden tests
(imported from commit 96c988fb8c90d04dd4bcd7d2bbc04f1b1c8d8cb7)
2013-08-23 13:32:10 -04:00
Steve Howell
72b070be14 Remove dead code in Filter.parse
(imported from commit 59b56ab864c8af52cb2d637b965b5f7161c34110)
2013-08-23 12:56:08 -04:00
Steve Howell
dca1ffdf96 [bugfix] Restore toString() call in Filter.unparse().
I regressed this recently, thinking that all our operators are
strings, but I forgot about the "near:" operator used in the
"Narrow messages around this time" feature.  The user facing
symptom was that the search bar showed up empty instead
of saying near:50, which might actually be the better
behavior, but it certainly was not intentional. :)

(imported from commit fcb93cecbe9a052bb9bc1af7fcac5aecaba5aafb)
2013-08-22 14:55:43 -04:00
Steve Howell
c4d598b36e Move parse/unparse from narrow to Filter.
I'm trying to move well-isolated methods out of narrow.js, so that
narrow.js is more strongly focused on UI/ajax interactions and
big, heavy lifting stuff.  The logical home for parse/unparse
seemed to be Filter, and they brought along two private methods
with them.  The big code moves involved trivial follow ups
like s/exports/Filter/.

(imported from commit ace0fe5aa1c7abce0334d079ba9eb8d9a57bd10f)
2013-08-22 14:53:00 -04:00
Steve Howell
0a22094e24 Change operator canonicalizations.
Streams are converted to their "official" names now.
Topics are not canonicalized at all.
All other operands continue to be lowercased.

Since we don't lowercase stream/topic at the parsing stage,
we have to modify the predicate function to do the lowercasing
of stream/topic to enable case-insensitive comparisons.  This
is slightly more expensive.  The server-side predicate
functions are already case-insensitive.

(imported from commit 286f118c6c3ff9d23b37c7f958cab4c0eacd5feb)
2013-08-20 14:27:43 -04:00
Steve Howell
269f3670cd Extract local vars in Filter.canonicalize_tuple().
This can be squashed with the prior commit or subsequent commit,
or it can just stand on its own, but it's part of transitioning
to a functional change in the next commit.

(imported from commit 155a0cdd28f851810fbedfef1a306e3190bf1c34)
2013-08-20 14:27:43 -04:00
Steve Howell
33c70f0f69 Extract Filter.canonicalize_tuple().
(imported from commit 96b8dc8c27c07d6d13f1e02c88a164abcab5a5c2)
2013-08-20 14:27:43 -04:00
Steve Howell
29c012dc74 Create stream_data.js module.
This pulls a lot of data-centric functions out of subs.js.

(imported from commit 0deed7d4bf5697e893af9bc9d888c2d5da8d9fa2)
2013-08-19 12:17:55 -04:00
Steve Howell
9993af7e8d Remove dead comment from refactoring.
(imported from commit 2b1f3ef65b2e30c548a8966d47b448cefe3dde5f)
2013-08-15 17:15:07 -04:00
Steve Howell
878ee2b3fd Move Filter class to filter.js from narrow.js.
1) The class Filter now lives in its own module.
2) The function canonicalized_operators() is now a class method on Filter.
3) The function message_in_home moved to filter.js and became private.
4) Various calling code had to change, of course.
5) Splitting out Filter helped simplify a few tests.

(imported from commit e41d792b46d3d6a30d3bd03db0419f129d0a2a7b)
2013-08-12 13:58:32 -04:00