supplement 2.6 → 2.11

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: 9754618686c48891d7ca99a09508ce3df98c97ed7543ec1439422f1b8e744de9
4
- data.tar.gz: 04d319813eca8255a920d8d4d0a711cd0de91f28360f2df3b3da7713c59b770e
3
+ metadata.gz: c2935fc175268595e2ed21a4a36e27a02efe9947af2de5fbeab6ccc8ff26ff6e
4
+ data.tar.gz: 23a99040b0aca40913bb5f5cfa7e81b0c57b3be820909bd3e350663df7592c41
5
5
  SHA512:
6
- metadata.gz: 73c88f02010a6dde56e25d492782b861015cb1ccadb22483e5100a5ece3b1c6d0a80ce405b3e3ff67c9f75da14b9c1e08c92a9d5e24118dd4a09fa81b22556d3
7
- data.tar.gz: 433665cf2b86261adee2240c49301e1b2f06ced977d3d1275f085e0ed11d8558f3f9bf40d1d5642e623a6caf4f747377070b23d1a611796e036c15f8c0540b76
6
+ metadata.gz: 8d05e6b19340ab1ba16b5621991c6f7459bfc76583efd14ce158a88112f188dbdefb07bd9b2101d626be88b4ecaf5ce8fca7314c8743595b503f1a0f5edb118a
7
+ data.tar.gz: fdd8366aba00486f8c85673a40a517ecd5e549fbd594471aa6775e2f5ad9adcd9dd5c6642e6048b523ba2ce5a2c6a59ab4ea36233e9868f23be686b2d5c64dde
data/LICENSE CHANGED
@@ -1,9 +1,5 @@
1
- _ _
2
- ___ _ _ _ __ _ __ | | ___ _ __ ___ ___ _ __ | |_
3
- / __| | | | '_ \| '_ \| |/ _ \ '_ ` _ \ / _ \ '_ \| __|
4
- \__ \ |_| | |_) | |_) | | __/ | | | | | __/ | | | |_
5
- |___/\__,_| .__/| .__/|_|\___|_| |_| |_|\___|_| |_|\__|
6
- |_| |_|
1
+ = supplement Ruby Gem
2
+
7
3
 
8
4
  Copyright (C) 2009-2020, Bertram Scharpf <software@bertram-scharpf.de>.
9
5
  All rights reserved.
data/README CHANGED
@@ -1,4 +1,4 @@
1
- = supplement 2.6 -- Useful Ruby enhancements
1
+ = supplement 2.11 -- Useful Ruby enhancements
2
2
 
3
3
 
4
4
  Some simple Ruby extensions.
@@ -64,6 +64,3 @@ Now here it is where I can just point to.
64
64
  * Interval timer
65
65
  * LockedFile
66
66
 
67
-
68
-
69
- // vim:set ft=asciidoc :
@@ -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);
@@ -42,6 +42,48 @@ class Date
42
42
 
43
43
  end
44
44
 
45
+
46
+ def workday_after n
47
+ r = self + n
48
+ case r.wday
49
+ when 0 then r += 1
50
+ when 6 then r += 2
51
+ end
52
+ r
53
+ end
54
+
55
+ def quarter
56
+ (month-1) / 3 + 1
57
+ end
58
+
59
+ def wstart
60
+ self - wday
61
+ end
62
+
63
+ def cwstart
64
+ self - (cwday-1)
65
+ end
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
+
45
87
  end
46
88
 
47
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;
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.6'
4
+ version: '2.11'
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-05 00:00:00.000000000 Z
11
+ date: 2020-07-14 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
@@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - Ruby and the autorake gem
82
82
  rubygems_version: 3.0.6
83
- signing_key:
83
+ signing_key:
84
84
  specification_version: 4
85
85
  summary: Simple Ruby extensions
86
86
  test_files: []