hoe 3.13.0 → 3.13.1

Sign up to get free protection for your applications and to get access to all the features.
data/lib/hoe/debug.rb CHANGED
@@ -16,12 +16,12 @@ module Hoe::Debug
16
16
  # :stopdoc:
17
17
 
18
18
  DIFF = if Hoe::WINDOZE
19
- 'diff.exe'
19
+ "diff.exe"
20
20
  else
21
21
  if system("gdiff", __FILE__, __FILE__)
22
- 'gdiff' # solaris and kin suck
22
+ "gdiff" # solaris and kin suck
23
23
  else
24
- 'diff'
24
+ "diff"
25
25
  end
26
26
  end unless defined? DIFF
27
27
 
@@ -31,31 +31,31 @@ module Hoe::Debug
31
31
  # Define tasks for plugin.
32
32
 
33
33
  def define_debug_tasks
34
- desc 'Create a fresh ~/.hoerc file.'
34
+ desc "Create a fresh ~/.hoerc file."
35
35
  task :config_hoe do
36
36
  with_config do |config, path|
37
37
  File.open(path, "w") do |f|
38
38
  YAML.dump(Hoe::DEFAULT_CONFIG.merge(config), f)
39
39
  end
40
40
 
41
- editor = ENV['EDITOR'] || 'vi'
42
- system "#{editor} #{path}" if ENV['SHOW_EDITOR'] != 'no'
41
+ editor = ENV["EDITOR"] || "vi"
42
+ system "#{editor} #{path}" if ENV["SHOW_EDITOR"] != "no"
43
43
  end
44
44
  end
45
45
 
46
- desc 'Verify the manifest.'
46
+ desc "Verify the manifest."
47
47
  task :check_manifest => :clean do
48
48
  check_manifest
49
49
  end
50
50
 
51
- desc 'Show information about the gem.'
51
+ desc "Show information about the gem."
52
52
  task :debug_gem do
53
53
  puts spec.to_ruby
54
54
  end
55
55
 
56
56
  task :isolate # stub
57
57
  task :irb => :isolate do
