plunk 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/plunk/parser.rb +22 -5
- data/plunk.gemspec +1 -1
- data/spec/boolean_spec.rb +3 -3
- data/spec/nested_search_spec.rb +15 -6
- data/spec/shared/basic.rb +5 -0
- data/spec/shared/field_value.rb +7 -0
- data/spec/shared/last.rb +6 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f4dfac5efa2e55552472e25e7c690597f9897f54
|
4
|
+
data.tar.gz: dcd5d467953d34343a7bb3a1a2f52ed9a1a40293
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 883e88718a5af4fdd8bb7e636cf4a1621a24b6dd8b15e00d94b1bdeb5c147944daa24ba04672b3496b6adedf6576e3c9a5b89b9e82d444e1d44ffeb414c60111
|
7
|
+
data.tar.gz: 4c1403380786063af8680102e108650e769883568f38aa7434f75da71abb7991d567ecc5264f19f3f4721a364700f700670f258ef711d624a7115853f24d58fa
|
data/Gemfile.lock
CHANGED
data/lib/plunk/parser.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
require 'parslet'
|
2
2
|
|
3
3
|
class Plunk::Parser < Parslet::Parser
|
4
|
+
|
5
|
+
def parenthesized(atom)
|
6
|
+
lparen >> atom >> rparen
|
7
|
+
end
|
8
|
+
|
4
9
|
# Single character rules
|
5
10
|
rule(:lparen) { str('(') >> space? }
|
6
11
|
rule(:rparen) { str(')') >> space? }
|
@@ -21,6 +26,8 @@ class Plunk::Parser < Parslet::Parser
|
|
21
26
|
rule(:wildcard) { match('[a-zA-Z0-9.*]').repeat(1) }
|
22
27
|
rule(:searchop) { match('[=]').as(:op) }
|
23
28
|
|
29
|
+
rule(:query_value) { wildcard | integer }
|
30
|
+
|
24
31
|
# boolean operators search
|
25
32
|
rule(:concatop) { (str('OR') | str('AND')) >> space? }
|
26
33
|
rule(:operator) { match('[|]').as(:op) >> space? }
|
@@ -30,9 +37,19 @@ class Plunk::Parser < Parslet::Parser
|
|
30
37
|
|
31
38
|
# Grammar parts
|
32
39
|
rule(:rhs) {
|
33
|
-
|
34
|
-
|
35
|
-
|
40
|
+
regexp | subsearch | integer | wildcard | booleanop
|
41
|
+
}
|
42
|
+
|
43
|
+
rule(:boolean_value) {
|
44
|
+
booleanparen | query_value
|
45
|
+
}
|
46
|
+
|
47
|
+
rule(:booleanop) {
|
48
|
+
boolean_value >> (space >> concatop >> boolean_value).repeat
|
49
|
+
}
|
50
|
+
|
51
|
+
rule(:booleanparen) {
|
52
|
+
lparen >> space? >> booleanop >> space? >> rparen
|
36
53
|
}
|
37
54
|
|
38
55
|
rule(:regexp) {
|
@@ -58,9 +75,9 @@ class Plunk::Parser < Parslet::Parser
|
|
58
75
|
}
|
59
76
|
|
60
77
|
rule(:nested_search) {
|
61
|
-
match('[^|]').repeat.as(:initial_query) >> str('|') >> space? >>
|
78
|
+
# match('[^|]').repeat.as(:initial_query) >> str('|') >> space? >>
|
79
|
+
job.as(:initial_query) >> space? >> str('|') >> space? >>
|
62
80
|
match('[^`]').repeat.as(:extractors)
|
63
|
-
# job >> str('|') >> space? >>
|
64
81
|
}
|
65
82
|
|
66
83
|
rule(:paren) {
|
data/plunk.gemspec
CHANGED
data/spec/boolean_spec.rb
CHANGED
@@ -7,9 +7,9 @@ describe 'boolean searches' do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'should parse a single field / value complex boolean expression' do
|
10
|
-
@parsed = @parser.parse '
|
11
|
-
expect(@parsed[:field].to_s).to eq '
|
12
|
-
expect(@parsed[:value].to_s).to eq '(bar OR
|
10
|
+
@parsed = @parser.parse 'baz=(foo OR bar AND (bar OR fez))'
|
11
|
+
expect(@parsed[:field].to_s).to eq 'baz'
|
12
|
+
expect(@parsed[:value].to_s).to eq '(foo OR bar AND (bar OR fez))'
|
13
13
|
expect(@parsed[:op].to_s).to eq '='
|
14
14
|
end
|
15
15
|
|
data/spec/nested_search_spec.rb
CHANGED
@@ -5,7 +5,7 @@ describe 'nested searches' do
|
|
5
5
|
@parsed = @parser.parse 'tshark.len = ` 226 | tshark.frame.time_epoch,tshark.ip.src`'
|
6
6
|
expect(@parsed[:field].to_s).to eq 'tshark.len'
|
7
7
|
expect(@parsed[:op].to_s).to eq '='
|
8
|
-
expect(@parsed[:value][:initial_query].to_s).to eq '226 '
|
8
|
+
expect(@parsed[:value][:initial_query][:match].to_s).to eq '226 '
|
9
9
|
expect(@parsed[:value][:extractors].to_s).to eq 'tshark.frame.time_epoch,tshark.ip.src'
|
10
10
|
end
|
11
11
|
|
@@ -13,7 +13,9 @@ describe 'nested searches' do
|
|
13
13
|
@parsed = @parser.parse 'tshark.len = ` cif.malicious_ips=/foo/ | tshark.frame.time_epoch,tshark.ip.src`'
|
14
14
|
expect(@parsed[:field].to_s).to eq 'tshark.len'
|
15
15
|
expect(@parsed[:op].to_s).to eq '='
|
16
|
-
expect(@parsed[:value][:initial_query].to_s).to eq 'cif.malicious_ips
|
16
|
+
expect(@parsed[:value][:initial_query][:field].to_s).to eq 'cif.malicious_ips'
|
17
|
+
expect(@parsed[:value][:initial_query][:op].to_s).to eq '='
|
18
|
+
expect(@parsed[:value][:initial_query][:value].to_s).to eq '/foo/'
|
17
19
|
expect(@parsed[:value][:extractors].to_s).to eq 'tshark.frame.time_epoch,tshark.ip.src'
|
18
20
|
end
|
19
21
|
|
@@ -21,7 +23,7 @@ describe 'nested searches' do
|
|
21
23
|
@parsed = @parser.parse 'tshark.len = `(foo OR bar) | tshark.frame.time_epoch,tshark.ip.src`'
|
22
24
|
expect(@parsed[:field].to_s).to eq 'tshark.len'
|
23
25
|
expect(@parsed[:op].to_s).to eq '='
|
24
|
-
expect(@parsed[:value][:initial_query].to_s).to eq '(foo OR bar) '
|
26
|
+
expect(@parsed[:value][:initial_query][:match].to_s).to eq '(foo OR bar) '
|
25
27
|
expect(@parsed[:value][:extractors].to_s).to eq 'tshark.frame.time_epoch,tshark.ip.src'
|
26
28
|
end
|
27
29
|
|
@@ -29,7 +31,9 @@ describe 'nested searches' do
|
|
29
31
|
@parsed = @parser.parse 'tshark.len = `baz=(foo OR bar AND (bar OR fez)) | tshark.frame.time_epoch,tshark.ip.src`'
|
30
32
|
expect(@parsed[:field].to_s).to eq 'tshark.len'
|
31
33
|
expect(@parsed[:op].to_s).to eq '='
|
32
|
-
expect(@parsed[:value][:initial_query].to_s).to eq 'baz
|
34
|
+
expect(@parsed[:value][:initial_query][:field].to_s).to eq 'baz'
|
35
|
+
expect(@parsed[:value][:initial_query][:op].to_s).to eq '='
|
36
|
+
expect(@parsed[:value][:initial_query][:value].to_s).to eq '(foo OR bar AND (bar OR fez)) '
|
33
37
|
expect(@parsed[:value][:extractors].to_s).to eq 'tshark.frame.time_epoch,tshark.ip.src'
|
34
38
|
end
|
35
39
|
|
@@ -37,7 +41,8 @@ describe 'nested searches' do
|
|
37
41
|
@parsed = @parser.parse 'tshark.len = `last 24h | tshark.frame.time_epoch,tshark.ip.src`'
|
38
42
|
expect(@parsed[:field].to_s).to eq 'tshark.len'
|
39
43
|
expect(@parsed[:op].to_s).to eq '='
|
40
|
-
expect(@parsed[:value][:initial_query].to_s).to eq '
|
44
|
+
expect(@parsed[:value][:initial_query][:timerange][:quantity].to_s).to eq '24'
|
45
|
+
expect(@parsed[:value][:initial_query][:timerange][:quantifier].to_s).to eq 'h'
|
41
46
|
expect(@parsed[:value][:extractors].to_s).to eq 'tshark.frame.time_epoch,tshark.ip.src'
|
42
47
|
end
|
43
48
|
|
@@ -45,7 +50,11 @@ describe 'nested searches' do
|
|
45
50
|
@parsed = @parser.parse 'tshark.len = `last 24h foo=bar | tshark.frame.time_epoch,tshark.ip.src`'
|
46
51
|
expect(@parsed[:field].to_s).to eq 'tshark.len'
|
47
52
|
expect(@parsed[:op].to_s).to eq '='
|
48
|
-
expect(@parsed[:value][:initial_query].to_s).to eq '
|
53
|
+
expect(@parsed[:value][:initial_query][:timerange][:quantity].to_s).to eq '24'
|
54
|
+
expect(@parsed[:value][:initial_query][:timerange][:quantifier].to_s).to eq 'h'
|
55
|
+
expect(@parsed[:value][:initial_query][:search][:field].to_s).to eq 'foo'
|
56
|
+
expect(@parsed[:value][:initial_query][:search][:op].to_s).to eq '='
|
57
|
+
expect(@parsed[:value][:initial_query][:search][:value].to_s).to eq 'bar'
|
49
58
|
expect(@parsed[:value][:extractors].to_s).to eq 'tshark.frame.time_epoch,tshark.ip.src'
|
50
59
|
end
|
51
60
|
end
|
data/spec/shared/last.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plunk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ram Mehta
|
@@ -108,6 +108,9 @@ files:
|
|
108
108
|
- spec/last_spec.rb
|
109
109
|
- spec/nested_search_spec.rb
|
110
110
|
- spec/regexp_spec.rb
|
111
|
+
- spec/shared/basic.rb
|
112
|
+
- spec/shared/field_value.rb
|
113
|
+
- spec/shared/last.rb
|
111
114
|
- spec/spec_helper.rb
|
112
115
|
homepage: https://github.com/elbii/plunk
|
113
116
|
licenses:
|