aromat 1.1.2 → 1.2.0

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: 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