58
- name = spec.name.gsub("-", '/')
58
+ name = spec.name.gsub("-", "/")
59
59
  file = (spec.files.grep(/^lib\/#{name}\.rb$/).first ||
60
60
  spec.files.grep(/^lib\/[^\/]*\.rb$/).first)
61
61
 
@@ -71,12 +71,12 @@ module Hoe::Debug
71
71
 
72
72
  def check_manifest
73
73
  f = "Manifest.tmp"
74
- require 'find'
74
+ require "find"
75
75
  files = []
76
76
  with_config do |config, _|
77
77
  exclusions = config["exclude"]
78
78
 
79
- Find.find '.' do |path|
79
+ Find.find "." do |path|
80
80
  next unless File.file? path
81
81
  next if path =~ exclusions
82
82
  files << path[2..-1]
@@ -84,7 +84,7 @@ module Hoe::Debug
84
84
 
85
85
  files = files.sort.join "\n"
86
86
 
87
- File.open f, 'w' do |fp| fp.puts files end
87
+ File.open f, "w" do |fp| fp.puts files end
88
88
 
89
89
  verbose = { :verbose => Rake.application.options.verbose }
90
90
 
data/lib/hoe/deps.rb CHANGED
@@ -1,5 +1,5 @@
1
- require 'rubygems/remote_fetcher'
2
- require 'uri'
1
+ require "rubygems/remote_fetcher"
2
+ require "uri"
3
3
 
4
4
  ##
5
5
  # Deps plugin for hoe.
@@ -15,7 +15,7 @@ module Hoe::Deps
15
15
  ##
16
16
  # The main rubygems repository.
17
17
 
18
- GEMURL = URI.parse 'http://rubygems.org'
18
+ GEMURL = URI.parse "http://rubygems.org"
19
19
 
20
20
  ##
21
21
  # Define tasks for plugin.
@@ -38,12 +38,12 @@ module Hoe::Deps
38
38
  end
39
39
  end
40
40
 
41
- desc 'Install missing dependencies.'
41
+ desc "Install missing dependencies."
42
42
  task :check_extra_deps do
43
43
  check_extra_deps_task
44
44
  end
45
45
 
46
- desc 'Install missing plugins.'
46
+ desc "Install missing plugins."
47
47
  task :install_plugins do
48
48
  install_missing_plugins
49
49
  end
@@ -72,8 +72,8 @@ module Hoe::Deps
72
72
 
73
73
  puts " dependents:"
74
74
  unless deps.empty? then
75
- deps.sort_by { |spec| spec.full_name }.each do |spec|
76
- vers = spec.dependencies.find {|s| s.name == name}.requirements_list
75
+ deps.sort_by(&:full_name).each do |spec|
76
+ vers = spec.dependencies.find { |s| s.name == name }.requirements_list
77
77
  puts " %-*s - %s" % [max, spec.full_name, vers.join(", ")]
78
78
  end
79
79
  else
@@ -88,11 +88,11 @@ module Hoe::Deps
88
88
  abort "Couldn't find gem: #{self.name}" unless gem
89
89
 
90
90
  deps = self.dependent_upon self.name
91
- email = deps.map { |s| s.email }.compact.flatten.sort.uniq
91
+ email = deps.map(&:email).compact.flatten.sort.uniq
92
92
  email = email.map { |s| s.split(/,\s*/) }.flatten.sort.uniq
93
93
 
94
94
  email.map! { |s| # don't you people realize how easy this is?
95
- s.gsub(/ at | _at_ |\s*(atmark|@nospam@|-at?-|@at?@|<at?>|\[at?\]|\(at?\))\s*/i, '@').gsub(/\s*(dot|\[d(ot)?\]|\.dot\.)\s*/i, '.').gsub(/\s+com$/, '.com')
95
+ s.gsub(/ at | _at_ |\s*(atmark|@nospam@|-at?-|@at?@|<at?>|\[at?\]|\(at?\))\s*/i, "@").gsub(/\s*(dot|\[d(ot)?\]|\.dot\.)\s*/i, ".").gsub(/\s+com$/, ".com")
96
96
  }
97
97
 
98
98
  bad, good = email.partition { |e| e !~ /^[\w.+-]+\@[\w.+-]+$/ }
@@ -111,7 +111,7 @@ module Hoe::Deps
111
111
  mkdir "deps" unless File.directory? "deps"
112
112
  Dir.chdir "deps" do
113
113
  begin
114
- deps.sort_by { |spec| spec.full_name }.each do |spec|
114
+ deps.sort_by(&:full_name).each do |spec|
115
115
  full_name = spec.full_name
116
116
  tgz_name = "#{full_name}.tgz"
117
117
  gem_name = "#{full_name}.gem"
@@ -122,7 +122,7 @@ module Hoe::Deps
122
122
  begin
123
123
  warn "downloading #{full_name}"
124
124
  Gem::RemoteFetcher.fetcher.download(spec, GEMURL, Dir.pwd)
125
- FileUtils.mv "cache/#{gem_name}", '.'
125
+ FileUtils.mv "cache/#{gem_name}", "."
126
126
  rescue Gem::RemoteFetcher::FetchError
127
127
  warn " failed"
128
128
  next
@@ -149,7 +149,7 @@ module Hoe::Deps
149
149
 
150
150
  return @@index if @@index
151
151
 
152
- dump = unless File.exist? '.source_index' then
152
+ dump = unless File.exist? ".source_index" then
153
153
  warn "Fetching full index and caching. This can take a while."
154
154
  url = GEMURL + "Marshal.#{Gem.marshal_version}.Z"
155
155
  dump = Gem::RemoteFetcher.fetcher.fetch_path url
@@ -160,15 +160,15 @@ module Hoe::Deps
160
160
 
161
161
  h = {}
162
162
  Hash[ary].values.sort.each { |spec| h[spec.name] = spec }
163
- ary = h.map { |k,v| [v.full_name, v] }
163
+ ary = h.map { |_, v| [v.full_name, v] }
164
164
 
165
165
  dump = Marshal.dump ary
166
166
 
167
- open '.source_index', 'wb' do |io| io.write dump end
167
+ open ".source_index", "wb" do |io| io.write dump end
168
168
 
169
169
  dump
170
170
  else
171
- open '.source_index', 'rb' do |io| io.read end
171
+ open ".source_index", "rb" do |io| io.read end
172
172
  end
173
173
 
174
174
  @@index = Marshal.load dump
@@ -194,10 +194,10 @@ module Hoe::Deps
194
194
  # Installs plugins that aren't currently installed
195
195
 
196
196
  def install_missing_plugins plugins = Hoe.bad_plugins
197
- version = '>= 0'
197
+ version = ">= 0"
198
198
 
199
199
  plugins.each do |name|
200
- dash_name = name.to_s.gsub '_', '-'
200
+ dash_name = name.to_s.gsub "_", "-"
201
201
 
202
202
  next if have_gem?("hoe-#{name}") or
203
203
  have_gem?(name) or
data/lib/hoe/flay.rb CHANGED
@@ -22,11 +22,9 @@ module Hoe::Flay
22
22
  # Define tasks for plugin.
23
23
 
24
24
  def define_flay_tasks
25
- begin
26
- require 'flay_task'
27
- FlayTask.new :flay, self.flay_threshold
28
- rescue Exception
29
- # skip
30
- end
25
+ require "flay_task"
26
+ FlayTask.new :flay, self.flay_threshold
27
+ rescue Exception
28
+ # skip
31
29
  end
32
30
  end
data/lib/hoe/flog.rb CHANGED
@@ -28,11 +28,9 @@ module Hoe::Flog
28
28
  # Define tasks for plugin.
29
29
 
30
30
  def define_flog_tasks
31
- begin
32
- require 'flog_task'
33
- FlogTask.new :flog, self.flog_threshold, nil, self.flog_method
34
- rescue LoadError
35
- # skip
36
- end
31
+ require "flog_task"
32
+ FlogTask.new :flog, self.flog_threshold, nil, self.flog_method
33
+ rescue LoadError
34
+ # skip
37
35
  end
38
36
  end
data/lib/hoe/gemcutter.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'rake'
1
+ require "rake"
2
2
 
3
3
  module Hoe::Gemcutter
4
4
  include Rake::DSL if defined?(Rake::DSL)
data/lib/hoe/inline.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'rbconfig'
1
+ require "rbconfig"
2
2
 
3
3
  ##
4
4
  # Hoe allows bundling of pre-compiled extensions in the +package+ task.
@@ -35,36 +35,36 @@ module Hoe::Inline
35
35
  def define_inline_tasks
36
36
  task :test => :clean
37
37
 
38
- if ENV['INLINE'] then
39
- s.platform = ENV['FORCE_PLATFORM'] || Gem::Platform::CURRENT
38
+ return unless ENV["INLINE"]
40
39
 
41
- # Try collecting Inline extensions for +name+
42
- if defined?(Inline) then
43
- directory 'lib/inline'
40
+ s.platform = ENV["FORCE_PLATFORM"] || Gem::Platform::CURRENT
44
41
 
45
- dlext = RbConfig::CONFIG['DLEXT']
42
+ return unless defined? Inline
46
43
 
47
- Inline.registered_inline_classes.each do |cls|
48
- name = cls.name.gsub(/::/, '')
49
- # name of the extension is CamelCase
50
- alternate_name = if name =~ /[A-Z]/ then
51
- name.gsub(/([A-Z])/, '_\1').downcase.sub(/^_/, '')
52
- elsif name =~ /_/ then
53
- name.capitalize.gsub(/_([a-z])/) { $1.upcase }
54
- end
55
- extensions = Dir.chdir(Inline::directory) {
56
- Dir["Inline_{#{name},#{alternate_name}}_*.#{dlext}"]
57
- }
44
+ # Try collecting Inline extensions for +name+
45
+ directory "lib/inline"
58
46
 
59
- extensions.each do |ext|
60
- # add the inlined extension to the spec files
61
- s.files += ["lib/inline/#{ext}"]
47
+ dlext = RbConfig::CONFIG["DLEXT"]
62
48
 
63
- # include the file in the tasks
64
- file "lib/inline/#{ext}" => ["lib/inline"] do
65
- cp File.join(Inline::directory, ext), "lib/inline"
66
- end
67
- end
49
+ Inline.registered_inline_classes.each do |cls|
50
+ name = cls.name.gsub(/::/, "")
51
+ # name of the extension is CamelCase
52
+ alternate_name = if name =~ /[A-Z]/ then
53
+ name.gsub(/([A-Z])/, '_\1').downcase.sub(/^_/, "")
54
+ elsif name =~ /_/ then
55
+ name.capitalize.gsub(/_([a-z])/) { $1.upcase }
56
+ end
57
+ extensions = Dir.chdir(Inline.directory) {
58
+ Dir["Inline_{#{name},#{alternate_name}}_*.#{dlext}"]
59
+ }
60
+
61
+ extensions.each do |ext|
62
+ # add the inlined extension to the spec files
63
+ s.files += ["lib/inline/#{ext}"]
64
+
65
+ # include the file in the tasks
66
+ file "lib/inline/#{ext}" => ["lib/inline"] do
67
+ cp File.join(Inline.directory, ext), "lib/inline"
68
68
  end
69
69
  end
70
70
  end
data/lib/hoe/newb.rb CHANGED
@@ -9,7 +9,7 @@ module Hoe::Newb
9
9
  # define tasks for the newb plugin
10
10
  def define_newb_tasks
11
11
  desc "Install deps, generate docs, run tests/specs."
12
- task :newb => %w(check_extra_deps install_plugins docs default) do
12
+ task :newb => %w[check_extra_deps install_plugins docs default] do
13
13
  puts <<-END
14
14
 
15
15
  GOOD TO GO! Tests are passing, docs are generated,
data/lib/hoe/package.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  begin
2
- require 'rubygems/package_task'
2
+ require "rubygems/package_task"
3
3
  rescue LoadError
4
4
  # rake/gempackagetask will go away some day
5
- require 'rake/gempackagetask'
5
+ require "rake/gempackagetask"
6
6
  Gem::PackageTask = Rake::GemPackageTask
7
7
  end
8
8
 
@@ -46,12 +46,12 @@ module Hoe::Package
46
46
  pkg.need_zip = @need_zip
47
47
  end
48
48
 
49
- desc 'Install the package as a gem. (opt. NOSUDO=1)'
49
+ desc "Install the package as a gem. (opt. NOSUDO=1)"
50
50
  task :install_gem => [:clean, :package, :check_extra_deps] do
51
- install_gem Dir['pkg/*.gem'].first
51
+ install_gem Dir["pkg/*.gem"].first
52
52
  end
53
53
 
54
- desc 'Package and upload; Requires VERSION=x.y.z (optional PRE=a.1)'
54
+ desc "Package and upload; Requires VERSION=x.y.z (optional PRE=a.1)"
55
55
  task :release => [:prerelease, :release_to, :postrelease]
56
56
 
57
57
  # no doco, invisible hook
@@ -69,7 +69,7 @@ module Hoe::Package
69
69
  task :release_sanity do
70
70
  v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z"
71
71
 
72
- pre = ENV['PRERELEASE'] || ENV['PRE']
72
+ pre = ENV["PRERELEASE"] || ENV["PRE"]
73
73
  v += ".#{pre}" if pre
74
74
 
75
75
  abort "Versions don't match #{v} vs #{version}" if v != version
@@ -87,13 +87,13 @@ module Hoe::Package
87
87
  ##
88
88
  # Install the named gem.
89
89
 
90
- def install_gem name, version = nil, rdoc=true
90
+ def install_gem name, version = nil, rdoc = true
91
91
  should_not_sudo = Hoe::WINDOZE || ENV["NOSUDO"] || File.writable?(Gem.dir)
92
- null_dev = Hoe::WINDOZE ? '> NUL 2>&1' : '> /dev/null 2>&1'
92
+ null_dev = Hoe::WINDOZE ? "> NUL 2>&1" : "> /dev/null 2>&1"
93
93
 
94
- gem_cmd = Gem.default_exec_format % 'gem'
95
- sudo = 'sudo ' unless should_not_sudo
96
- local = '--local' unless version
94
+ gem_cmd = Gem.default_exec_format % "gem"
95
+ sudo = "sudo " unless should_not_sudo
96
+ local = "--local" unless version
97
97
  version = "--version '#{version}'" if version
98
98
 
99
99
  cmd = "#{sudo}#{gem_cmd} install #{local} #{name} #{version}"
@@ -105,13 +105,14 @@ module Hoe::Package
105
105
  end
106
106
 
107
107
  def prerelease_version # :nodoc:
108
- pre = ENV['PRERELEASE'] || ENV['PRE']
109
- if pre then
110
- spec.version.version << "." << pre if pre
108
+ pre = ENV["PRERELEASE"] || ENV["PRE"]
111
109
 
112
- abort "ERROR: You should format PRE like pre or alpha.1 or something" if
113
- (Gem::VERSION < "1.4" and pre !~ /^[a-z]+(\.\d+)?$/) or
114
- (Gem::VERSION >= "1.4" and pre !~ /^[a-z]+(\.?\d+)?$/)
115
- end
110
+ return unless pre
111
+
112
+ spec.version.version << "." << pre if pre
113
+
114
+ abort "ERROR: You should format PRE like pre or alpha.1 or something" if
115
+ (Gem::VERSION < "1.4" and pre !~ /^[a-z]+(\.\d+)?$/) or
116
+ (Gem::VERSION >= "1.4" and pre !~ /^[a-z]+(\.?\d+)?$/)
116
117
  end
117
118
  end
data/lib/hoe/publish.rb CHANGED
@@ -79,9 +79,9 @@ module Hoe::Publish
79
79
  "url" => "url",
80
80
  "blog_id" => "blog_id",
81
81
  "extra_headers" => {
82
- "mt_convert_breaks" => "markdown"
82
+ "mt_convert_breaks" => "markdown",
83
83
  },
84
- }
84
+ },
85
85
  ]
