utf8_proc 0.4.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b0bcc124a9c3b7454adce5e3cbd9683bd23348df
4
- data.tar.gz: 5f02f3653af737024f76ac89a4bbcd46fe1edc8a
3
+ metadata.gz: ef828b3bc3e2413f1ef0df107c8924eaa84cac4a
4
+ data.tar.gz: c4fe505d4cdb442a921df2bc3bd2d1bd0a08d08b
5
5
  SHA512:
6
- metadata.gz: 556039eb22e607c1189a8ddd5b2ea3c9e248039403a6b1d08267002d01c979ce79e51c31aa96608e7c4c5b2a6b3872edc15adb0911846e49a9c40c86c29072fc
7
- data.tar.gz: 2954531729a7da56ce6b035e1e7ce185da96accfdeea1e16f99fe2f53ee27ed1e14855f0d338a69105d0e1e606ef0fc8c92bf052d7c7b98cc4ad296b7d6a4a08
6
+ metadata.gz: ea8ec35886cf54a9ce7047ba26e66a0904d4171a26a2697a656dc4d746c3509a6123e7e926beb27f26960bd5d218ade3377b0c38efcc2cafb1acf2ce5ea612d6
7
+ data.tar.gz: 886eb31311b4d4f5559632d0347cd81ab6378d62285a958f0d2a2fcc193ae7f82aeefe945a192eee4d77d56ebdffa68426a0e4993890e83eec2bb305da3dbb5c
data/Gemfile CHANGED
@@ -1,11 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  source "https://rubygems.org"
3
3
 
4
- # Eagerly load a version of the OpenSSL gem on MRI Ruby 2.4
5
- # Workaround for https://github.com/bundler/bundler/issues/5235
6
- if defined?(RUBY_DESCRIPTION) && RUBY_DESCRIPTION.start_with?("ruby 2.4")
7
- gem "openssl"
8
- end
9
-
10
4
  # Specify your gem's dependencies in icu_test.gemspec
11
5
  gemspec
data/README.md CHANGED
@@ -6,11 +6,9 @@
6
6
 
