supplement 2.7 → 2.12

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
  SHA256:
3
- metadata.gz: ee9f6100fc65046c583652a23c7927e7449a5eeba493dfd27c309f9973fa9bc3
4
- data.tar.gz: f9a4598eb5d3acab86b12b56e10ee9cb4e27be679f1ff6823462135874427dea
3
+ metadata.gz: cf8795db0b5ca032a21f2c9d6c094000045ba76d82bf2f02f454f3b040c7892c
4
+ data.tar.gz: da36d7c646e056c082d2ac66b62a9025b33730f5baac26b412816fb8f6c37fca
5
5
  SHA512:
6
- metadata.gz: 6640990fc0e8cc22621535f54dd61bbec1d835e3040a56668f7b2977fc104bc2142c2b9dfd94eb6033201d5ba52e7c151a6207ec9cb69dadf968fad7f448e7ee
7
- data.tar.gz: 5c8221565b5c6c7b1570bb35d628293f5872c2332ce6fee526341ee347e203c642fbdd699657ebe302af4784607406a017e86dfad33b0e497e03a341503138b3
6
+ metadata.gz: 833fe634e70363e0d6ba5336f52c526b36680a2dd264c635dcd1a01ad54ddbc567a5e7080a2b8e40e1e34025fadb7a07b274e0d4a988972cd69cfd45865adff3
7
+ data.tar.gz: 14eab88565eca8d88a7144d9a00f2ced1c7b9f38d6427bc96daa833a50a5fe5001bf85e1557bfc48b85f8951928dad1fa1959c58e151344474c386acf8dc944a
data/README CHANGED
@@ -1,4 +1,4 @@
1
- = supplement 2.7 -- Useful Ruby enhancements
1
+ = supplement 2.12 -- Useful Ruby enhancements
2
2
 
3
3
 
4
4
  Some simple Ruby extensions.
@@ -20,7 +20,7 @@ DLs = {
20
20
  }
21
21
 
22
22
  DLs.each { |k,v|
23
- task k => v do |t|
23
+ file k => v do |t|
24
24
  l.cc t.name, t.prerequisites
25
25
  end
26
26
  }
@@ -10,21 +10,25 @@ Autorake.configure {
10
10
 
11
11
  extending_ruby
12
12
 
13
- if RUBY_VERSION < "2.6" then
14
- enable :dir_children
15
- if RUBY_VERSION < "1.9.2" then
16
- enable :array_select_bang
17
- if RUBY_VERSION < "1.9" then
18
- enable :string_ord
19
- enable :string_clear
20
- if RUBY_VERSION < "1.8.7" then
21
- enable :array_index_with_block
22
- enable :kernel_tap
23
- enable :string_start_with
24
- enable :thread_exclusive
13
+ if RUBY_VERSION < "2.7" then
14
+ if RUBY_VERSION < "2.6" then
15
+ enable :dir_children
16
+ if RUBY_VERSION < "1.9.2" then
17
+ enable :array_select_bang
18
+ if RUBY_VERSION < "1.9" then
19
+ enable :string_ord
20
+ enable :string_clear
21
+ if RUBY_VERSION < "1.8.7" then
22
+ enable :array_index_with_block
23
+ enable :kernel_tap
24
+ enable :string_start_with
25
+ enable :thread_exclusive
26
+ end
25
27
  end
26
28
  end
27
29
  end
30
+ else
31
+ enable :super_kwargs
28
32
  end
29
33
 
30
34
  if RUBY_VERSION < "1.9" then
@@ -171,6 +171,24 @@ rb_krn_tap_bang( VALUE obj)
171
171
  }
172
172
 
173
173
 
174
+ /*
175
+ * call-seq:
176
+ * with { |x| ... } -> obj
177
+ *
178
+ * Yields +x+ to the block.
179
+ * This difference to +tap+ is that the block's result will be returned.
180
+ *
181
+ * Use this to narrow your namespace.
182
+ *
183
+ */
184
+
185
+ VALUE
186
+ rb_krn_with( VALUE obj)
187
+ {
188
+ return rb_yield( obj);
189
+ }
190
+
191
+
174
192
  /*
175
193
  * Document-class: NilClass
176
194
  */
@@ -1226,7 +1244,7 @@ rb_file_size( VALUE obj)
1226
1244
  */
1227
1245
 
1228
1246
  VALUE
