hotdog 0.22.1 → 0.23.0

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: a119b57eb88edbf96274e510fccff8dac8cec163
4
- data.tar.gz: 97cb6d850508a644026ef397928f90391938f8de
3
+ metadata.gz: f79366fbd1f7a1759cf63ebd5b503338a5a0c2d1
4
+ data.tar.gz: d4fea09cef3558cf3543020c530c0950dd5bc5eb
5
5
  SHA512:
6
- metadata.gz: 6b4c12bc02f80a836ab9c7635258f0fe4be78942b6f390675092500ccc10c5549075792ea7b6045e3da0a84f0274f75dd8378eade4800a1b55649e3e6d4dcc39
7
- data.tar.gz: eccae2d625eb64c21c8d703e505c7e02457106f687c17d7cc05860908c3bd527f65045975eaa3aeb2fce0dcbd37e8aeda9a2a0227a225cdf093eb6dc47223e54
6
+ metadata.gz: c5fa35cc842fdae8a5221fe883797d3c4336e7adde177ac21340d6bfebeccd470110ecf350e6de6c3c65baabe370b3cc8f67ce53079de37bfc666d3008be544e
7
+ data.tar.gz: bdeae0ef080e8750363939b9018e7be0d3441ac8481763014581645c76aff140e8182169ba3790b45f3ef5da2d67fe06561265c3e54728942f379456a96d8dc5
@@ -28,7 +28,7 @@ module Hotdog
28
28
  expiry: 3600,
29
29
  fixed_string: false,
30
30
  force: false,
31
- format: "plain",
31
+ format: "text",
32
32
  headers: false,
33
33
  listing: false,
34
34
  logger: @logger,
@@ -36,6 +36,7 @@ module Hotdog
36
36
  offline: false,
37
37
  print0: false,
38
38
  print1: true,
39
+ print2: false,
39
40
  primary_tag: nil,
40
41
  tags: [],
41
42
  display_search_tags: false,
@@ -96,12 +97,7 @@ module Hotdog
96
97
  rescue Errno::EPIPE => error
97
98
  STDERR.puts(error)
98
99
  rescue => error
99
- STDERR.puts("#{error.class}: #{error} at #{caller.first}")
100
- if @options[:debug]
101
- raise # to show error stacktrace
102
- else
103
- exit(1)
104
- end
100
+ raise # to show error stacktrace
105
101
  end
106
102
  end
107
103
 
@@ -144,9 +140,18 @@ module Hotdog
144
140
  end
145
141
  @optparse.on("-0", "--null", "Use null character as separator") do |v|
146
142
  options[:print0] = v
143
+ options[:print1] = !v
144
+ options[:print2] = !v
147
145
  end
148
146
  @optparse.on("-1", "Use newline as separator") do |v|
147
+ options[:print0] = !v
149
148
  options[:print1] = v
149
+ options[:print2] = !v
150
+ end
151
+ @optparse.on("-2", "Use space as separator") do |v|
152
+ options[:print0] = !v
153
+ options[:print1] = !v
154
+ options[:print2] = v
150
155
  end
151
156
  @optparse.on("-d", "--[no-]debug", "Enable debug mode") do |v|
152
157
  options[:debug] = v
@@ -138,13 +138,13 @@ module Hotdog
138
138
  case @op
139
139
  when :AND
140
140
  left_values = @left.evaluate(environment, options).tap do |values|
141
- environment.logger.debug("lhs: #{values.length} value(s)")
141
+ environment.logger.debug("lhs(#{values.length})")
142
142
  end
143
143
  if left_values.empty?
144
144
  []
145
145
  else
146
146
  right_values = @right.evaluate(environment, options).tap do |values|
147
- environment.logger.debug("rhs: #{values.length} value(s)")
147
+ environment.logger.debug("rhs(#{values.length})")
148
148
  end
149
149
  if right_values.empty?
150
150
  []