7
7
  A simple wrapper around [utf8proc](https://github.com/JuliaLang/utf8proc) for normalizing Unicode strings. Will use the `utf8proc` shared library and headers installed on your system if they are available *(Packages are available. OSX: `brew install utf8proc`, Linux: `libutf8proc-dev` or `utf8proc-devel`)*. Failing that, it will fall-back to compiling the library into the extension.
8
8
 
9
- Currently supports UTF-8/ASCII string input and NFC, NFD, NFKC, NFKD, and NKFC-Casefold forms. Handles Unicode 9.0 and includes the current official full suite of 9.0 normalization tests.
9
+ Currently supports UTF-8/ASCII string input and NFC, NFD, NFKC, NFKD, and NKFC-Casefold forms (US-ASCII strings return an unmodified or case-folded copy). Handles Unicode 9.0 and includes the current official full suite of 9.0 normalization tests.
10
10
 
11
- Quick benchmarks against the [UNF](https://github.com/knu/ruby-unf) gem show it to be between the same speed (best-case) and ~2x slower (worst-case), averaging about ~1.2x slower on complex Unicode strings. The speed difference is more equal in NFC/NFD modes where mostly or already-normalized strings are used.
12
-
13
- *(Note: UNF is generally a bit faster but currently officially supports Unicode 6.0 and does not pass all 9.0 normalization tests.)*
11
+ Quick benchmarks against the [UNF](https://github.com/knu/ruby-unf) gem show `utf8_proc` to be between the same speed (best-case) and ~2x slower (worst-case), averaging about 1.15 to 1.5x slower and improving on complex Unicode strings. *(However, UNF currently only officially supports Unicode 6.0 and does not pass all 9.0 normalization tests.)*
14
12
 
15
13
  ## Installation
16
14
 
@@ -15,6 +15,10 @@ unless have_library("utf8proc")
15
15
  $CFLAGS << " -I#{libutf8proc_dir}"
16
16
  end
17
17
 
18
- $CFLAGS << " -std=c99 -Wno-declaration-after-statement"
18
+ $CFLAGS << " -fPIC" if RbConfig::CONFIG["target_cpu"] == "x86_64"
19
+ if RbConfig::CONFIG["CC"] == "clang"
20
+ $CFLAGS << " -flto -mllvm -inline-threshold=5000"
21
+ end
22
+ $CFLAGS << " -std=c99 -march=native -mtune=native -Wno-declaration-after-statement"
19
23
 
20
24
  create_makefile("utf8_proc/utf8_proc")
@@ -9,104 +9,136 @@ static ID NFKC;
9
9
  static ID NFKD;
10
10
  static ID NFKC_CF;
11
11
 
12
- static inline void checkStrEncoding(VALUE *string) {
12
+ // Derived from utf8proc_map_custom.
13
+ // Pre-allocates string buffers and skips initial preflight decompose and
14
+ // post-flight relloc for speed.
15
+ static inline VALUE normInternal(VALUE *string, utf8proc_option_t options) {
13
16
  rb_encoding *enc;
14
17
  enc = rb_enc_get(*string);
15
- if (enc != enc_utf8 && enc != enc_usascii) {
18
+ if (enc == enc_utf8) {
19
+ // Continue
20
+ } else if (enc == enc_usascii) {
21
+ // Return a US-ASCII copy, possibly case-folded
22
+ char *c_str = StringValuePtr(*string);
23
+ long c_strlen = RSTRING_LEN(*string);
24
+ if (options & UTF8PROC_CASEFOLD) {
25
+ for(int i = 0; i < c_strlen; i++) { c_str[i] = tolower(c_str[i]); }
26
+ }
27
+ return rb_enc_str_new(c_str, c_strlen, enc_usascii);
28
+ } else {
16
29
  rb_raise(rb_eEncodingError, "%s", "String must be in UTF-8 or US-ASCII encoding.");
17
30
  }
18
- }
19
31
 
20
- static inline VALUE normInternal(VALUE string, utf8proc_option_t options) {
21
- checkStrEncoding(&string);
22
- utf8proc_uint8_t *retval;
23
- utf8proc_ssize_t retlen;
24
- retlen = utf8proc_map(
25
- (unsigned char *) StringValuePtr(string), RSTRING_LEN(string), &retval, options
26
- );
32
+ // Allocate buffer to safe maximum length estimated from Normalization options
33
+ // and known maximal expansion of codepoints
34
+ utf8proc_int32_t *buffer;
35
+ utf8proc_ssize_t bufflen;
36
+ bufflen = rb_str_strlen(*string) * ((options & UTF8PROC_COMPAT) ? 18 : 4);
37
+ buffer = (utf8proc_int32_t *) malloc(bufflen * sizeof(utf8proc_int32_t) + 1);
38
+ if (!buffer) {
39
+ rb_raise(rb_eEncodingError, "%s", utf8proc_errmsg(UTF8PROC_ERROR_NOMEM));
40
+ return Qnil;
41
+ }
27
42
 
28
- VALUE new_str;
29
- new_str = rb_enc_str_new((char *) retval, retlen, rb_utf8_encoding());
30
- free(retval);
43
+ utf8proc_ssize_t result;
44
+ // Decompose input
45
+ result = utf8proc_decompose_custom((unsigned char *) StringValuePtr(*string),
46
+ RSTRING_LEN(*string), buffer, bufflen,
47
+ options, NULL, NULL);
48
+ if (result < 0) {
49
+ free(buffer);
50
+ rb_raise(rb_eEncodingError, "%s", utf8proc_errmsg(result));
51
+ return Qnil;
52
+ }
31
53
 
54
+ // Compose & re-encode input.
55
+ result = utf8proc_reencode(buffer, result, options);
56
+ if (result < 0) {
57
+ free(buffer);
58
+ rb_raise(rb_eEncodingError, "%s", utf8proc_errmsg(result));
59
+ return Qnil;
60
+ }
61
+
62
+ VALUE new_str;
63
+ new_str = rb_enc_str_new((char *) buffer, result, enc_utf8);
64
+ free(buffer);
32
65
  return new_str;
33
66
  }
34
67
 
35
68
  // NFC
36
69
 
37
70
  static VALUE toNFC(VALUE self, VALUE string) {
38
- return normInternal(string, UTF8PROC_STABLE | UTF8PROC_COMPOSE);
71
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_COMPOSE);
39
72
  }
40
73
 
41
74
  static VALUE StoNFC(VALUE string) {
42
- return normInternal(string, UTF8PROC_STABLE | UTF8PROC_COMPOSE);
75
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_COMPOSE);
43
76
  }
44
77
 
45
78
  // NFD
46
79
 
47
80
  static VALUE toNFD(VALUE self, VALUE string) {
48
- return normInternal(string, UTF8PROC_STABLE | UTF8PROC_DECOMPOSE);
81
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_DECOMPOSE);
49
82
  }
50
83
 
51
84
  static VALUE StoNFD(VALUE string) {
52
- return normInternal(string, UTF8PROC_STABLE | UTF8PROC_DECOMPOSE);
85
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_DECOMPOSE);
53
86
  }
54
87
 
55
88
  // NFKC
56
89
 
57
90
  static VALUE toNFKC(VALUE self, VALUE string) {
58
- return normInternal(string,UTF8PROC_STABLE | UTF8PROC_COMPOSE | UTF8PROC_COMPAT);
91
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_COMPOSE | UTF8PROC_COMPAT);
59
92
  }
