Module: Boldsign::CaseConvert
- Defined in:
- lib/boldsign/case_convert.rb
Overview
Converts arbitrary Ruby hash keys (snake_case, camelCase, or PascalCase; Symbol or String) to camelCase string keys recursively, matching the casing the BoldSign REST API expects in request bodies. Non-Hash and non-Array values — including binary IO objects, FilePart instances, scalars, dates, etc. — pass through untouched.
Class Method Summary collapse
-
.camelize(obj) ⇒ Object
Recursively camelCase every Hash key reachable from ‘obj`.
-
.camelize_key(key) ⇒ String
CamelCase string.
- .capitalize_word(str) ⇒ Object
- .lowercase_first(str) ⇒ Object
Class Method Details
.camelize(obj) ⇒ Object
Recursively camelCase every Hash key reachable from ‘obj`.
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/boldsign/case_convert.rb', line 13 def camelize(obj) case obj when Hash obj.each_with_object({}) { |(k, v), acc| acc[camelize_key(k)] = camelize(v) } when Array obj.map { |v| camelize(v) } else obj end end |
.camelize_key(key) ⇒ String
Returns camelCase string.
26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/boldsign/case_convert.rb', line 26 def camelize_key(key) str = key.to_s return str if str.empty? if str.include?("_") parts = str.split("_").reject(&:empty?) return str if parts.empty? ([parts.first.downcase] + parts.drop(1).map { |part| capitalize_word(part) }).join else lowercase_first(str) end end |
.capitalize_word(str) ⇒ Object
40 41 42 43 44 |
# File 'lib/boldsign/case_convert.rb', line 40 def capitalize_word(str) return str if str.empty? str[0].upcase + str[1..] end |
.lowercase_first(str) ⇒ Object
46 47 48 49 50 |
# File 'lib/boldsign/case_convert.rb', line 46 def lowercase_first(str) return str if str.empty? str[0].downcase + str[1..] end |