86
86
 
87
87
  ##
@@ -89,11 +89,11 @@ module Hoe::Publish
89
89
 
90
90
  def initialize_publish
91
91
  self.blog_categories ||= [self.name]
92
- self.local_rdoc_dir ||= 'doc'
92
+ self.local_rdoc_dir ||= "doc"
93
93
  self.need_rdoc ||= true
94
94
  self.rdoc_locations ||= []
95
95
  self.remote_rdoc_dir ||= self.name
96
- self.rsync_args ||= '-av -O --delete'
96
+ self.rsync_args ||= "-av -O --delete"
97
97
  end
98
98
 
99
99
  ##
@@ -117,7 +117,7 @@ module Hoe::Publish
117
117
 
118
118
  desc "Generate rdoc coverage report"
119
119
  task :dcov => :isolate do
120
- sh(*make_rdoc_cmd('-C'))
120
+ sh(*make_rdoc_cmd("-C"))
121
121
  end
122
122
 
123
123
  desc "Remove RDoc files"
@@ -127,9 +127,9 @@ module Hoe::Publish
127
127
 
128
128
  task :clobber => :clobber_docs
129
129
 
130
- desc 'Generate ri locally for testing.'
130
+ desc "Generate ri locally for testing."
131
131
  task :ridocs => [:clean, :isolate] do