@@ -159,16 +159,16 @@ module Hotdog
159
159
  "WHERE ? <= id AND id < ? AND ( id IN (%s) AND id IN (%s) );"
160
160
  environment.execute(q % [left_selected.map { "?" }.join(", "), right_selected.map { "?" }.join(", ")], [range.first, range.last] + left_selected + right_selected).map { |row| row.first }
161
161
  }.tap do |values|
162
- environment.logger.debug("lhs AND rhs: #{values.length} value(s)")
162
+ environment.logger.debug("lhs(#{left_values.length}) AND rhs(#{right_values.length}) => #{values.length}")
163
163
  end
164
164
  end
165
165
  end
166
166
  when :OR
167
167
  left_values = @left.evaluate(environment, options).tap do |values|
168
- environment.logger.debug("lhs: #{values.length} value(s)")
168
+ environment.logger.debug("lhs(#{values.length})")
169
169
  end
170
170
  right_values = @right.evaluate(environment, options).tap do |values|
171
- environment.logger.debug("rhs: #{values.length} value(s)")
171
+ environment.logger.debug("rhs(#{values.length})")
172
172
  end
173
173
  if left_values.empty?
174
174
  right_values
@@ -186,16 +186,16 @@ module Hotdog
186
186
  "WHERE ? <= id AND id < ? AND ( id IN (%s) OR id IN (%s) );"
187
187
  environment.execute(q % [left_selected.map { "?" }.join(", "), right_selected.map { "?" }.join(", ")], [range.first, range.last] + left_selected + right_selected).map { |row| row.first }
188
188
  }.tap do |values|
189
- environment.logger.debug("lhs OR rhs: #{values.length} value(s)")
189
+ environment.logger.debug("lhs(#{left_values.length}) OR rhs(#{right_values.length}) => #{values.length}")
190
190
  end
191
191
  end
192
192
  end
193
193
  when :XOR
194
194
  left_values = @left.evaluate(environment, options).tap do |values|
195
- environment.logger.debug("lhs: #{values.length} value(s)")
195
+ environment.logger.debug("lhs(#{values.length})")
196
196
  end
197
197
  right_values = @right.evaluate(environment, options).tap do |values|
198
- environment.logger.debug("rhs: #{values.length} value(s)")
198
+ environment.logger.debug("rhs(#{values.length})")
199
199
  end
200
200
  if left_values.empty?
201
201
  right_values
@@ -215,7 +215,7 @@ module Hotdog
215
215
  rq = right_selected.map { "?" }.join(", ")
216
216
  environment.execute(q % [lq, rq, lq, rq], [range.first, range.last] + left_selected + right_selected + left_selected + right_selected).map { |row| row.first }
217
217
  }.tap do |values|
218
- environment.logger.debug("lhs XOR rhs: #{values.length} value(s)")
218
+ environment.logger.debug("lhs(#{left_values.length}) XOR rhs(#{right_values.length}) => #{values.length}")
219
219
  end
220
220
  end
221
221
  end
@@ -1,51 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require "hotdog/formatters/text"
4
+
3
5
  module Hotdog
4
6
  module Formatters
5
- class Plain < BaseFormatter
6
- def format(result, options={})
7
- if options[:print0]
8
- sep = "\0"
9
- elsif options[:print1]
10
- sep = newline
11
- else
12
- sep = " "
13
- end
14
- result = prepare(result)
15
- if options[:print1] and options[:headers] and options[:fields]
16
- field_length = (0...result.last.length).map { |field_index|
17
- result.reduce(0) { |length, row|
18
- [length, row[field_index].to_s.length, options[:fields][field_index].to_s.length].max
19
- }
20
- }
21
- header_fields = options[:fields].zip(field_length).map { |field, length|
22
- field.to_s + (" " * (length - field.length))
23
- }
24
- result = [
25
- header_fields,
26
- header_fields.map { |field|
27
- "-" * field.length
28
- },
29
- ] + result.map { |row|
30
- row.zip(field_length).map { |field, length|
31
- padding = length - ((field.nil?) ? 0 : field.to_s.length)
32
- field.to_s + (" " * padding)
33
- }
34
- }
35
- end
36
- s = _format(result, sep, options)
37
- if s.empty? or options[:print0]
38
- s
39
- else
40
- s + newline
41
- end
42
- end
43
-
44
- def _format(result, sep, options={})
45
- result.map { |row|
46
- row.join(" ")
47
- }.join(sep)
48
- end
7
+ class Plain < Text
49
8
  end