1229
- rb_file_s_umask( int argc, VALUE *argv)
1247
+ rb_file_s_umask( int argc, VALUE *argv, VALUE file)
1230
1248
  {
1231
1249
  int omask = 0;
1232
1250
 
@@ -1291,7 +1309,7 @@ rb_dir_s_current( VALUE dir)
1291
1309
  */
1292
1310
 
1293
1311
  VALUE
1294
- rb_dir_s_mkdir_bang( int argc, VALUE *argv)
1312
+ rb_dir_s_mkdir_bang( int argc, VALUE *argv, VALUE dir)
1295
1313
  {
1296
1314
  VALUE path, modes;
1297
1315
 
@@ -1301,7 +1319,7 @@ rb_dir_s_mkdir_bang( int argc, VALUE *argv)
1301
1319
 
1302
1320
  parent[ 0] = rb_file_dirname( path);
1303
1321
  parent[ 1] = modes;
1304
- rb_dir_s_mkdir_bang( 2, parent);
1322
+ rb_dir_s_mkdir_bang( 2, parent, dir);
1305
1323
  if (!id_mkdir)
1306
1324
  id_mkdir = rb_intern( "mkdir");
1307
1325
  if (NIL_P(modes))
@@ -1500,6 +1518,7 @@ void Init_supplement( void)
1500
1518
  rb_define_method( rb_mKernel, "tap", rb_krn_tap, 0);
1501
1519
  #endif
1502
1520
  rb_define_method( rb_mKernel, "tap!", rb_krn_tap_bang, 0);
1521
+ rb_define_method( rb_mKernel, "with", rb_krn_with, 0);
1503
1522
 
1504
1523
  rb_define_method( rb_cNilClass, "notempty?", rb_nil_notempty_p, 0);
1505
1524
  rb_define_method( rb_cNilClass, "nonzero?", rb_nil_notempty_p, 0);
@@ -17,6 +17,7 @@ extern VALUE rb_obj_new_string( VALUE);
17
17
  extern VALUE rb_obj_nil_if( VALUE, VALUE);
18
18
  extern VALUE rb_krn_tap( VALUE);
19
19
  extern VALUE rb_krn_tap_bang( VALUE);
20
+ extern VALUE rb_krn_with( VALUE);
20
21
 
21
22
  extern VALUE rb_nil_notempty_p( VALUE);
22
23
  extern VALUE rb_nil_each_line( VALUE);
@@ -64,9 +65,9 @@ extern VALUE rb_num_cbrt( VALUE);
64
65
  extern VALUE rb_hash_notempty_p( VALUE);
65
66
 
66
67
  extern VALUE rb_file_size( VALUE);
67
- extern VALUE rb_file_s_umask( int, VALUE *);
68
+ extern VALUE rb_file_s_umask( int, VALUE *, VALUE);
68
69
  extern VALUE rb_dir_s_current( VALUE);
69
- extern VALUE rb_dir_s_mkdir_bang( int, VALUE *);
70
+ extern VALUE rb_dir_s_mkdir_bang( int, VALUE *, VALUE);
70
71
  extern VALUE rb_dir_children( VALUE);
71
72
 
72
73
  extern VALUE rb_match_begin( int, VALUE *, VALUE);
@@ -64,6 +64,26 @@ class Date
64
64
  self - (cwday-1)
65
65
  end
66
66
 
67
+ def first_of_month
68
+ if day == 1 then
69
+ self
70
+ else
71
+ self.class.civil year, month, 1
72
+ end
73
+ end
74
+
75
+ def months_forward n
76
+ res = self
77
+ n.times { res = res.next_month }
78
+ res
79
+ end
80
+
81
+ def months_backward n
82
+ res = self
83
+ n.times { res = res.prev_month }
84
+ res
85
+ end
86
+
67
87
  end
68
88
 
69
89
 
@@ -42,7 +42,11 @@ rb_locked_init( int argc, VALUE *argv, VALUE self)
42
42
  #endif
43
43
  int op;
44
44
 
45
+ #ifdef FEATURE_SUPER_KWARGS
46
+ rb_call_super_kw(argc, argv, RB_PASS_CALLED_KEYWORDS);
47
+ #else
45
48
  rb_call_super( argc, argv);
49
+ #endif
46
50
  GetOpenFile( self, fptr);
47
51
 
48
52
  op = fptr->mode & FMODE_WRITABLE ? LOCK_EX : LOCK_SH;
@@ -99,15 +99,15 @@ io_reset( VALUE v)
99
99
 
100
100
  /*
101
101
  * call-seq:
102
- * io.winsize() -> ary
102
+ * io.wingeom() -> ary
103
103
  *
104
104
  * Get the available window space.
105
105
  *
106
- * cols, rows, xpixel, ypixel = $stdout.winsize
106
+ * cols, rows, xpixel, ypixel = $stdout.wingeom
107
107
  */
108
108
 
109
109
  VALUE
110
- rb_io_winsize( VALUE self)
110
+ rb_io_wingeom( VALUE self)
111
111
  {
112
112
  #ifndef RUBY_VM
113
113
  OpenFile *fptr;
@@ -139,6 +139,6 @@ rb_io_winsize( VALUE self)
139
139
  void Init_terminal( void)
140
140
  {
141
141
  rb_define_method( rb_cIO, "unget", rb_io_unget, -1);
142
- rb_define_method( rb_cIO, "winsize", rb_io_winsize, 0);
142
+ rb_define_method( rb_cIO, "wingeom", rb_io_wingeom, 0);
143
143
  }
144
144
 
@@ -13,7 +13,7 @@
13
13
 
14
14
 
15
15
  extern VALUE rb_io_unget( int, VALUE *, VALUE);
16
- extern VALUE rb_io_winsize( VALUE);
16
+ extern VALUE rb_io_wingeom( VALUE);
17
17
 
18
18
  extern void Init_terminal( void);
19
19
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: supplement
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.7'
4
+ version: '2.12'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bertram Scharpf
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-13 00:00:00.000000000 Z
11
+ date: 2020-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: autorake
@@ -59,7 +59,7 @@ homepage: http://www.bertram-scharpf.de/software/supplement
59
59
  licenses:
60
60
  - BSD-2-Clause
61
61
  metadata: {}
62
- post_install_message:
62
+ post_install_message:
63
63
  rdoc_options:
64
64
  - "--charset"
65
65
  - utf-8
@@ -79,8 +79,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
79
  version: '0'
80
80
  requirements:
81
81
  - Ruby and the autorake gem
82
- rubygems_version: 3.0.6
83
- signing_key:
82
+ rubygems_version: 3.0.8
83
+ signing_key:
84
84
  specification_version: 4
85
85
  summary: Simple Ruby extensions
86
86
  test_files: []