Sha256: 7acdc07166eaf715b96127c1a7bb9d7294e659968e62e369ab6e82b656635323

Contents?: true

Size: 1.16 KB

Versions: 2

Compression:

Stored size: 1.16 KB

Contents

**lazy lazer**

**features**:
- simple codebase (~100 lines of code)
- doesn't inherit all of the Hash and Enumerable cruft
- super lazy, doesn't even parse attributes until it's necessary

```ruby
class User
  include LazyLazer

  # User.new(first_name: 'John')  #=> Error: missing `id`
  # User.new(id: 1).id?  #=> true
  property :id, required: true

  # user = User.new(id: 1)
  # user.email  #=> nil
  property :email, default: nil

  # user = User.new(id: 1)
  # user.language  #=> :en_US
  property :language, default: :en_US

  # user = User.new(id: 1, first_name: 'John')
  # user.name  #=> 'John'
  # user.first_name  #=> NoMethodError: ...
  property :last_name, default: -> { %w[Doe Bloggs Hansen].sample }

  # user = User.new(id: 1, created_at: 1502834161)
  # user.created_at  #=> 2017-08-15 22:56:13 +0100
  property :created_at, with: ->(time) { Time.at(time) }

  # user = User.new(id: 1, age: '45')
  # user.age  #=> 45
  property :age, with: :to_i

  def reload
    update_attributes!(email: "#{last_name}@gmail.com") # update your attributes
    self.fully_loaded = true # mark model as fully updated
    self # a rails convention, totally optional
  end
end
```

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lazy_lazer-0.2.0 README.md
lazy_lazer-0.1.1 README.md