feint 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6914ae556766c7b96dd8e2d89e916d45c02bbc69
4
- data.tar.gz: 6dd5f06fead7ad39f9094b29f915a782526e0e9e
3
+ metadata.gz: 4d240b0be4f97e277974795798b327d64de4323f
4
+ data.tar.gz: a7484eba6f2b0ad1e68f48c7490b16b2daf30067
5
5
  SHA512:
6
- metadata.gz: b6120437f12ce1944789d3bf7c2ec86bc1cc1bd98dacb83b85876bb0654fc49e41731ce99a9665495e57b2ad5c6d1cba178b1c243dc97b1d2b8242409671197f
7
- data.tar.gz: 36afa5c5eab802ed34d2b0382921b63b5618e94781b6a1dfc38caecee801b950a1c44030545b23046064db16659df4a2f2197fd70fd9390519447c02c364eabc
6
+ metadata.gz: 0a6072a4680e69e7b7f6c4d645070d05ce580b955c30cb85f7a3eac8202a793019961d3a1294b8dde5ca484fc1063180bb2a74f0823512d12289f836b4ababb2
7
+ data.tar.gz: b15c4fee084ecf137bccb22531ec2b7b5717893764a54887ae8b9ef2eb939fea0fad27b0ee19a34cb4ce59e82297b718d632bb37eb6c450c7ac2bcba960954be
data/.gitignore CHANGED
@@ -8,3 +8,4 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  *.gem
11
+ *.db
data/README.md CHANGED
@@ -9,6 +9,9 @@ is to
9
9
  - Convert keys of parameters from one name to another name for model initialization.
10
10
  - Lock mandatory and optional columns used in a presenter.
11
11
 
12
+ From perspective of a serializer, a Feint preseter acts as the model it presents except for different
13
+ attribute names. You can replace a model instance with its Feint presenter and it will work seamelessly.
14
+
12
15
  ## Installation
13
16
 
14
17
  Add this line to your application's Gemfile:
@@ -27,7 +30,19 @@ Or install it yourself as:
27
30
 
28
31
  ## Usage
29
32
 
30
- TODO: Write usage instructions here
33
+ ```ruby
34
+ class UserPresenter < Feint::Presenter
35
+ end
36
+ ```
37
+
38
+ ```ruby
39
+ class UsersController < ApplicationController
40
+ def show
41
+ @user = User.find_by(id: params[:id])
42
+ render json: UserPresenter.new(@user)
43
+ end
44
+ end
45
+ ```
31
46
 
32
47
  ## Development
33
48
 
data/feint.gemspec CHANGED
@@ -25,4 +25,8 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "rake", "~> 10.0"
26
26
  spec.add_development_dependency "rspec", "~> 3.0"
27
27
  spec.add_development_dependency "activerecord"
28
+ spec.add_development_dependency "pg"
29
+ spec.add_development_dependency "mysql2"
30
+ spec.add_development_dependency "sqlite3"
31
+ spec.add_development_dependency "mongoid"
28
32
  end
@@ -0,0 +1,28 @@
1
+ module Feint
2
+ class Presenter
3
+ def initialize(model) # :nodoc:
4
+ @model = model
5
+ end
6
+
7
+ class << self
8
+ # Takes a list of columns
9
+ def attributes(*columns)
10
+ columns.each do |column|
11
+ define_method column do
12
+ @model.send(column)
13
+ end
14
+ end
15
+ end
16
+
17
+ # Take a list of mappiings
18
+ # { old_column_name => new_column_name }
19
+ def transform(mappings)
20
+ mappings.each do |old, new|
21
+ define_method new do
22
+ @model.send(old)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
data/lib/feint/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Feint
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/feint.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require "feint/version"
2
2
 
3
3
  module Feint
4
- # Your code goes here...
4
+ autoload :Presenter, "feint/presenter"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - shelling
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-26 00:00:00.000000000 Z
11
+ date: 2016-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,62 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pg
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: mysql2
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: mongoid
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
69
125
  description: A Presenter Layer for ORM(s)
70
126
  email:
71
127
  - navyblueshellingford@gmail.com
@@ -85,6 +141,7 @@ files:
85
141
  - bin/setup
86
142
  - feint.gemspec
87
143
  - lib/feint.rb
144
+ - lib/feint/presenter.rb
88
145
  - lib/feint/version.rb
89
146
  homepage: https://github.com/shelling/feint
90
147
  licenses:
@@ -106,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
163
  version: '0'
107
164
  requirements: []
108
165
  rubyforge_project:
109
- rubygems_version: 2.4.6
166
+ rubygems_version: 2.5.1
110
167
  signing_key:
111
168
  specification_version: 4
112
169
  summary: A Presenter Layer for ORM(s)