60
93
 
61
94
  static VALUE StoNFKC(VALUE string) {
62
- return normInternal(string,UTF8PROC_STABLE | UTF8PROC_COMPOSE | UTF8PROC_COMPAT);
95
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_COMPOSE | UTF8PROC_COMPAT);
63
96
  }
64
97
 
65
98
  // NFKD
66
99
 
67
100
  static VALUE toNFKD(VALUE self, VALUE string) {
68
- return normInternal(string, UTF8PROC_STABLE | UTF8PROC_DECOMPOSE | UTF8PROC_COMPAT);
101
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_DECOMPOSE | UTF8PROC_COMPAT);
69
102
  }
70
103
 
71
104
  static VALUE StoNFKD(VALUE string) {
72
- return normInternal(string, UTF8PROC_STABLE | UTF8PROC_DECOMPOSE | UTF8PROC_COMPAT);
105
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_DECOMPOSE | UTF8PROC_COMPAT);
73
106
  }
74
107
 
75
108
  // NFKC_CF
76
109
 
77
110
  static VALUE toNFKC_CF(VALUE self, VALUE string) {
78
- return normInternal(string, UTF8PROC_STABLE | UTF8PROC_COMPOSE | UTF8PROC_COMPAT | UTF8PROC_CASEFOLD);
111
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_COMPOSE | UTF8PROC_COMPAT | UTF8PROC_CASEFOLD);
79
112
  }
80
113
 
81
114
  static VALUE StoNFKC_CF(VALUE string) {
82
- return normInternal(string, UTF8PROC_STABLE | UTF8PROC_COMPOSE | UTF8PROC_COMPAT | UTF8PROC_CASEFOLD);
115
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_COMPOSE | UTF8PROC_COMPAT | UTF8PROC_CASEFOLD);
83
116
  }
84
117
 
85
118
  // Parameterized normalization
86
119
 
87
-
88
120
  static VALUE toNorm(int argc, VALUE* argv, VALUE self){
89
121
  VALUE string;
90
122
  VALUE form;
91
123
  rb_scan_args(argc, argv, "11", &string, &form);
92
124
 
93
125
  if (NIL_P(form)) {
94
- return toNFC(self, string);
126
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_COMPOSE);
95
127
  }
96
128
 
97
129
  ID s_form;
98
130
  s_form = SYM2ID(form);
