mirror of
https://github.com/ruby/ruby.git
synced 2025-08-23 13:04:13 +02:00

Followup: https://github.com/ruby/strscan/pull/115 `scan_integer` is now implemented in Ruby as to efficiently handle keyword arguments without allocating a Hash. Given the goal of `scan_integer` is to more effciently parse integers without having to allocate an intermediary object, using `rb_scan_args` would defeat the purpose. Additionally, the C implementation now uses `rb_isdigit` and `rb_isxdigit`, because on Windows `isdigit` is locale dependent.
49 lines
1.3 KiB
Ruby
49 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
#
|
|
source_version = ["", "ext/strscan/"].find do |dir|
|
|
begin
|
|
break File.open(File.join(__dir__, "#{dir}strscan.c")) {|f|
|
|
f.gets("\n#define STRSCAN_VERSION ")
|
|
f.gets[/\s*"(.+)"/, 1]
|
|
}
|
|
rescue Errno::ENOENT
|
|
end
|
|
end
|
|
|
|
Gem::Specification.new do |s|
|
|
s.name = "strscan"
|
|
s.version = source_version
|
|
s.summary = "Provides lexical scanning operations on a String."
|
|
s.description = "Provides lexical scanning operations on a String."
|
|
|
|
files = [
|
|
"COPYING",
|
|
"LICENSE.txt",
|
|
"lib/strscan/strscan.rb"
|
|
]
|
|
|
|
s.require_paths = %w{lib}
|
|
|
|
if RUBY_ENGINE == "jruby"
|
|
files << "lib/strscan.jar"
|
|
files << "ext/jruby/lib/strscan.rb"
|
|
s.require_paths += %w{ext/jruby/lib}
|
|
s.platform = "java"
|
|
else
|
|
files << "ext/strscan/extconf.rb"
|
|
files << "ext/strscan/strscan.c"
|
|
s.rdoc_options << "-idoc"
|
|
s.extra_rdoc_files = [
|
|
".rdoc_options",
|
|
*Dir.glob("doc/strscan/**/*")
|
|
]
|
|
s.extensions = %w{ext/strscan/extconf.rb}
|
|
end
|
|
s.files = files
|
|
s.required_ruby_version = ">= 2.4.0"
|
|
|
|
s.authors = ["Minero Aoki", "Sutou Kouhei", "Charles Oliver Nutter"]
|
|
s.email = [nil, "kou@cozmixng.org", "headius@headius.com"]
|
|
s.homepage = "https://github.com/ruby/strscan"
|
|
s.licenses = ["Ruby", "BSD-2-Clause"]
|
|
end
|