feint 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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)