Skip to content

hopsoft/looker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lines of Code Code Status Dependency Status Build Status Coverage Status Downloads

Looker

Hash based enumerated types (ENUMS)

Quick Start

gem install looker
Looker.add roles: {
    :admin  => 1,
    :reader => 2,
    :writer => 3
  }

# The name (first Hash key) & value is converted
# to an upcase named frozen constant on the Looker module

Looker::ROLES[:admin]   # => 1
Looker::ROLES["admin"]  # => 1
Looker::ROLES[1]        # => :admin

Looker::ROLES[:reader]  # => 2
Looker::ROLES["reader"] # => 2
Looker::ROLES[2]        # => :reader

Looker::ROLES[:writer]  # => 3
Looker::ROLES["writer"] # => 3
Looker::ROLES[3]        # => :writer

Looker::ROLES.name          # => "roles"
Looker::ROLES.constant_name # => "ROLES"

Looker::ROLES.to_h # => {:admin=>1, :reader=>2, :writer=>3}

Multiple Enumerated Types

It's possible to add multiple enumerated types with a single call to Looker#add.

Looker.add(
  roles: {
    :admin  => 1,
    :reader => 2,
    :writer => 3
  },

  colors: {
    :red    => "ff0000",
    :yellow => "ffff00",
    :blue   => "0000ff"
  }
)

Looker::ROLES[:admin]    # => 1
Looker::ROLES[3]         # => :writer

Looker::COLORS[:red]     # => "ff0000"
Looker::COLORS["ffff00"] # => :yellow

Adding Enumerated Types from YAML

It can be useful to manage enumerated type definitions with a YAML file.

# /path/to/enums.yml
roles:
  admin: 1
  reader: 2
  writer: 3

colors:
  red: ff0000
  yellow: ffff00
  blue: 0000ff
Looker.add YAML.load(File.read("/path/to/enums.yml")

Looker::ROLES["reader"]  # => 2
Looker::ROLES[1]         # => "admin"

Looker::COLORS["yellow"] # => "ffff00"
Looker::COLORS["0000ff"] # => "blue"

ActiveRecord enums

You may find it useful to reuse Looker defined enumerated types as ActiveRecord enums.

Fortunately this is pretty simple— just use the to_h method on the Looker constant.

Looker.add roles: {
  :admin  => 1,
  :reader => 2,
  :writer => 3
}

class User < ActiveRecord::Base
  enum roles: Looker::ROLES.to_h
end

About

Hash based enumerated types (ENUMS)

Resources

License

Stars

Watchers

Forks

Packages

No packages published