sinatra-contrib 2.2.4 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'sinatra/base'
2
4
 
3
5
  module Sinatra
4
-
5
6
  # = Sinatra::Streaming
6
7
  #
7
8
  # Sinatra 1.3 introduced the +stream+ helper. This addon improves the
@@ -84,13 +85,14 @@ module Sinatra
84
85
  end
85
86
 
86
87
  module Stream
87
-
88
88
  attr_accessor :app, :lineno, :pos, :transformer, :closed
89
89
  alias tell pos
90
90
  alias closed? closed
91
91
 
92
92
  def self.extended(obj)
93
- obj.closed, obj.lineno, obj.pos = false, 0, 0
93
+ obj.closed = false
94
+ obj.lineno = 0
95
+ obj.pos = 0
94
96
  obj.callback { obj.closed = true }
95
97
  obj.errback { obj.closed = true }
96
98
  end
@@ -108,6 +110,7 @@ module Sinatra
108
110
  def each
109
111
  # that way body.each.map { ... } works
110
112
  return self unless block_given?
113
+
111
114
  super
112
115
  end
113
116
 
@@ -120,7 +123,8 @@ module Sinatra
120
123
  @transformer ||= nil
121
124
 
122
125
  if @transformer
123
- inner, outer = @transformer, block
126
+ inner = @transformer
127
+ outer = block
124
128
  block = proc { |value| outer[inner[value]] }
125
129
  end
126
130
  @transformer = block
@@ -132,7 +136,7 @@ module Sinatra
132
136
  data.to_s.bytesize
133
137
  end
134
138
 
135
- alias syswrite write
139
+ alias syswrite write
136
140
  alias write_nonblock write
137
141
 
138
142
  def print(*args)
@@ -154,7 +158,7 @@ module Sinatra
154
158
  end
155
159
 
156
160
  def close_read
157
- raise IOError, "closing non-duplex IO for reading"
161
+ raise IOError, 'closing non-duplex IO for reading'
158
162
  end
159
163
 
160
164
  def closed_read?
@@ -171,10 +175,6 @@ module Sinatra
171
175
  settings.default_encoding
172
176
  end
173
177
 
174
- def closed?
175
- @closed
176
- end
177
-
178
178
  def settings
179
179
  app.settings
180
180
  end
@@ -184,7 +184,7 @@ module Sinatra
184
184
  end
185
185
 
186
186
  def not_open_for_reading(*)
187
- raise IOError, "not opened for reading"
187
+ raise IOError, 'not opened for reading'
188
188
  end
189
189
 
190
190
  alias bytes not_open_for_reading
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'sinatra/base'
2
4
  require 'rack'
3
5
  begin
@@ -13,19 +15,6 @@ module Sinatra
13
15
  # Helper methods to ease testing your Sinatra application. Partly extracted
14
16
  # from Sinatra. Testing framework agnostic.
15
17
  module TestHelpers
16
- # Test variant of session, which exposes a `global_env`.
17
- class Session < Rack::Test::Session
18
- def global_env
19
- @global_env ||= {}
20
- end
21
-
22
- private
23
-
24
- def default_env
25
- super.merge global_env
26
- end
27
- end
28
-
29
18
  include Rack::Test::Methods
30
19
  extend Forwardable
31
20
  attr_accessor :settings
@@ -171,7 +160,7 @@ module Sinatra
171
160
  # @param params [Hash]
172
161
  # @param env [Hash]
173
162
  def options(uri, params = {}, env = {}, &block)
174
- env = env_for(uri, env.merge(:method => "OPTIONS", :params => params))
163
+ env = env_for(uri, env.merge(method: 'OPTIONS', params: params))
175
164
  current_session.send(:process_request, uri, env, &block)
176
165
  end
177
166
  end
@@ -183,7 +172,7 @@ module Sinatra
183
172
  # @param params [Hash]
184
173
  # @param env [Hash]
185
174
  def patch(uri, params = {}, env = {}, &block)
186
- env = env_for(uri, env.merge(:method => "PATCH", :params => params))
175
+ env = env_for(uri, env.merge(method: 'PATCH', params: params))
187
176
  current_session.send(:process_request, uri, env, &block)
