baudelaire 0.1.0
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 +7 -0
- data/.gitignore +2 -0
- data/.rspec +1 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +45 -0
- data/README.md +48 -0
- data/Rakefile +8 -0
- data/baudelaire.gemspec +27 -0
- data/lib/baudelaire.rb +6 -0
- data/lib/baudelaire/model_extension.rb +24 -0
- data/lib/baudelaire/railtie.rb +9 -0
- data/lib/baudelaire/version.rb +3 -0
- data/spec/baudelaire/model_extension_spec.rb +57 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/support/models.rb +7 -0
- data/spec/support/schema.rb +11 -0
- metadata +120 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b7b510d37b5bae18111e4f792b943c05c3907319
|
4
|
+
data.tar.gz: 0793a8c0a45b949f1abd64521807299e6b7aff4e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 424d1fe62c4ad8ea156a7c827714b6ee908fe7c5836a8b1b0ffe3de43fb7fabdf8493889625065576e5a3f08c762c7b8897a12e01a9279ec14d719ed9fe0fdc2
|
7
|
+
data.tar.gz: b4ab2f041f1c767a40f9c68e472f0c2cc78bbdf64cc66db9892857ae0078c72caef397cc9df4f35f349556e4dfb7fe50e8b7bcc2d97dde3e67d35128a5d52003
|
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color -f documentation
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
baudelaire (0.1.0)
|
5
|
+
activerecord
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
activemodel (3.2.21)
|
11
|
+
activesupport (= 3.2.21)
|
12
|
+
builder (~> 3.0.0)
|
13
|
+
activerecord (3.2.21)
|
14
|
+
activemodel (= 3.2.21)
|
15
|
+
activesupport (= 3.2.21)
|
16
|
+
arel (~> 3.0.2)
|
17
|
+
tzinfo (~> 0.3.29)
|
18
|
+
activesupport (3.2.21)
|
19
|
+
i18n (~> 0.6, >= 0.6.4)
|
20
|
+
multi_json (~> 1.0)
|
21
|
+
arel (3.0.3)
|
22
|
+
builder (3.0.4)
|
23
|
+
diff-lcs (1.2.5)
|
24
|
+
i18n (0.6.11)
|
25
|
+
multi_json (1.10.1)
|
26
|
+
rake (10.3.2)
|
27
|
+
rspec (2.14.1)
|
28
|
+
rspec-core (~> 2.14.0)
|
29
|
+
rspec-expectations (~> 2.14.0)
|
30
|
+
rspec-mocks (~> 2.14.0)
|
31
|
+
rspec-core (2.14.8)
|
32
|
+
rspec-expectations (2.14.5)
|
33
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
34
|
+
rspec-mocks (2.14.6)
|
35
|
+
sqlite3 (1.3.6)
|
36
|
+
tzinfo (0.3.42)
|
37
|
+
|
38
|
+
PLATFORMS
|
39
|
+
ruby
|
40
|
+
|
41
|
+
DEPENDENCIES
|
42
|
+
baudelaire!
|
43
|
+
rake
|
44
|
+
rspec
|
45
|
+
sqlite3
|
data/README.md
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
Baudelaire
|
2
|
+
======
|
3
|
+
|
4
|
+
[](http://travis-ci.org/albertbellonch/baudelaire)
|
5
|
+
|
6
|
+
Description
|
7
|
+
-----------
|
8
|
+
|
9
|
+
Baudelaire is a simple gem that adds wraps ActiveRecord getters and
|
10
|
+
setters for string attributes, so they can be used as symbols.
|
11
|
+
|
12
|
+
This gem is named after the beginner of symbolism in literature,
|
13
|
+
French poet [Charles Baudelaire](http://en.wikipedia.org/wiki/Charles_Baudelaire).
|
14
|
+
|
15
|
+
Installation
|
16
|
+
------------
|
17
|
+
|
18
|
+
Simply install the gem:
|
19
|
+
|
20
|
+
gem install baudelaire
|
21
|
+
|
22
|
+
Usage
|
23
|
+
-----
|
24
|
+
|
25
|
+
Just use the `symbolize` class method on the model, passing the list of
|
26
|
+
attributes you want to symbolize.
|
27
|
+
|
28
|
+
class TvShow < ActiveRecord::Base
|
29
|
+
...
|
30
|
+
symbolize :kind, :interest_level
|
31
|
+
...
|
32
|
+
end
|
33
|
+
|
34
|
+
Then you will be able to do something like:
|
35
|
+
|
36
|
+
tv_show = TvShow.new
|
37
|
+
tv_show.kind = 'drama'
|
38
|
+
tv_show.kind # will return :drama
|
39
|
+
|
40
|
+
TODO
|
41
|
+
----
|
42
|
+
|
43
|
+
Do you have something in mind? Issue a PR! Bonus points for testing :)
|
44
|
+
|
45
|
+
Changelog
|
46
|
+
---------
|
47
|
+
|
48
|
+
* v.0.1.0 Basic feature: getters and setters for symbolized attributes
|
data/Rakefile
ADDED
data/baudelaire.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "baudelaire/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "baudelaire"
|
7
|
+
s.version = Baudelaire::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Albert Bellonch"]
|
10
|
+
s.email = ["albert@itnig.net"]
|
11
|
+
s.homepage = "http://itnig.net"
|
12
|
+
s.summary = %q{A string symbolizer}
|
13
|
+
s.description = %q{-}
|
14
|
+
s.license = 'MIT'
|
15
|
+
|
16
|
+
s.rubyforge_project = "baudelaire"
|
17
|
+
|
18
|
+
s.files = `git ls-files`.split("\n")
|
19
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.add_dependency "activerecord"
|
23
|
+
|
24
|
+
s.add_development_dependency "rspec"
|
25
|
+
s.add_development_dependency "sqlite3"
|
26
|
+
s.add_development_dependency "rake"
|
27
|
+
end
|
data/lib/baudelaire.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module Baudelaire
|
4
|
+
module ModelExtension
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def symbolize(*fields)
|
9
|
+
fields.each do |field|
|
10
|
+
define_method(:"#{field}=") do |value|
|
11
|
+
value = value.to_sym if value
|
12
|
+
self[field] = value
|
13
|
+
end
|
14
|
+
|
15
|
+
define_method(:"#{field}") do
|
16
|
+
value = self[field]
|
17
|
+
value = value.to_sym if value
|
18
|
+
value
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe :symbolize do
|
4
|
+
before { @tv_show = TvShow.new }
|
5
|
+
|
6
|
+
describe :setter do
|
7
|
+
context "when being nil" do
|
8
|
+
before { @tv_show.kind = nil }
|
9
|
+
|
10
|
+
it "should save a nil" do
|
11
|
+
@tv_show[:kind].should be_nil
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context "when being a string" do
|
16
|
+
before { @tv_show.kind = 'drama' }
|
17
|
+
|
18
|
+
it "should save a symbol" do
|
19
|
+
@tv_show[:kind].should == :drama
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context "when being a symbol" do
|
24
|
+
before { @tv_show.kind = :drama }
|
25
|
+
|
26
|
+
it "should save a symbol" do
|
27
|
+
@tv_show[:kind].should == :drama
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe :getter do
|
33
|
+
context "when being nil" do
|
34
|
+
before { @tv_show[:kind] = nil }
|
35
|
+
|
36
|
+
it "should return nil" do
|
37
|
+
@tv_show.kind.should be_nil
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "when being a string" do
|
42
|
+
before { @tv_show[:kind] = 'drama' }
|
43
|
+
|
44
|
+
it "should return the symbolized string" do
|
45
|
+
@tv_show.kind.should == :drama
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "when being a symbol" do
|
50
|
+
before { @tv_show[:kind] = :drama }
|
51
|
+
|
52
|
+
it "should return the symbol" do
|
53
|
+
@tv_show.kind.should == :drama
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: baudelaire
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Albert Bellonch
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-11-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activerecord
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: sqlite3
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: "-"
|
70
|
+
email:
|
71
|
+
- albert@itnig.net
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- ".rspec"
|
78
|
+
- ".travis.yml"
|
79
|
+
- Gemfile
|
80
|
+
- Gemfile.lock
|
81
|
+
- README.md
|
82
|
+
- Rakefile
|
83
|
+
- baudelaire.gemspec
|
84
|
+
- lib/baudelaire.rb
|
85
|
+
- lib/baudelaire/model_extension.rb
|
86
|
+
- lib/baudelaire/railtie.rb
|
87
|
+
- lib/baudelaire/version.rb
|
88
|
+
- spec/baudelaire/model_extension_spec.rb
|
89
|
+
- spec/spec_helper.rb
|
90
|
+
- spec/support/models.rb
|
91
|
+
- spec/support/schema.rb
|
92
|
+
homepage: http://itnig.net
|
93
|
+
licenses:
|
94
|
+
- MIT
|
95
|
+
metadata: {}
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
requirements: []
|
111
|
+
rubyforge_project: baudelaire
|
112
|
+
rubygems_version: 2.2.2
|
113
|
+
signing_key:
|
114
|
+
specification_version: 4
|
115
|
+
summary: A string symbolizer
|
116
|
+
test_files:
|
117
|
+
- spec/baudelaire/model_extension_spec.rb
|
118
|
+
- spec/spec_helper.rb
|
119
|
+
- spec/support/models.rb
|
120
|
+
- spec/support/schema.rb
|