aromat 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 187f4c1c7b16d601d713372287d72436040c2395
4
- data.tar.gz: 4808dde7af084f9b751394444bd152e532e2707f
3
+ metadata.gz: fdd0673a61daeff34e4e9c4e7011f4c0f027f1cc
4
+ data.tar.gz: fac0faab362433e49fee6434300e31175c2c68cf
5
5
  SHA512:
6
- metadata.gz: a5bc0f2fa6fb63c8f82de347e03d43291ddf9a5e949fd5ae25d93338ed0e8de146f90e168455c992eec92c9970c2972b44238982302fd9ae93786b9290575fc7
7
- data.tar.gz: 5001cd06dc602139690ba2bc193ee34061246c6f64277b022db47bbc4e7bf9e1072d1f3a55445c46c2134b74e4c7545c037235fb72d524e970c3151dd55b8b98
6
+ metadata.gz: a281081c2523cfaaf6f007a3ef61c8366d1b6205ae902c5e369869af11f0d638c49bdbf08c45b74c5e12745372f2ddd33432985d709516e80bbb9af0f70252db
7
+ data.tar.gz: 800f058b4d91fd2f0b712b7e404b2dbb214aa393f81a76a5379fcd2cb9c81c53d78a1430a06707746e217a141c21870bd31a8334a6ae77753ae9eeae737cd103
data/README.md CHANGED
@@ -99,6 +99,53 @@ nil.try :nstr
99
99
  # => 'bar'
100
100
  ```
101
101
 
102
+ ### String Case Conversions
103
+
104
+ Case-conversion methods are monkey-patched into the *String* class. The following methods are made available:
105
+ * camelcase ('foo-bar' => 'FooBar')
106
+ * snakecase ('FooBar' => 'foo-bar')
107
+ * kebabcase ('FooBar' => 'foo_bar')
108
+
109
+ ```ruby
110
+ 'foo_bar'.camelcase
111
+ # => 'FooBar'
112
+ 'foo-bar'.camelcase
113
+ # => 'FooBar'
114
+
115
+ 'FooBar'.snakecase
116
+ # => 'foo-bar'
117
+ 'foo_bar'.snakecase
118
+ # => 'foo-bar'
119
+
120
+ 'FooBar'.kebabcase
121
+ # => 'foo_bar'
122
+ 'foo-bar'.kebabcase
123
+ # => 'foo_bar'
124
+ ```
125
+
126
+ ### Get Module Name
127
+
128
+ A _mod_name_ method is monkey-patched into the *Module* class. This allows obtaining the name of any module, without its hierarchical tree.
129
+
130
+ ```ruby
131
+ module Foo
132
+ module Bar
133
+ end
134
+ end
135
+
136
+ Foo.name
137
+ # => 'Foo'
138
+
139
+ Foo.mod_name
140
+ # => 'Foo'
141
+
142
+ Foo::Bar.name
143
+ # => 'Foo::Bar'
144
+
145
+ Foo::Bar.mod_name # <= This is where it gets interesting
146
+ # => 'Bar'
147
+ ```
148
+
102
149
  ### Time Duration
103
150
 
104
151
  A _duration_ method is monkey-patched into the 'Numeric' class. This method returns a textual string representation of the time duration.
@@ -6,6 +6,8 @@ require 'aromat/version'
6
6
  require 'aromat/sym_keys'
7
7
  require 'aromat/duration'
8
8
  require 'aromat/dclone'
9
+ require 'aromat/module'
10
+ require 'aromat/case'
9
11
  require 'aromat/nstr'
10
12
  require 'aromat/pad'
11
13
  require 'aromat/try'
@@ -0,0 +1,34 @@
1
+ # Aromat
2
+ # by Eresse <eresse@eresse.net>
3
+
4
+ # Monkey-patch String Class
5
+ class String
6
+
7
+ # Camel Case:
8
+ # Converts String to CamelCase.
9
+ # @return [String] The string converted to camel-case
10
+ def camelcase
11
+ self.gsub(/(^|[_-])([a-zA-Z])/) { |s| s[/[a-zA-Z]$/].upcase }
12
+ end
13
+
14
+ # Kebab Case:
15
+ # Converts String to kebab-case.
16
+ # @return [String] The string converted to kebab-case
17
+ def kebabcase
18
+ flatcase '-'
19
+ end
20
+
21
+ # Snake Case:
22
+ # Converts String to snake_case.
23
+ def snakecase
24
+ flatcase '_'
25
+ end
26
+
27
+ # Flat Case:
28
+ # Generic String converter for kebab-case / snake_case.
29
+ # @param [String] delim Delimiter to be placed between parts
30
+ # @return [String] The string converted to flatcase.
31
+ def flatcase delim = ''
32
+ self.gsub(/((^|[a-z])[A-Z])|([_-][a-zA-Z])/) { |s| (s.length > 1 ? "#{s[/^[a-z]/]}#{delim}" : '') + s[/[a-zA-Z]$/].downcase }
33
+ end
34
+ end
@@ -0,0 +1,13 @@
1
+ # Aromat
2
+ # by Eresse <eresse@eresse.net>
3
+
4
+ # Monkey-patch Module Class
5
+ class Module
6
+
7
+ # Module Name:
8
+ # Returns the name of the Module, without its hierarchical tree.
9
+ # @return [String] The name of the Module
10
+ def mod_name
11
+ name[/[^:]+$/]
12
+ end
13
+ end
@@ -5,5 +5,5 @@
5
5
  module Aromat
6
6
 
7
7
  # Version
8
- VERSION = '1.1.2'
8
+ VERSION = '1.2.0'
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aromat
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eresse
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-22 00:00:00.000000000 Z
11
+ date: 2017-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,8 +66,10 @@ files:
66
66
  - Rakefile
67
67
  - aromat.gemspec
68
68
  - lib/aromat.rb
69
+ - lib/aromat/case.rb
69
70
  - lib/aromat/dclone.rb
70
71
  - lib/aromat/duration.rb
72
+ - lib/aromat/module.rb
71
73
  - lib/aromat/nstr.rb
72
74
  - lib/aromat/pad.rb
73
75
  - lib/aromat/sym_keys.rb