50
9
  end
51
10
  end
@@ -1,10 +1,53 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "hotdog/formatters/plain"
4
-
5
3
  module Hotdog
6
4
  module Formatters
7
- class Text < Plain
5
+ class Text < BaseFormatter
6
+ def format(result, options={})
7
+ if options[:print0]
8
+ sep = "\0"
9
+ elsif options[:print1]
10
+ sep = newline
11
+ elsif options[:print2]
12
+ sep = " "
13
+ else
14
+ sep = " "
15
+ end
16
+ result = prepare(result)
17
+ if options[:print1] and options[:headers] and options[:fields]
18
+ field_length = (0...result.last.length).map { |field_index|
19
+ result.reduce(0) { |length, row|
20
+ [length, row[field_index].to_s.length, options[:fields][field_index].to_s.length].max
21
+ }
22
+ }
23
+ header_fields = options[:fields].zip(field_length).map { |field, length|
24
+ field.to_s + (" " * (length - field.length))
25
+ }
26
+ result = [
27
+ header_fields,
28
+ header_fields.map { |field|
29
+ "-" * field.length
30
+ },
31
+ ] + result.map { |row|
32
+ row.zip(field_length).map { |field, length|
33
+ padding = length - ((field.nil?) ? 0 : field.to_s.length)
34
+ field.to_s + (" " * padding)
35
+ }
36
+ }
37
+ end
38
+ s = _format(result, sep, options)
39
+ if s.empty? or options[:print0]
40
+ s
41
+ else
42
+ s + newline
43
+ end
44
+ end
45
+
46
+ def _format(result, sep, options={})
47
+ result.map { |row|
48
+ row.join(" ")
49
+ }.join(sep)
50
+ end
8
51
  end
9
52
  end
10
53
  end
@@ -1,3 +1,3 @@
1
1
  module Hotdog
2
- VERSION = "0.22.1"
2
+ VERSION = "0.23.0"
3
3
  end
@@ -12,6 +12,7 @@ describe "plain" do
12
12
  headers: false,
13
13
  print0: true,
14
14
  print1: false,
15
+ print2: false,
15
16
  }
16
17
  expect(fmt.format([["foo", "aaa", 1], ["bar", "bbb", 2], ["baz", "ccc", 3]], options)).to eq("foo aaa 1\0bar bbb 2\0baz ccc 3")
17
18
  end
@@ -22,6 +23,7 @@ describe "plain" do
22
23
  fields: ["key1", "key2", "val1"],
23
24
  print0: true,
24
25
  print1: false,
26
+ print2: false,
25
27
  }
26
28
  expect(fmt.format([["foo", "aaa", 1], ["bar", "bbb", 2], ["baz", "ccc", 3]], options)).to eq("foo aaa 1\0bar bbb 2\0baz ccc 3")
27
29
  end
@@ -31,6 +33,7 @@ describe "plain" do
31
33
  headers: false,
32
34
  print0: false,
33
35
  print1: true,
36
+ print2: false,
34
37
  }
35
38
  expect(fmt.format([["foo", "aaa", 1], ["bar", "bbb", 2], ["baz", "ccc", 3]], options)).to eq(<<-EOS)
36
39
  foo aaa 1
@@ -45,6 +48,7 @@ baz ccc 3
45
48
  fields: ["key1", "key2", "val1"],
