Project

General

Profile

Pattern matching » History » Version 1

digitalcircuit, 09/13/2018 03:29 AM
Partial version

1 1 digitalcircuit
h1. Pattern matching
2 1 digitalcircuit
3 1 digitalcircuit
*WORK IN PROGRESS*
4 1 digitalcircuit
5 1 digitalcircuit
{{toc}}
6 1 digitalcircuit
7 1 digitalcircuit
h2. Upgrade notice
8 1 digitalcircuit
9 1 digitalcircuit
*This changed in Quassel @0.13@.  "Follow the migration guide":https://bugs.quassel-irc.org/projects/quassel-irc/wiki/Pattern_matching#Migrating-from-versions-prior-to-013 if you're upgrading from an earlier version.*
10 1 digitalcircuit
11 1 digitalcircuit
When using the client and core with different versions, some ignore rules will be processed differently.
12 1 digitalcircuit
13 1 digitalcircuit
h2. Breakdown of usage
14 1 digitalcircuit
15 1 digitalcircuit
Quassel supports several types of pattern matching for ignore and highlight rules.
16 1 digitalcircuit
17 1 digitalcircuit
h3. Ignore Rules
18 1 digitalcircuit
19 1 digitalcircuit
|_. @Regular expression@ |_. Item |_. Pattern matching type |
20 1 digitalcircuit
| Unchecked | @Ignore Rule@ | "Wildcard":https://bugs.quassel-irc.org/projects/quassel-irc/wiki/Pattern_matching#Wildcard |
21 1 digitalcircuit
| Unchecked | @Scope@ | "Multiple wildcard":https://bugs.quassel-irc.org/projects/quassel-irc/wiki/Pattern_matching#Multiple-wildcard |
22 1 digitalcircuit
| Checked | @Ignore Rule@ | "Regular expression":https://bugs.quassel-irc.org/projects/quassel-irc/wiki/Pattern_matching#Regular-expression |
23 1 digitalcircuit
| Checked | @Scope@ | "Multiple wildcard":https://bugs.quassel-irc.org/projects/quassel-irc/wiki/Pattern_matching#Multiple-wildcard |
24 1 digitalcircuit
25 1 digitalcircuit
_For backwards compatibility, the @Regular expression@ checkbox only affects @Ignore Rule@ and not @Scope@._
26 1 digitalcircuit
27 1 digitalcircuit
h3. Highlight Rules
28 1 digitalcircuit
29 1 digitalcircuit
|_. @RegEx@ |_. Item |_. Pattern matching type |
30 1 digitalcircuit
| Unchecked | @Rule@ | "Phrase":https://bugs.quassel-irc.org/projects/quassel-irc/wiki/Pattern_matching#Wildcard |
31 1 digitalcircuit
| Unchecked | @Sender@ | "Multiple wildcard":https://bugs.quassel-irc.org/projects/quassel-irc/wiki/Pattern_matching#Multiple-wildcard |
32 1 digitalcircuit
| Unchecked | @Channel@ | "Multiple wildcard":https://bugs.quassel-irc.org/projects/quassel-irc/wiki/Pattern_matching#Multiple-wildcard |
33 1 digitalcircuit
| Checked | @Rule@ | "Regular expression":https://bugs.quassel-irc.org/projects/quassel-irc/wiki/Pattern_matching#Regular-expression |
34 1 digitalcircuit
| Checked | @Sender@ | "Regular expression":https://bugs.quassel-irc.org/projects/quassel-irc/wiki/Pattern_matching#Regular-expression |
35 1 digitalcircuit
| Checked | @Channel@ | "Regular expression":https://bugs.quassel-irc.org/projects/quassel-irc/wiki/Pattern_matching#Regular-expression |
36 1 digitalcircuit
37 1 digitalcircuit
_This applies to both @Local Highlights@ and @Remote Highlights@ (or if using Monolithic, @Legacy Highlights@ and @Highlights@)._
38 1 digitalcircuit
39 1 digitalcircuit
h2. Types
40 1 digitalcircuit
41 1 digitalcircuit
h3. Phrase
42 1 digitalcircuit
43 1 digitalcircuit
This matches exactly what you type.
44 1 digitalcircuit
45 1 digitalcircuit
<pre>
46 1 digitalcircuit
word
47 1 digitalcircuit
</pre>
48 1 digitalcircuit
49 1 digitalcircuit
* Matches
50 1 digitalcircuit
** @word@
51 1 digitalcircuit
** @A word.@
52 1 digitalcircuit
** @has a word in it@ 
53 1 digitalcircuit
* Does not match
54 1 digitalcircuit
** @wording@
55 1 digitalcircuit
56 1 digitalcircuit
_Changed in Quassel @0.13@:_
57 1 digitalcircuit
58 1 digitalcircuit
Spaces are matched, too, allowing you to be more specific.
59 1 digitalcircuit
60 1 digitalcircuit
<pre>
61 1 digitalcircuit
 spaced
