Skip to content

Commit

Permalink
Added hash modify keys methods
Browse files Browse the repository at this point in the history
  • Loading branch information
Ben Slaughter committed Aug 14, 2015
1 parent 8b0e958 commit 57ef221
Show file tree
Hide file tree
Showing 24 changed files with 273 additions and 95 deletions.
4 changes: 4 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Metrics/LineLength:
Exclude:
- '*.gemspec'
- 'spec/**/*_spec.rb'
1 change: 0 additions & 1 deletion Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ end

RuboCop::RakeTask.new(:rubocop) do |t|
t.formatters = ['progress']
t.patterns = ['lib/**/*.rb']
end

YARD::Rake::YardocTask.new do |t|
Expand Down
2 changes: 1 addition & 1 deletion lib/utilise/array.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'utilise/augment/bool.rb'
require 'utilise/augment/bool'

# Extend existing ruby class Array
class Array
Expand Down
2 changes: 1 addition & 1 deletion lib/utilise/augment/bool.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def bool_array(array)

# Returns boolean value if object matches rules
#
# @param array [Array] the array
# @param object [Object] object to bool
# @returns [Boolean] true/false returned
def bool_it(object)
case object.to_s
Expand Down
41 changes: 41 additions & 0 deletions lib/utilise/augment/hash.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
require 'utilise/string'

module Utilise
module Augment
# Extends a hash to modify keys
module Hash
# Transforms all keys to snake case
def snake_keys
transform_keys(self) { |key| key.snake }
end

# Transforms all keys to camel case
def camel_keys
transform_keys(self) { |key| key.camel }
end

# Transforms all keys to space case
def space_keys
transform_keys(self) { |key| key.space }
end

private

# Deep transform keys
# An awesome piece of code from rails
# apidock.com/rails/v4.2.1/Hash/_deep_transform_keys_in_object%21
def transform_keys(object, &block)
case object
when Hash
object.each_with_object({}) do |(key, value), result|
result[yield(key)] = transform_keys(value, &block)
end
when Array
object.map { |e| transform_keys(e, &block) }
else
object
end
end
end
end
end
6 changes: 4 additions & 2 deletions lib/utilise/augment/modify.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ module Augment
module Modify
# Return a string in modified camel case
def camel
split_up.map(&:capitalize).join('')
array = split_up
array.first + array[1..-1].map(&:capitalize).join('')
end

# Return a string in snake case
Expand All @@ -21,7 +22,8 @@ def space

# Splits up the current string into an array and normalises it
def split_up
arr = split(/(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|(?=_)|(?= )/)
regex = /(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|(?=_)|(?= )/
arr = to_s.split(regex)
arr.map!(&:downcase)
arr.map!(&:strip)
arr.map { |s| s.delete('_') }
Expand Down
2 changes: 1 addition & 1 deletion lib/utilise/fixnum.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'utilise/augment/bool.rb'
require 'utilise/augment/bool'

# Extend existing ruby class Fixnum
class Fixnum
Expand Down
4 changes: 3 additions & 1 deletion lib/utilise/hash.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
require 'utilise/augment/bool.rb'
require 'utilise/augment/bool'
require 'utilise/augment/hash'

# Extend existing ruby class Hash
class Hash
include Utilise::Augment::Bool
include Utilise::Augment::Hash
end
2 changes: 1 addition & 1 deletion lib/utilise/hashie.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'utilise/augment/crash.rb'
require 'utilise/augment/crash'

# Extend existing hashie module
module Hashie
Expand Down
2 changes: 1 addition & 1 deletion lib/utilise/object.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'utilise/augment/matchers.rb'
require 'utilise/augment/matchers'

# Extend existing ruby class Object
class Object
Expand Down
4 changes: 2 additions & 2 deletions lib/utilise/string.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
require 'utilise/augment/bool.rb'
require 'utilise/augment/modify.rb'
require 'utilise/augment/bool'
require 'utilise/augment/modify'

# Extend existing ruby class String
class String
Expand Down
4 changes: 3 additions & 1 deletion lib/utilise/symbol.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
require 'utilise/augment/bool.rb'
require 'utilise/augment/bool'
require 'utilise/augment/modify'

# Extend existing ruby class Symbol
class Symbol
include Utilise::Augment::Bool
include Utilise::Augment::Modify
end
2 changes: 1 addition & 1 deletion lib/utilise/time.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require 'utilise/augment/time.rb'
require 'utilise/augment/time'

# Extend existing ruby class Time
class Time
Expand Down
1 change: 0 additions & 1 deletion spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,3 @@
Coveralls.wear!
SimpleCov.start
require 'utilise'

File renamed without changes.
73 changes: 0 additions & 73 deletions spec/utilise/augment/hash_spec.rb

This file was deleted.

File renamed without changes.

0 comments on commit 57ef221

Please sign in to comment.