46
49
  print0: false,
47
50
  print1: true,
51
+ print2: false,
48
52
  }
49
53
  expect(fmt.format([["foo", "aaa", 1], ["bar", "bbb", 2], ["baz", "ccc", 3]], options)).to eq(<<-EOS)
50
54
  key1 key2 val1
@@ -60,6 +64,7 @@ baz ccc 3
60
64
  headers: false,
61
65
  print0: false,
62
66
  print1: false,
67
+ print2: true,
63
68
  }
64
69
  expect(fmt.format([["foo", "aaa", 1], ["bar", "bbb", 2], ["baz", "ccc", 3]], options)).to eq("foo aaa 1 bar bbb 2 baz ccc 3\n")
65
70
  end
@@ -70,6 +75,7 @@ baz ccc 3
70
75
  fields: ["key1", "key2", "val1"],
71
76
  print0: false,
72
77
  print1: false,
78
+ print2: true,
73
79
  }
74
80
  expect(fmt.format([["foo", "aaa", 1], ["bar", "bbb", 2], ["baz", "ccc", 3]], options)).to eq("foo aaa 1 bar bbb 2 baz ccc 3\n")
75
81
  end
@@ -12,6 +12,7 @@ describe "text" do
12
12
  headers: false,
13
13
  print0: true,
14
14
  print1: false,
15
+ print2: false,
15
16
  }
16
17
  expect(fmt.format([["foo", "aaa", 1], ["bar", "bbb", 2], ["baz", "ccc", 3]], options)).to eq("foo aaa 1\0bar bbb 2\0baz ccc 3")
17
18
  end
@@ -22,6 +23,7 @@ describe "text" do
22
23
  fields: ["key1", "key2", "val1"],
23
24
  print0: true,
24
25
  print1: false,
26
+ print2: false,
25
27
  }
26
28
  expect(fmt.format([["foo", "aaa", 1], ["bar", "bbb", 2], ["baz", "ccc", 3]], options)).to eq("foo aaa 1\0bar bbb 2\0baz ccc 3")
27
29
  end
@@ -31,6 +33,7 @@ describe "text" do
31
33
  headers: false,
32
34
  print0: false,
33
35
  print1: true,
36
+ print2: false,
34
37
  }
35
38
  expect(fmt.format([["foo", "aaa", 1], ["bar", "bbb", 2], ["baz", "ccc", 3]], options)).to eq(<<-EOS)
36
39
  foo aaa 1
@@ -45,6 +48,7 @@ baz ccc 3
45
48
  fields: ["key1", "key2", "val1"],
46
49
  print0: false,
47
50
  print1: true,
51
+ print2: false,
48
52
  }
49
53
  expect(fmt.format([["foo", "aaa", 1], ["bar", "bbb", 2], ["baz", "ccc", 3]], options)).to eq(<<-EOS)
50
54
  key1 key2 val1
@@ -60,6 +64,7 @@ baz ccc 3
60
64
  headers: false,
61
65
  print0: false,
62
66
  print1: false,
67
+ print2: true,
63
68
  }
64
69
  expect(fmt.format([["foo", "aaa", 1], ["bar", "bbb", 2], ["baz", "ccc", 3]], options)).to eq("foo aaa 1 bar bbb 2 baz ccc 3\n")
65
70
  end
@@ -70,6 +75,7 @@ baz ccc 3
70
75
  fields: ["key1", "key2", "val1"],
71
76
  print0: false,
72
77
  print1: false,
78
+ print2: true,
73
79
  }
74
80
  expect(fmt.format([["foo", "aaa", 1], ["bar", "bbb", 2], ["baz", "ccc", 3]], options)).to eq("foo aaa 1 bar bbb 2 baz ccc 3\n")
75
81
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hotdog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.22.1
4
+ version: 0.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yamashita Yuu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-12 00:00:00.000000000 Z
11
+ date: 2017-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler