jse 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,6 +7,7 @@ lib/jse.rb
7
7
  lib/jse/cli.rb
8
8
  lib/jse/field_value_transform.rb
9
9
  lib/jse/filter.rb
10
+ lib/jse/case_insensitive_filter.rb
10
11
  lib/jse/regexp_filter.rb
11
12
  lib/jse/stream.rb
12
13
  lib/jse/subset_transform.rb
data/lib/jse.rb CHANGED
@@ -3,6 +3,7 @@ $:.unshift(File.dirname(__FILE__)) unless
3
3
 
4
4
  require 'jse/stream'
5
5
  require 'jse/filter'
6
+ require 'jse/case_insensitive_filter'
6
7
  require 'jse/regexp_filter'
7
8
  require 'jse/subset_transform'
8
9
  require 'jse/to_json_transform'
@@ -0,0 +1,11 @@
1
+ module JSE
2
+ class CaseInsensitiveFilter
3
+ def initialize(field, text)
4
+ @field, @text = field, text
5
+ end
6
+
7
+ def match?(json)
8
+ json[@field] && json[@field].upcase == @text.upcase
9
+ end
10
+ end
11
+ end
@@ -4,6 +4,7 @@ module JSE
4
4
  module CLI
5
5
  def self.execute(stdout, arguments = [])
6
6
  print = []
7
+ ignore_case = false
7
8
  parser = OptionParser.new do |opts|
8
9
  opts.banner = <<-BANNER.gsub(/^[ \t]*/, '')
9
10
  Json Stream Editor.
@@ -17,6 +18,10 @@ module JSE
17
18
  "List of fields to return") do |fields|
18
19
  print = fields
19
20
  end
21
+ opts.on("-i", "--ignore-case",
22
+ "Make all matches case insensitive") do
23
+ ignore_case = true
24
+ end
20
25
  opts.on("-h", "--help",
21
26
  "Show this help message.") { stdout.puts opts; exit }
22
27
  opts.parse!(arguments)
@@ -30,7 +35,7 @@ module JSE
30
35
 
31
36
  arguments.each do |arg|
32
37
  field, text = arg.split(':')
33
- stream.filter!(field, text)
38
+ stream.filter!(field, text, ignore_case)
34
39
  end
35
40
 
36
41
  unless print.empty?
@@ -41,7 +46,7 @@ module JSE
41
46
  stream.each_line do |line|
42
47
  stdout.puts line
43
48
  end
44
- rescue Errno::EPIPE
49
+ rescue Errno::EPIPE, Interrupt
45
50
  # Catch broken pipes so we can use head etc.
46
51
  end
47
52
  end
@@ -1,9 +1,9 @@
1
1
  module JSE
2
2
  class RegexpFilter
3
- def initialize(field, regexp)
3
+ def initialize(field, regexp, options = [])
4
4
  @field = field
5
5
  # regexp should have leading and trailing '/'
6
- @regexp = Regexp.new(regexp[1,regexp.size-2])
6
+ @regexp = Regexp.new(regexp[1,regexp.size-2], options)
7
7
  end
8
8
 
9
9
  def match?(json)
@@ -19,11 +19,19 @@ module JSE
19
19
  end
20
20
  end
21
21
 
22
- def filter!(field, text)
22
+ def filter!(field, text, ignore_case = false)
23
23
  if looks_like_regexp?(text)
24
- filters << RegexpFilter.new(field, text)
24
+ if ignore_case
25
+ filters << RegexpFilter.new(field, text, Regexp::IGNORECASE)
26
+ else
27
+ filters << RegexpFilter.new(field, text)
28
+ end
25
29
  else
26
- filters << Filter.new(field, text)
30
+ if ignore_case
31
+ filters << CaseInsensitiveFilter.new(field, text)
32
+ else
33
+ filters << Filter.new(field, text)
34
+ end
27
35
  end
28
36
  end
29
37
 
@@ -1,3 +1,3 @@
1
1
  module JSE
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Ryan Burrows
@@ -83,6 +83,7 @@ files:
83
83
  - lib/jse/cli.rb
84
84
  - lib/jse/field_value_transform.rb
85
85
  - lib/jse/filter.rb
86
+ - lib/jse/case_insensitive_filter.rb
86
87
  - lib/jse/regexp_filter.rb
87
88
  - lib/jse/stream.rb
88
89
  - lib/jse/subset_transform.rb