Skip to content

Commit 03ae8f2

Browse files
committed
Merge pull request #1 from johndbritton/mvp
MVP
2 parents f0c31bb + 4062579 commit 03ae8f2

File tree

7 files changed

+130
-0
lines changed

7 files changed

+130
-0
lines changed

Gemfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
source 'https://rubygems.org'
2+
3+
# Specify your gem's dependencies in classy_attribute.gemspec
4+
gemspec

LICENSE.txt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
Copyright (c) 2015 John Britton
2+
3+
MIT License
4+
5+
Permission is hereby granted, free of charge, to any person obtaining
6+
a copy of this software and associated documentation files (the
7+
"Software"), to deal in the Software without restriction, including
8+
without limitation the rights to use, copy, modify, merge, publish,
9+
distribute, sublicense, and/or sell copies of the Software, and to
10+
permit persons to whom the Software is furnished to do so, subject to
11+
the following conditions:
12+
13+
The above copyright notice and this permission notice shall be
14+
included in all copies or substantial portions of the Software.
15+
16+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# ClassyAttribute
2+
3+
TODO: Write a gem description
4+
5+
## Installation
6+
7+
Add this line to your application's Gemfile:
8+
9+
```ruby
10+
gem 'classy_attribute'
11+
```
12+
13+
And then execute:
14+
15+
$ bundle
16+
17+
Or install it yourself as:
18+
19+
$ gem install classy_attribute
20+
21+
## Usage
22+
23+
TODO: Write usage instructions here
24+
25+
## Contributing
26+
27+
1. Fork it ( https://github.com/[my-github-username]/classy_attribute/fork )
28+
2. Create your feature branch (`git checkout -b my-new-feature`)
29+
3. Commit your changes (`git commit -am 'Add some feature'`)
30+
4. Push to the branch (`git push origin my-new-feature`)
31+
5. Create a new Pull Request

Rakefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
require "bundler/gem_tasks"
2+

classy_attribute.gemspec

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# coding: utf-8
2+
lib = File.expand_path('../lib', __FILE__)
3+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4+
require 'classy_attribute/version'
5+
6+
Gem::Specification.new do |spec|
7+
spec.name = "classy_attribute"
8+
spec.version = ClassyAttribute::VERSION
9+
spec.authors = ["John Britton"]
10+
spec.email = ["[email protected]"]
11+
spec.summary = %q{Give your ActiveRecord attributes some class.}
12+
spec.description = %q{Provies a simple way to wrap ActiveRecord attributes with feature rich domain objects.}
13+
spec.homepage = "https://github.com/johndbritton/classy_attribute"
14+
spec.license = "MIT"
15+
16+
spec.files = `git ls-files -z`.split("\x0")
17+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19+
spec.require_paths = ["lib"]
20+
21+
spec.add_development_dependency "bundler", "~> 1.6"
22+
spec.add_development_dependency "rake", "~> 10.0"
23+
end

lib/classy_attribute.rb

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
require 'classy_attribute/version'
2+
3+
module ClassyAttribute
4+
5+
def self.included(base)
6+
base.extend ClassMethods
7+
base.include InstanceMethods
8+
end
9+
10+
module ClassMethods
11+
12+
def dump(object)
13+
return unless object.is_a?(self)
14+
object.value
15+
end
16+
17+
def load(value)
18+
return if value.nil?
19+
self.new(value)
20+
end
21+
end
22+
23+
module InstanceMethods
24+
25+
attr_accessor :value
26+
27+
def initialize(value)
28+
self.value = value
29+
end
30+
31+
include Comparable
32+
33+
def <=>(other)
34+
return if other.class != self.class
35+
36+
if value < other.value
37+
-1
38+
elsif value == other.value
39+
0
40+
else value > other.value
41+
1
42+
end
43+
end
44+
end
45+
end

lib/classy_attribute/version.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module ClassyAttribute
2+
VERSION = '0.0.1'
3+
end

0 commit comments

Comments
 (0)