99
131
  if (s_form == NFC) {
100
- return toNFC(self, string);
101
- }else if(s_form == NFD) {
102
- return toNFD(self, string);
103
- }else if(s_form == NFKC) {
104
- return toNFKC(self, string);
105
- }else if(s_form == NFKD) {
106
- return toNFKD(self, string);
107
- }else if(s_form == NFKC_CF) {
108
- return toNFKC_CF(self, string);
109
- }else{
132
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_COMPOSE);
133
+ } else if (s_form == NFD) {
134
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_DECOMPOSE);
135
+ } else if (s_form == NFKC) {
136
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_COMPOSE | UTF8PROC_COMPAT);
137
+ } else if (s_form == NFKD) {
138
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_DECOMPOSE | UTF8PROC_COMPAT);
139
+ } else if (s_form == NFKC_CF) {
140
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_COMPOSE | UTF8PROC_COMPAT | UTF8PROC_CASEFOLD);
141
+ } else {
110
142
  rb_raise(rb_eArgError, "%s",
111
143
  "Second argument must be one of [:nfc (default), :nfd, :nfkc, " \
112
144
  ":nfkd, :nfkc_cf]");
@@ -118,22 +150,22 @@ static VALUE StoNorm(int argc, VALUE* argv, VALUE string){
118
150
  rb_scan_args(argc, argv, "01", &form);
119
151
 
120
152
  if (NIL_P(form)) {
121
- return StoNFC(string);
153
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_COMPOSE);
122
154
  }
123
155
 
124
156
  ID s_form;
125
157
  s_form = SYM2ID(form);
126
158
  if (s_form == NFC) {
127
- return StoNFC(string);
128
- }else if(s_form == NFD) {
129
- return StoNFD(string);
130
- }else if(s_form == NFKC) {
131
- return StoNFKC(string);
132
- }else if(s_form == NFKD) {
133
- return StoNFKD(string);
134
- }else if(s_form == NFKC_CF) {
135
- return StoNFKC_CF(string);
136
- }else{
159
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_COMPOSE);
160
+ } else if (s_form == NFD) {
161
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_DECOMPOSE);
162
+ } else if (s_form == NFKC) {
163
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_COMPOSE | UTF8PROC_COMPAT);
164
+ } else if (s_form == NFKD) {
165
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_DECOMPOSE | UTF8PROC_COMPAT);
166
+ } else if (s_form == NFKC_CF) {
167
+ return normInternal(&string, UTF8PROC_STABLE | UTF8PROC_COMPOSE | UTF8PROC_COMPAT | UTF8PROC_CASEFOLD);
168
+ } else {
137
169
  rb_raise(rb_eArgError, "%s",
138
170
  "Argument must be one of [:nfc (default), :nfd, :nfkc, " \
139
171
  ":nfkd, :nfkc_cf]");
@@ -1,9 +1,12 @@
1
- #ifndef ICU_TEST_H
2
- #define ICU_TEST_H 1
1
+ #ifndef UTF8_PROC_H
2
+ #define UTF8_PROC_H 1
3
3
 
4
+ #include <ctype.h>
4
5
  #include <ruby.h>
5
6
  #include <ruby/encoding.h>
6
7
 
7
8
  #include <utf8proc.h>
8
9
 
9
- #endif /* ICU_TEST_H */
10
+ extern void Init_utf8_proc(void);
11
+
12
+ #endif /* UTF8_PROC_H */
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  require "utf8_proc/version"
3
+ require "utf8_proc/benchmark"
3
4
 
4
5
  module UTF8Proc
5
6
  if RUBY_ENGINE == "jruby"
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+ # rubocop:disable MethodLength
3
+ module UTF8Proc
4
+ module Benchmark
5
+ module_function
6
+
7
+ def run
8
+ require "benchmark/ips"
9
+ require "unf"
10
+ # Various different normalizations of Unicode characters.
11
+ test_arr = ["quick", "brown", "fox", "jumped", "over", "lazy", "dog",
12
+ "QUICK", "BROWN", "FOX", "JUMPED", "OVER", "LAZY", "DOG",
13
+ "\u{03D3}", "\u{03D2 0301}", "\u{038E}", "\u{03A5 0301}",
14
+ "\u{03D4}", "\u{03D2 0308}", "\u{03AB}", "\u{03A5 0308}",
15
+ "\u{1E9B}", "\u{017F 0307}", "\u{1E61}", "\u{0073 0307}",
16
+ "\u{1D160}", "\u{1D158 1D165 1D16E}",
17
+ "\u{1F82}", "\u{03B1 0313 0300 0345}",
18
+ "\u{FDFA}", "\u{0635 0644 0649 0020 0627 0644 0644 0647}" \
19
+ "\u{0020 0639 0644 064A 0647 0020 0648 0633 0644 0645}"] * 10
20
+ test_arr.concat([" "] * (test_arr.length / 4))
21
+
22
+ test_strings = Array.new(20) { test_arr.sample(30).join("") }
23
+ puts "\nBenchmark strings:\n\n * #{test_strings.join("\n * ")}\n\n"
24
+
25
+ ::Benchmark.ips do |x|
26
+ x.config(time: 10, warmup: 2)
27
+ x.report("UNF NFC") do
28
+ UNF::Normalizer.normalize(test_strings.sample, :nfc)
29
+ end
30
+
31
+ x.report("UTF8Proc NFC") do
32
+ UTF8Proc.normalize(test_strings.sample, :nfc)
33
+ end
34
+ x.compare!
35
+ end
36
+
37
+ ::Benchmark.ips do |x|
38
+ x.config(time: 10, warmup: 2)
39
+ x.report("UNF NFD") do
40
+ UNF::Normalizer.normalize(test_strings.sample, :nfd)
41
+ end
42
+
43
+ x.report("UTF8Proc NFD") do
44
+ UTF8Proc.normalize(test_strings.sample, :nfd)
45
+ end
46
+ x.compare!
47
+ end
48
+
49
+ ::Benchmark.ips do |x|
50
+ x.config(time: 10, warmup: 2)
51
+ x.report("UNF NFKC") do
52
+ UNF::Normalizer.normalize(test_strings.sample, :nfkc)
53
+ end
54
+
55
+ x.report("UTF8Proc NFKC") do
56
+ UTF8Proc.normalize(test_strings.sample, :nfkc)
57
+ end
58
+ x.compare!
59
+ end
60
+
61
+ ::Benchmark.ips do |x|
62
+ x.config(time: 10, warmup: 2)
63
+ x.report("UNF NFKD") do
64
+ UNF::Normalizer.normalize(test_strings.sample, :nfkd)
65
+ end
66
+
67
+ x.report("UTF8Proc NFKD") do
68
+ UTF8Proc.normalize(test_strings.sample, :nfkd)
69
+ end
70
+ x.compare!
71
+ end
72
+
73
+ ::Benchmark.ips do |x|
74
+ x.config(time: 10, warmup: 2)
75
+ x.report("UNF NFKC with .downcase") do
76
+ UNF::Normalizer.normalize(test_strings.sample, :nfkc).downcase
77
+ end
78
+
79
+ x.report("UTF8Proc NFKC_CF") do
80
+ UTF8Proc.normalize(test_strings.sample, :nfkc_cf)
81
+ end
82
+ x.compare!
83
+ end
84
+ true
85
+ end
86
+ end
87
+ end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module UTF8Proc
3
- VERSION = "0.4.1".freeze
3
+ VERSION = "0.5.2".freeze
4
4
  end
@@ -1,5 +1,6 @@
1
1
  # coding: utf-8
2
2
  # frozen_string_literal: true
3
+ # rubocop:disable BlockLength
3
4
  lib = File.expand_path("../lib", __FILE__)
4
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
6
  require "utf8_proc/version"
@@ -17,7 +18,7 @@ Gem::Specification.new do |spec|
17
18
  spec.required_ruby_version = ">= 2.0"
18
19
 
19
20
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
20
- f.match(%r{^(test|spec|features)/})
21
+ f.match(%r{^(bin|test|spec|features)/})
21
22
  end
22
23
  spec.files += ["vendor/libutf8proc/LICENSE.md",
23
24
  "vendor/libutf8proc/utf8proc.c",
@@ -31,6 +32,8 @@ Gem::Specification.new do |spec|
31
32
  spec.add_development_dependency "pry", "~> 0.10"
32
33
  spec.add_development_dependency "minitest", "~> 5.10"
33
34
  spec.add_development_dependency "rubocop", "~> 0.47"
35
+ spec.add_development_dependency "benchmark-ips"
36
+ spec.add_development_dependency "unf"
34
37
 
35
38
  unless RUBY_ENGINE == "jruby"
36
39
  spec.extensions = ["ext/utf8_proc/extconf.rb"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: utf8_proc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Bellefleur
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-24 00:00:00.000000000 Z
11
+ date: 2017-03-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,34 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.47'
83
+ - !ruby/object:Gem::Dependency
84
+ name: benchmark-ips
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: unf
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: rake-compiler
85
113
  requirement: !ruby/object:Gem::Requirement
@@ -113,12 +141,11 @@ files:
113
141
  - LICENSE.txt
114
142
  - README.md
115
143
  - Rakefile
116
- - bin/console
117
- - bin/setup
118
144
  - ext/utf8_proc/extconf.rb
119
145
  - ext/utf8_proc/utf8_proc.c
120
146
  - ext/utf8_proc/utf8_proc.h
121
147
  - lib/utf8_proc.rb
148
+ - lib/utf8_proc/benchmark.rb
122
149
  - lib/utf8_proc/core_ext/string.rb
123
150
  - lib/utf8_proc/core_ext/string_jruby.rb
124
151
  - lib/utf8_proc/jruby.rb
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require "bundler/setup"
5
- require "utf8_proc"
6
-
7
- # You can add fixtures and/or initialization code here to make experimenting
8
- # with your gem easier. You can also use a different console, if you like.
9
-
10
- # (If you use this, don't forget to add pry to your Gemfile!)
11
- require "pry"
12
- Pry.start
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here