File: README.md

package info (click to toggle)
ruby-awrence 4.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 100 kB
  • sloc: ruby: 68; makefile: 4
file content (94 lines) | stat: -rw-r--r-- 2,713 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# Awrence

[![Gem Version](https://badge.fury.io/rb/awrence.svg)](https://badge.fury.io/rb/awrence)
![CI](https://github.com/technicalpanda/awrence/workflows/CI/badge.svg)

Have you ever needed to automatically convert Rubyish `snake_case` to JSON-style `camelBack` or `CamelCase` hash keys?

Awrence to the rescue!

This gem recursively converts all snake_case keys in a hash structure to camelBack or CamelCase.

## Requirements

* Ruby >= 3.0

For Ruby < 3.0 use version 2.0.1

## Installation

Add this to your Gemfile:

```ruby
gem "awrence"
```

Or install it yourself as:

```bash
gem install awrence
```

## Usage

```ruby
my_hash = {"first_key" => 1, "foo_bars" => [{"baz_baz" => "value"}, {"blah_blah" => "value"}]}
camel_hash = my_hash.to_camel_keys
# => {"FirstKey" => 1, "FooBars" => [{"BazBaz" => "value"}, {"BlahBlah" => "value"}]}

# OR

camel_hash = my_hash.to_camelback_keys
# => {"firstKey" => 1, "fooBars" => [{"bazBaz" => "value"}, {"blahBlah" => "value"}]}
```

Awrence works on either string keys or symbolized keys. It has no dependencies, as it has its own `camelize` method lifted out of ActiveSupport.

### Acronyms

You can set acronyms that Awrence will now check against when converting the keys.

```ruby
Awrence.acronyms = { "url" => "URL", "id" => "ID" }

my_hash = { "user_url" => "http://a.com", "user_id" => 2 }
camel_hash = my_hash.to_camel_keys
# => { "UserURL" => "http://a.com", "UserID" => 2 }

camel_hash = my_hash.to_camelback_keys
# => { "userURL" => "http://a.com", "userID" => 2 }
```

The acronym will be ignored when it's the first word and `to_camelback_keys` is called.

```ruby
Awrence.acronyms = { "id" => "ID" }

my_hash = { "id" => 2 }
camel_hash = my_hash.to_camel_keys
# => { "ID" => 2 }

camel_hash = my_hash.to_camelback_keys
# => { "id" => 2 }
```

## Limitations

* There is no `Hash#to_camel_keys!` form.

# Going the other way

If you've already got `CamelCase` and need to `snake_case` it, you are encouraged to try
the [Plissken](http://github.com/technicalpanda/plissken) gem.

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/technicalpanda/awrence. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.

## License

The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).

## Code of Conduct

Everyone interacting with this project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/technicalpanda/awrence/blob/main/CODE_OF_CONDUCT.md).