plunk 0.0.5 → 0.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 384ac77eadf37f80bedaf8f661047d33d45cb82f
4
- data.tar.gz: bf08baf12099add5dd94678de046e036e0b451ab
3
+ metadata.gz: c5efb7de164143cec1cad9a463333777a36d30e3
4
+ data.tar.gz: 4aca7635698f180d0510ddd8e89a78c5d71b75cf
5
5
  SHA512:
6
- metadata.gz: 1679121e3c9518e4c871f767835cb1ae02d04f5d209e7ace67ad3c934da0393114524a015c3714dda0db97b3f132b0c4b0430238ebbdc3d2e3952d65dfc3e1af
7
- data.tar.gz: 35184a93a49971e613e80d0711c56324a6163f3380038da9b34a26b6bb19184f97a88f2d90cc1d73f56baa5ec18c8eacf37f52bd1e190acdeae9585e9401926c
6
+ metadata.gz: 9c411eb71aee6b4495c5939d9bb58e12d421b227a97d3ce2ac33fb5c939bacfe933f883879097ba526f8d02e027b146f7ee774ab53c797f2c695e8853a3f2151
7
+ data.tar.gz: 58a3d1155ae86ab62be314f16f9c013600c7704e9f67e75f7abf8b4ca69b15c352ee5226d55aa28d4bfdd054d21009f6776a4b39d4b1b9809a15773c987acbf7
data/Gemfile.lock CHANGED
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- plunk (0.0.0)
4
+ plunk (0.0.5)
5
+ active_support
5
6
  json
6
7
  parslet
7
8
  rest-client
@@ -9,6 +10,9 @@ PATH
9
10
  GEM
10
11
  remote: https://rubygems.org/
11
12
  specs:
13
+ active_support (3.0.0)
14
+ activesupport (= 3.0.0)
15
+ activesupport (3.0.0)
12
16
  blankslate (2.1.2.4)
13
17
  diff-lcs (1.2.5)
14
18
  json (1.8.1)
@@ -1,5 +1,3 @@
1
- require_relative 'elasticsearch'
2
-
3
1
  class Plunk::ResultSet
4
2
  attr_accessor :query
5
3
 
@@ -7,7 +5,7 @@ class Plunk::ResultSet
7
5
  if opts
8
6
  @query = { query: { }}
9
7
 
10
- if opts[:query_string]
8
+ if @query_string = opts[:query_string]
11
9
  @query[:query][:query_string] = { query: opts[:query_string] }
12
10
  end
13
11
 
@@ -22,12 +20,8 @@ class Plunk::ResultSet
22
20
  end
23
21
  end
24
22
 
25
- def *(rs)
26
- self.join(rs)
27
- end
28
-
29
- def join(rs)
30
- Plunk::ResultSet.new("[ #{@query} * #{rs.query} ]")
23
+ def raw_query
24
+ @query_string
31
25
  end
32
26
 
33
27
  def eval(elasticsearch_recursor)
@@ -35,4 +29,3 @@ class Plunk::ResultSet
35
29
  elasticsearch_recursor.search(@query.to_json)
36
30
  end
37
31
  end
38
-
@@ -1,4 +1,5 @@
1
1
  require 'parslet'
2
+ require 'active_support/core_ext'
2
3
 
3
4
  class Plunk::Transformer < Parslet::Transform
4
5
 
@@ -31,7 +32,7 @@ class Plunk::Transformer < Parslet::Transform
31
32
  end
32
33
 
33
34
  rule(
34
- search: simple(:query),
35
+ search: simple(:result_set),
35
36
  timerange: {
36
37
  quantity: simple(:quantity),
37
38
  quantifier: simple(:quantifier)
@@ -53,10 +54,10 @@ class Plunk::Transformer < Parslet::Transform
53
54
  int_quantity.weeks.ago
54
55
  end
55
56
 
56
- end_time = Time.now.utc.to_datetime
57
+ end_time = Time.now
57
58
 
58
59
  Plunk::ResultSet.new(
59
- query_string: query,
60
+ query_string: result_set.raw_query,
60
61
  start_time: start_time,
61
62
  end_time: end_time)
62
63
  end
data/plunk.gemspec CHANGED
@@ -1,10 +1,11 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "plunk"
3
- s.version = "0.0.5"
3
+ s.version = "0.0.6"
4
4
  s.date = "2013-12-03"
5
5
  s.add_runtime_dependency "json"
6
6
  s.add_runtime_dependency "parslet"
7
7
  s.add_runtime_dependency "rest-client"
8
+ s.add_runtime_dependency "active_support"
8
9
  s.add_development_dependency "rspec"
9
10
  s.summary = "Elasticsearch query language"
10
11
  s.description = "Human-friendly query language for Elasticsearch"
data/spec/parser_spec.rb CHANGED
@@ -15,6 +15,7 @@ end
15
15
  describe Plunk::Parser do
16
16
  before :all do
17
17
  @parser = Plunk::ParserWrapper.new
18
+ @transformer = Plunk::Transformer.new
18
19
  end
19
20
 
20
21
  context 'single-query searches' do
@@ -56,13 +57,39 @@ describe Plunk::Parser do
56
57
  end
57
58
 
58
59
  context 'the last command' do
59
- it 'should parse last command with a search' do
60
+ before :each do
60
61
  @parsed = @parser.parse 'last 24w tshark.@src_ip = bar'
62
+ end
63
+
64
+ it 'should parse last command with a search' do
61
65
  expect(@parsed[:timerange][:quantity].to_s).to eq '24'
62
66
  expect(@parsed[:timerange][:quantifier].to_s).to eq 'w'
63
67
  expect(@parsed[:search][:field].to_s).to eq 'tshark.@src_ip'
64
68
  expect(@parsed[:search][:value].to_s).to eq 'bar'
65
69
  end
70
+
71
+ context 'transformation' do
72
+ before :each do
73
+ @result_set = @transformer.apply(@parsed)
74
+ end
75
+
76
+ it 'should have the proper result set' do
77
+ @result_set.should be_a Plunk::ResultSet
78
+ @result_set.query.should be_present
79
+
80
+ query = { query: {
81
+ query_string: {
82
+ query: "tshark.@src_ip:bar"
83
+ },
84
+ range: {
85
+ '@timestamp' => {
86
+ gte: 24.weeks.ago,
87
+ lte: Time.now
88
+ }}}}
89
+
90
+ @result_set.query.to_json.should eq query.to_json
91
+ end
92
+ end
66
93
  end
67
94
 
68
95
  context 'chained searches' do
@@ -0,0 +1,4 @@
1
+ require 'plunk/result_set'
2
+
3
+ describe Plunk::ResultSet do
4
+ end
@@ -1,10 +1,4 @@
1
+ require 'plunk/transformer'
1
2
 
2
- # after :each do
3
- # transformed = @transformer.apply(@parsed)
4
- # if transformed.is_a? Array
5
- # transformed.map(&:class).uniq.should =~ Array(ResultSet)
6
- # else
7
- # transformed.should be_a ResultSet
8
- # end
9
- # end
10
-
3
+ describe Plunk::Transformer do
4
+ end
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.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ram Mehta
@@ -53,6 +53,20 @@ dependencies:
53
53
  - - '>='
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: active_support
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
56
70
  - !ruby/object:Gem::Dependency
57
71
  name: rspec
58
72
  requirement: !ruby/object:Gem::Requirement