188
177
  end
189
178
  end
@@ -200,7 +189,8 @@ module Sinatra
200
189
  # @return [Hash] Session of last request, or the empty Hash
201
190
  def session
202
191
  return {} unless last_request?
203
- raise Rack::Test::Error, "session not enabled for app" unless last_env["rack.session"] or app.session?
192
+ raise Rack::Test::Error, 'session not enabled for app' unless last_env['rack.session'] || app.session?
193
+
204
194
  last_request.session
205
195
  end
206
196
 
@@ -208,9 +198,5 @@ module Sinatra
208
198
  def last_env
209
199
  last_request.env
210
200
  end
211
-
212
- def build_rack_test_session(name) # :nodoc:
213
- Session.new rack_mock_session(name)
214
- end
215
201
  end
216
202
  end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'sinatra/base'
2
4
 
3
5
  module Sinatra
4
-
5
6
  # = Sinatra::WebDAV
6
7
  #
7
8
  # This extensions provides WebDAV verbs, as defined by RFC 4918
@@ -37,8 +38,8 @@ module Sinatra
37
38
  module Request
38
39
  def self.included(base)
39
40
  base.class_eval do
40
- alias _safe? safe?
41
- alias _idempotent? idempotent?
41
+ alias_method :_safe?, :safe?
42
+ alias_method :_idempotent?, :idempotent?
42
43
 
43
44
  def safe?
44
45
  _safe? or propfind?
@@ -70,9 +71,9 @@ module Sinatra
70
71
  request_method == 'MOVE'
71
72
  end
72
73
 
73
- #def lock?
74
+ # def lock?
74
75
  # request_method == 'LOCK'
75
- #end
76
+ # end
76
77
 
77
78
  def unlock?
78
79
  request_method == 'UNLOCK'
@@ -84,7 +85,7 @@ module Sinatra
84
85
  def mkcol(path, opts = {}, &bk) route 'MKCOL', path, opts, &bk end
85
86
  def copy(path, opts = {}, &bk) route 'COPY', path, opts, &bk end
86
87
  def move(path, opts = {}, &bk) route 'MOVE', path, opts, &bk end
87
- #def lock(path, opts = {}, &bk) route 'LOCK', path, opts, &bk end
88
+ # def lock(path, opts = {}, &bk) route 'LOCK', path, opts, &bk end
88
89
  def unlock(path, opts = {}, &bk) route 'UNLOCK', path, opts, &bk end
89
90
  end
90
91
 
@@ -1,65 +1,58 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
2
 
3
- version = File.read(File.expand_path("../../VERSION", __FILE__)).strip
3
+ version = File.read(File.expand_path('../VERSION', __dir__)).strip
4
4
 
5
5
  Gem::Specification.new do |s|
6
- s.name = "sinatra-contrib"
6
+ s.name = 'sinatra-contrib'
7
7
  s.version = version
8
- s.description = "Collection of useful Sinatra extensions"
9
- s.homepage = "http://sinatrarb.com/contrib/"
10
- s.license = "MIT"
8
+ s.description = 'Collection of useful Sinatra extensions'
9
+ s.homepage = 'http://sinatrarb.com/contrib/'
10
+ s.license = 'MIT'
11
11
  s.summary = s.description
