nrser 0.3.6 → 0.3.7

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: c4c0b136095e4afd7f800b70365fef71ab0d6aa8
4
- data.tar.gz: 0e7ae07d35167aef235790e048469175e278678d
3
+ metadata.gz: ea96a298163ec6b20a0437bc7ab7c8ea9200fd99
4
+ data.tar.gz: c6aabc018e890bfa791e20925b2c32240c4110d7
5
5
  SHA512:
6
- metadata.gz: dca7159d865ba58bb26a0fe3a24f4cdab90c09416509cc7f7d466aad6c5a23dd5fa6f5f0d35b4adb9a6d2e93c9ea52f03f8f63b03f237e5e3cabc3374f258d5f
7
- data.tar.gz: 4de1a2e02822d68a529f37ce1bcf53f25c4f8100284fb841c3bf254509d0f0a85adacdc823c1a857da5de7f0d8c9911214bc3e1ab4984d576a468aaba3646d75
6
+ metadata.gz: 29d05d08cc6d63ee707ad4ce1bf34b4b148a132ee669749ad1a01eb392ba1ef6d842c1be240cbf0ec2d514e3acd320c70e2f84e86376d93ad54a688ffa428244
7
+ data.tar.gz: 4dc97cdc270fc79692b1a7ffcba3c569ae3649247f78e16b128603933c40ebb05c925fe934b53a5c082f23788cde3444ba4cf7f082143b27274c53104647cac5
@@ -11,7 +11,13 @@ class Pathname
11
11
  # true if the Pathname starts with any of the prefixes.
12
12
  #
13
13
  def start_with? *prefixes
14
- to_s.start_with? *prefixes.map(&:to_s)
14
+ to_s.start_with? *prefixes.map { |prefix|
15
+ if Pathname === prefix
16
+ prefix.to_s
17
+ else
18
+ prefix
19
+ end
20
+ }
15
21
  end
16
22
 
17
23
 
@@ -49,29 +55,52 @@ class Pathname
49
55
  end
50
56
 
51
57
 
52
- # @todo Document find_root method.
53
- #
54
- # @param [type] arg_name
55
- # @todo Add name param description.
56
- #
57
- # @return [return_type]
58
- # @todo Document return value.
58
+ # See {NRSER.find_up}.
59
59
  #
60
60
  def find_up rel_path, **kwds
61
61
  NRSER.find_up rel_path, **kwds, from: self
62
62
  end # #find_root
63
63
 
64
64
 
65
- # @todo Document find_root method.
66
- #
67
- # @param [type] arg_name
68
- # @todo Add name param description.
69
- #
70
- # @return [return_type]
71
- # @todo Document return value.
65
+ # See {NRSER.find_up!}.
72
66
  #
73
67
  def find_up! rel_path, **kwds
74
68
  NRSER.find_up! rel_path, **kwds, from: self
75
69
  end # #find_root
76
70
 
71
+
72
+ # Shortcut to convert into a relative pathname, by default from the working
73
+ # directory, with option to `./` prefix.
74
+ #
75
+ # @param [Pathname] base_dir:
76
+ # Directory you want the result to be relative to.
77
+ #
78
+ # @param [Boolean] dot_slash:
79
+ # When `true` will prepend `./` to the resulting path, unless it already
80
+ # starts with `../`.
81
+ #
82
+ # @return [Pathname]
83
+ #
84
+ def to_rel base_dir: Pathname.getwd, dot_slash: false
85
+ rel = relative_path_from base_dir
86
+
87
+ if dot_slash && !rel.start_with?( /\.\.?\// )
88
+ File.join( '.', rel ).to_pn
89
+ else
90
+ rel
91
+ end
92
+ end
93
+
94
+
95
+ # Just a quick cut for `.to_rel.to_s`, since I seem to use that sort of form
96
+ # a lot.
97
+ #
98
+ # @param (see #to_rel)
99
+ #
100
+ # @return [String]
101
+ #
102
+ def to_rel_s *args
103
+ to_rel( *args ).to_s
104
+ end
105
+
77
106
  end # class Pathname
@@ -56,6 +56,56 @@ class String
56
56
  end
57
57
 
58
58
 
59
+ # Alias the stdlib {#start_with?} 'cause we'll need to use it when
60
+ # redefining the method below.
61
+ #
62
+ alias_method :stdlib_start_with?, :start_with?
63
+
64
+
65
+ # Augment {#start_with?} to accept {Regexp} prefixes.
66
+ #
67
+ # I guess I always *just felt* like this should work... so now it does
68
+ # (kinda, at least).
69
+ #
70
+ # Everything should work the exact same for {String} prefixes.
71
+ #
72
+ # Use {Regexp} ones at your own pleasure and peril.
73
+ #
74
+ # @param [String | Regexp] *prefixes
75
+ # Strings behave as usual per the standard lib.
76
+ #
77
+ # Regexp sources are used to create a new Regexp with `\A` at the start -
78
+ # unless their source already starts with `\A` or `^` - and those Regexp
79
+ # are tested against the string.
80
+ #
81
+ # Regexp options are also copied over if a new Regexp is created. I can
82
+ # def imagine things getting weird with some exotic regular expression
83
+ # or another, but this feature is really indented for very simple patterns,
84
+ # for which it should suffice.
85
+ #
86
+ # @return [Boolean]
87
+ # `true` if `self` starts with *any* of the `prefixes`.
88
+ #
89
+ def start_with? *prefixes
90
+ unless prefixes.any? { |x| Regexp === x }
91
+ return stdlib_start_with? *prefixes
92
+ end
93
+
94
+ prefixes.any? { |prefix|
95
+ case prefix
96
+ when Regexp
97
+ unless prefix.source.start_with? '\A', '^'
98
+ prefix = Regexp.new( "\\A#{ prefix.source }", prefix.options )
99
+ end
100
+
101
+ prefix =~ self
102
+ else
103
+ stdlib_start_with? prefix
104
+ end
105
+ }
106
+ end
107
+
108
+
59
109
  # @!group Unicode Stylization
60
110
  # ==========================================================================
61
111
 
data/lib/nrser/version.rb CHANGED
@@ -18,7 +18,7 @@ module NRSER
18
18
  #
19
19
  # @return [String]
20
20
  #
21
- VERSION = '0.3.6'
21
+ VERSION = '0.3.7'
22
22
 
23
23
 
24
24
  module Version
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nrser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - nrser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-27 00:00:00.000000000 Z
11
+ date: 2018-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hamster