132
- ruby(*make_rdoc_cmd('--ri', '-o', 'ri'))
132
+ ruby(*make_rdoc_cmd("--ri", "-o", "ri"))
133
133
  end
134
134
  end
135
135
 
@@ -143,7 +143,7 @@ module Hoe::Publish
143
143
  publish_on_announce_task
144
144
  end
145
145
 
146
- desc 'Generate email announcement file.'
146
+ desc "Generate email announcement file."
147
147
  task :debug_email do
148
148
  puts generate_email
149
149
  end
@@ -153,47 +153,47 @@ module Hoe::Publish
153
153
  post_blog_task
154
154
  end
155
155
 
156
- desc 'Announce your release.'
156
+ desc "Announce your release."
157
157
  task :announce => [:post_blog, :publish_on_announce ]
158
158
  end
159
159
 
160
160
  def publish_docs_task # :nodoc:
161
161
  warn "no rdoc_location values" if rdoc_locations.empty?
162
162
  self.rdoc_locations.each do |dest|
163
- sh %{rsync #{rsync_args} #{local_rdoc_dir}/ #{dest}}
163
+ sh %(rsync #{rsync_args} #{local_rdoc_dir}/ #{dest})
164
164
  end
165
165
  end
166
166
 
167
167
  def publish_on_announce_task # :nodoc:
168
168
  with_config do |config, _|
169
- Rake::Task['publish_docs'].invoke if config["publish_on_announce"]
169
+ Rake::Task["publish_docs"].invoke if config["publish_on_announce"]
170
170
  end
171
171
  end
172
172
 
173
173
  def post_blog_task # :nodoc:
174
- with_config do |config, path|
175
- break unless config['blogs']
174
+ with_config do |config, _path|
175
+ break unless config["blogs"]
176
176
 
177
- config['blogs'].each do |site|
178
- if site['path'] then
179
- msg = "post_blog_#{site['type']}"
177
+ config["blogs"].each do |site|
178
+ if site["path"] then
179
+ msg = "post_blog_#{site["type"]}"
180
180
  send msg, site
181
181
  system site["cmd"] if site["cmd"]
182
182
  else
183
- require 'xmlrpc/client'
183
+ require "xmlrpc/client"
184
184
 
185
185
  _, title, body, urls = announcement
186
186
  body += "\n\n#{urls}"
187
187
 
188
- server = XMLRPC::Client.new2(site['url'])
189
- content = site['extra_headers'].merge(:title => title,
188
+ server = XMLRPC::Client.new2(site["url"])
189
+ content = site["extra_headers"].merge(:title => title,
190
190
  :description => body,
191
191
  :categories => blog_categories)
192
192
 
193
- server.call('metaWeblog.newPost',
194
- site['blog_id'],
195
- site['user'],
196
- site['password'],
193
+ server.call("metaWeblog.newPost",
194
+ site["blog_id"],
195
+ site["user"],
196
+ site["password"],
197
197
  content,
198
198
  true)
199
199
  end
@@ -225,7 +225,7 @@ module Hoe::Publish
225
225
  Dir.chdir File.expand_path dir do
226
226
  time = Time.at Time.now.to_i # nukes fractions
227
227
  path = [time.strftime("%Y-%m-%d-"),
228
- title.sub(/\W+$/, '').gsub(/\W+/, '-'),
228
+ title.sub(/\W+$/, "").gsub(/\W+/, "-"),
229
229
  ".html.md"].join
230
230
 
231
231
  header = {
@@ -235,7 +235,7 @@ module Hoe::Publish
235
235
  }
236
236
 
237
237
  File.open path, "w" do |f|
238
- f.puts header.to_yaml.gsub(/\s$/, '')
238
+ f.puts header.to_yaml.gsub(/\s$/, "")
239
239
  f.puts "..."
240
240
  f.puts
241
241
  f.puts body
@@ -244,7 +244,7 @@ module Hoe::Publish
244
244
  end
245
245
 
246
246
  def generate_email full = nil # :nodoc:
247
- require 'time'
247
+ require "time"
248
248
 
249
249
  abort "No email 'to' entry. Run `rake config_hoe` to fix." unless
250
250
  !full || email_to
@@ -257,9 +257,12 @@ module Hoe::Publish
257
257
  full && "To: #{email_to.join(", ")}",
258
258
  full && "Date: #{Time.now.rfc2822}",
259
259
  "Subject: [ANN] #{subject}",
260
- "", title,
261
- "", urls,
262
- "", body,
260
+ "",
261
+ title,
262
+ "",
263
+ urls,
264
+ "",
265
+ body,
263
266
  ].compact.join("\n")
264
267
  end
265
268
 
@@ -272,14 +275,13 @@ module Hoe::Publish
272
275
  urls =
273
276
  case self.urls
274
277
  when Hash then
275
- self.urls.map { |k,v| "* #{k}: <#{v.strip.rdoc_to_markdown}>" }
278
+ self.urls.map { |k, v| "* #{k}: <#{v.strip.rdoc_to_markdown}>" }
276
279
  when Array then
277
280
  self.urls.map { |s| "* <#{s.strip.rdoc_to_markdown}>" }
278
281
  else
279
282
  raise "unknown urls format: #{urls.inspect}"
280
283
  end
281
284
 
282
-
283
285
  return subject, title, body, urls.join("\n")
284
286
  end
285
287
  end
@@ -293,6 +295,6 @@ class String
293
295
  # Very basic munge from rdoc to markdown format.
294
296
 
295
297
  def rdoc_to_markdown
296
- self.gsub(/^mailto:/, '').gsub(/^(=+)/) { "#" * $1.size }
298
+ self.gsub(/^mailto:/, "").gsub(/^(=+)/) { "#" * $1.size }
297
299
  end
298
300
  end