62 1 digitalcircuit
</pre>
63 1 digitalcircuit
64 1 digitalcircuit
_There's a leading space in the example above._
65 1 digitalcircuit
66 1 digitalcircuit
* Matches
67 1 digitalcircuit
** @, spaced@
68 1 digitalcircuit
** @is spaced out@
69 1 digitalcircuit
* Does not match
70 1 digitalcircuit
** @;spaced@
71 1 digitalcircuit
72 1 digitalcircuit
h3. Wildcard
73 1 digitalcircuit
74 1 digitalcircuit
_Changed in Quassel @0.13@:_
75 1 digitalcircuit
76 1 digitalcircuit
This uses simple wildcard substitution with @*@ and @?@ to match any characters or a single character, respectively.
77 1 digitalcircuit
78 1 digitalcircuit
<pre>
79 1 digitalcircuit
*Asking questions\?  Nope?
80 1 digitalcircuit
</pre>
81 1 digitalcircuit
82 1 digitalcircuit
* Matches
83 1 digitalcircuit
** @Asking questions? Nopea@
84 1 digitalcircuit
** @Basking questions? Nope.@
85 1 digitalcircuit
* Does not match
86 1 digitalcircuit
** @Asking questions. Nope.@
87 1 digitalcircuit
** @Asking questions? Nopes.@
88 1 digitalcircuit
89 1 digitalcircuit
Implicit wildcard is supported, too, allowing you to match everything *except* for what you specify.
90 1 digitalcircuit
91 1 digitalcircuit
<pre>
92 1 digitalcircuit
!*filter*
93 1 digitalcircuit
</pre>
94 1 digitalcircuit
95 1 digitalcircuit
* Matches
96 1 digitalcircuit
** _Everything, unless it contains something from the below list_
97 1 digitalcircuit
* Does not match
98 1 digitalcircuit
** @filter@
99 1 digitalcircuit
** @filtering@
100 1 digitalcircuit
** @#nofilter yo@
101 1 digitalcircuit
102 1 digitalcircuit
Exclamation points can be escaped at the beginning to match something that starts with @!@ (_this is not required elsewhere_).
103 1 digitalcircuit
104 1 digitalcircuit
<pre>
105 1 digitalcircuit
\!*filter*
106 1 digitalcircuit
</pre>
107 1 digitalcircuit
108 1 digitalcircuit
* Matches
109 1 digitalcircuit
** @!filter@
110 1 digitalcircuit
** @!yes filtering@
111 1 digitalcircuit
* Does not match
112 1 digitalcircuit
** @filter@
113 1 digitalcircuit
114 1 digitalcircuit
The @\@ character can be escaped, too, in case you're matching something that starts with @\!@.
115 1 digitalcircuit
116 1 digitalcircuit
<pre>
117 1 digitalcircuit
\\!*filter*
118 1 digitalcircuit
</pre>
119 1 digitalcircuit
120 1 digitalcircuit
* Matches
121 1 digitalcircuit
** @\!filter@
122 1 digitalcircuit
** @\!yes filtering@
123 1 digitalcircuit
* Does not match
124 1 digitalcircuit
** @filter@
125 1 digitalcircuit
** @!filter@
126 1 digitalcircuit
127 1 digitalcircuit
h3. Multiple wildcard
128 1 digitalcircuit
129 1 digitalcircuit
h3. Regular expression
130 1 digitalcircuit
131 1 digitalcircuit
TODO
132 1 digitalcircuit
133 1 digitalcircuit
h2. Migrating from versions prior to @0.13@
134 1 digitalcircuit
135 1 digitalcircuit
Quassel @0.13@ introduced new behavior for pattern matching to provide more flexibility and to improve performance.
136 1 digitalcircuit
137 1 digitalcircuit
h3. Ignore Rules
138 1 digitalcircuit
139 1 digitalcircuit
140 1 digitalcircuit
h3. Highlight Rules
141 1 digitalcircuit
142 1 digitalcircuit
h2. Technical details
143 1 digitalcircuit
144 1 digitalcircuit
For all the technical details and source code changes, take a look at "Quassel pull request #415":https://github.com/quassel/quassel/pull/415 .  @MultiPhrase@ is not covered here as Quassel only uses it internally for nickname matching.