12
- s.authors = ["https://github.com/sinatra/sinatra/graphs/contributors"]
13
- s.email = "sinatrarb@googlegroups.com"
14
- s.files = Dir["lib/**/*.rb"] + [
15
- "LICENSE",
16
- "README.md",
17
- "Rakefile",
18
- "ideas.md",
19
- "sinatra-contrib.gemspec"
12
+ s.authors = ['https://github.com/sinatra/sinatra/graphs/contributors']
13
+ s.email = 'sinatrarb@googlegroups.com'
14
+ s.files = Dir['lib/**/*.rb'] + [
15
+ 'LICENSE',
16
+ 'README.md',
17
+ 'Rakefile',
18
+ 'ideas.md',
19
+ 'sinatra-contrib.gemspec'
20
20
  ]
21
21
 
22
- if s.respond_to?(:metadata)
23
- s.metadata = {
24
- 'source_code_uri' => 'https://github.com/sinatra/sinatra/tree/master/sinatra-contrib',
25
- 'homepage_uri' => 'http://sinatrarb.com/contrib/',
26
- 'documentation_uri' => 'https://www.rubydoc.info/gems/sinatra-contrib'
27
- }
28
- else
29
- raise <<-EOF
22
+ unless s.respond_to?(:metadata)
23
+ raise <<-WARN
30
24
  RubyGems 2.0 or newer is required to protect against public gem pushes. You can update your rubygems version by running:
31
25
  gem install rubygems-update
32
26
  update_rubygems:
33
27
  gem update --system
34
- EOF
28
+ WARN
35
29
  end
36
30
 
37
- s.required_ruby_version = '>= 2.3.0'
31
+ s.metadata = {
32
+ 'source_code_uri' => 'https://github.com/sinatra/sinatra/tree/master/sinatra-contrib',
33
+ 'homepage_uri' => 'http://sinatrarb.com/contrib/',
34
+ 'documentation_uri' => 'https://www.rubydoc.info/gems/sinatra-contrib',
35
+ 'rubygems_mfa_required' => 'true'
36
+ }
38
37
 
39
- s.add_dependency "sinatra", version
40
- s.add_dependency "mustermann", "~> 2.0"
41
- s.add_dependency "tilt", "~> 2.0"
42
- s.add_dependency "rack-protection", version
43
- s.add_dependency "multi_json"
38
+ s.required_ruby_version = '>= 2.6.0'
44
39
 
45
- s.add_development_dependency "rspec", "~> 3.4"
46
- s.add_development_dependency "haml", "~> 5"
47
- s.add_development_dependency "erubi"
48
- s.add_development_dependency "erubis"
49
- s.add_development_dependency "slim"
50
- s.add_development_dependency "less"
51
- s.add_development_dependency "sass"
52
- s.add_development_dependency "builder"
53
- s.add_development_dependency "liquid"
54
- s.add_development_dependency "redcarpet"
55
- s.add_development_dependency "RedCloth", "~> 4.2.9"
56
- s.add_development_dependency "asciidoctor"
57
- s.add_development_dependency "radius"
58
- s.add_development_dependency "coffee-script"
59
- s.add_development_dependency "nokogiri"
60
- s.add_development_dependency "creole"
61
- s.add_development_dependency "wikicloth"
62
- s.add_development_dependency "markaby"
63
- s.add_development_dependency "rake", "< 11"
64
- s.add_development_dependency "rack-test"
40
+ s.add_dependency 'multi_json'
41
+ s.add_dependency 'mustermann', '~> 3.0'
42
+ s.add_dependency 'rack-protection', version
43
+ s.add_dependency 'sinatra', version
44
+ s.add_dependency 'tilt', '~> 2.0'
45
+
46
+ s.add_development_dependency 'asciidoctor'
47
+ s.add_development_dependency 'builder'
48
+ s.add_development_dependency 'erubi'
49
+ s.add_development_dependency 'haml'
50
+ s.add_development_dependency 'liquid'
51
+ s.add_development_dependency 'markaby'
52
+ s.add_development_dependency 'nokogiri'
53
+ s.add_development_dependency 'rack-test', '~> 2'
54
+ s.add_development_dependency 'rake', '>= 12.3.3'
55
+ s.add_development_dependency 'redcarpet'
56
+ s.add_development_dependency 'rspec', '~> 3'
57
+ s.add_development_dependency 'slim'
65
58
  end
metadata CHANGED
@@ -1,171 +1,87 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-contrib
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.4
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - https://github.com/sinatra/sinatra/graphs/contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-16 00:00:00.000000000 Z
11
+ date: 2022-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: sinatra
14
+ name: multi_json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 2.2.4
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 2.2.4
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mustermann
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2.0'
33
+ version: '3.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '2.0'
41
- - !ruby/object:Gem::Dependency
42
- name: tilt
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '2.0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '2.0'
40
+ version: '3.0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rack-protection
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - '='
60
46
  - !ruby/object:Gem::Version
61
- version: 2.2.4
47
+ version: 3.0.0
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - '='
67
53
  - !ruby/object:Gem::Version
68
- version: 2.2.4
54
+ version: 3.0.0
69
55
  - !ruby/object:Gem::Dependency
70
- name: multi_json
56
+ name: sinatra
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - ">="
59
+ - - '='
74
60
  - !ruby/object:Gem::Version
75
- version: '0'
61
+ version: 3.0.0
76
62
  type: :runtime
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: rspec
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '3.4'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
66
+ - - '='
95
67
  - !ruby/object:Gem::Version
96
- version: '3.4'
68
+ version: 3.0.0
97
69
  - !ruby/object:Gem::Dependency
98
- name: haml
70
+ name: tilt
99
71
  requirement: !ruby/object:Gem::Requirement
100
72
  requirements:
101
73
  - - "~>"
102
74
  - !ruby/object:Gem::Version
103
- version: '5'
104
- type: :development
75
+ version: '2.0'
76
+ type: :runtime
105
77
  prerelease: false
106
78
  version_requirements: !ruby/object:Gem::Requirement
107
79
  requirements:
108
80
  - - "~>"
109
81
  - !ruby/object:Gem::Version
110
- version: '5'
111
- - !ruby/object:Gem::Dependency
112
- name: erubi
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: erubis
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: slim
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: less
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: '0'
82
+ version: '2.0'
167
83
  - !ruby/object:Gem::Dependency
168
- name: sass
84
+ name: asciidoctor
169
85
  requirement: !ruby/object:Gem::Requirement
170
86
  requirements:
171
87
  - - ">="
@@ -193,21 +109,7 @@ dependencies:
193
109
  - !ruby/object:Gem::Version
194
110
  version: '0'
195
111
  - !ruby/object:Gem::Dependency
196
- name: liquid
197
- requirement: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - ">="
200
- - !ruby/object:Gem::Version
201
- version: '0'
202
- type: :development
203
- prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
205
- requirements:
206
- - - ">="
207
- - !ruby/object:Gem::Version
208
- version: '0'
209
- - !ruby/object:Gem::Dependency
210
- name: redcarpet
112
+ name: erubi
211
113
  requirement: !ruby/object:Gem::Requirement
212
114
  requirements:
213
115
  - - ">="
@@ -221,21 +123,7 @@ dependencies:
221
123
  - !ruby/object:Gem::Version
222
124
  version: '0'
223
125
  - !ruby/object:Gem::Dependency
224
- name: RedCloth
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - "~>"
228
- - !ruby/object:Gem::Version
229
- version: 4.2.9
230
- type: :development
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - "~>"
235
- - !ruby/object:Gem::Version
236
- version: 4.2.9
237
- - !ruby/object:Gem::Dependency
238
- name: asciidoctor
126
+ name: haml
239
127
  requirement: !ruby/object:Gem::Requirement
240
128
  requirements:
241
129
  - - ">="
@@ -249,7 +137,7 @@ dependencies:
249
137
  - !ruby/object:Gem::Version
250
138
  version: '0'
251
139
  - !ruby/object:Gem::Dependency
252
- name: radius
140
+ name: liquid
253
141
  requirement: !ruby/object:Gem::Requirement
254
142
  requirements:
255
143
  - - ">="
@@ -263,7 +151,7 @@ dependencies:
263
151
  - !ruby/object:Gem::Version
264
152
  version: '0'
265
153
  - !ruby/object:Gem::Dependency
266
- name: coffee-script
154
+ name: markaby
267
155
  requirement: !ruby/object:Gem::Requirement
268
156
  requirements:
269
157
  - - ">="
@@ -291,35 +179,35 @@ dependencies:
291
179
  - !ruby/object:Gem::Version
292
180
  version: '0'
293
181
  - !ruby/object:Gem::Dependency
294
- name: creole
182
+ name: rack-test
295
183
  requirement: !ruby/object:Gem::Requirement
296
184
  requirements:
297
- - - ">="
185
+ - - "~>"
298
186
  - !ruby/object:Gem::Version
299
- version: '0'
187
+ version: '2'
300
188
  type: :development
301
189
  prerelease: false
302
190
  version_requirements: !ruby/object:Gem::Requirement
303
191
  requirements:
304
- - - ">="
192
+ - - "~>"
305
193
  - !ruby/object:Gem::Version
306
- version: '0'
194
+ version: '2'
307
195
  - !ruby/object:Gem::Dependency
308
- name: wikicloth
196
+ name: rake
309
197
  requirement: !ruby/object:Gem::Requirement
310
198
  requirements:
311
199
  - - ">="
312
200
  - !ruby/object:Gem::Version
313
- version: '0'
201
+ version: 12.3.3
314
202
  type: :development
315
203
  prerelease: false
316
204
  version_requirements: !ruby/object:Gem::Requirement
317
205
  requirements:
318
206
  - - ">="
319
207
  - !ruby/object:Gem::Version
320
- version: '0'
208
+ version: 12.3.3
321
209
  - !ruby/object:Gem::Dependency
322
- name: markaby
210
+ name: redcarpet
323
211
  requirement: !ruby/object:Gem::Requirement
324
212
  requirements:
325
213
  - - ">="
@@ -333,21 +221,21 @@ dependencies:
333
221
  - !ruby/object:Gem::Version
334
222
  version: '0'
335
223
  - !ruby/object:Gem::Dependency
336
- name: rake
224
+ name: rspec
337
225
  requirement: !ruby/object:Gem::Requirement
338
226
  requirements:
339
- - - "<"
227
+ - - "~>"
340
228
  - !ruby/object:Gem::Version
341
- version: '11'
229
+ version: '3'
342
230
  type: :development
343
231
  prerelease: false
344
232
  version_requirements: !ruby/object:Gem::Requirement
345
233
  requirements:
346
- - - "<"
234
+ - - "~>"
347
235
  - !ruby/object:Gem::Version
348
- version: '11'
236
+ version: '3'
349
237
  - !ruby/object:Gem::Dependency
350
- name: rack-test
238
+ name: slim
351
239
  requirement: !ruby/object:Gem::Requirement
352
240
  requirements:
353
241
  - - ">="
@@ -379,7 +267,6 @@ files:
379
267
  - lib/sinatra/contrib/version.rb
380
268
  - lib/sinatra/cookies.rb
381
269
  - lib/sinatra/custom_logger.rb
382
- - lib/sinatra/decompile.rb
383
270
  - lib/sinatra/engine_tracking.rb
384
271
  - lib/sinatra/extension.rb
385
272
  - lib/sinatra/json.rb
@@ -402,6 +289,7 @@ metadata:
402
289
  source_code_uri: https://github.com/sinatra/sinatra/tree/master/sinatra-contrib
403
290
  homepage_uri: http://sinatrarb.com/contrib/
404
291
  documentation_uri: https://www.rubydoc.info/gems/sinatra-contrib
292
+ rubygems_mfa_required: 'true'
405
293
  post_install_message:
406
294
  rdoc_options: []
407
295
  require_paths:
@@ -410,15 +298,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
410
298
  requirements:
411
299
  - - ">="
412
300
  - !ruby/object:Gem::Version
413
- version: 2.3.0
301
+ version: 2.6.0
414
302
  required_rubygems_version: !ruby/object:Gem::Requirement
415
303
  requirements:
416
304
  - - ">="
417
305
  - !ruby/object:Gem::Version
418
306
  version: '0'
419
307
  requirements: []
420
- rubyforge_project:
421
- rubygems_version: 2.7.6.3
308
+ rubygems_version: 3.2.3
422
309
  signing_key:
423
310
  specification_version: 4
424
311
  summary: Collection of useful Sinatra extensions
@@ -1,5 +0,0 @@
1
- warn "Sinatra::Decompile is deprecated without replacement."
2
-
3
- def warn(message)
4
- super "#{caller.first[/^[^:]:\d+:/]} warning: #{message}"
5
- end