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 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
@@ -0,0 +1,2 @@
1
+ # Packaged gems
2
+ pkg/*
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color -f documentation
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ rvm:
2
+ - "1.9.2"
3
+ - "1.9.3"
4
+ - "2.0.0"
5
+ - "2.1.5"
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in piet.gemspec
4
+ gemspec
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
+ [![Build Status](https://secure.travis-ci.org/albertbellonch/baudelaire.png)](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
@@ -0,0 +1,8 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core'
5
+ require 'rspec/core/rake_task'
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task default: :spec
@@ -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,6 @@
1
+ require 'baudelaire/version'
2
+ require 'baudelaire/model_extension'
3
+ require 'baudelaire/railtie' if defined? Rails
4
+
5
+ module Baudelaire
6
+ end
@@ -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,9 @@
1
+ module Baudelaire
2
+ class Railtie < Rails::Railtie
3
+ initializer 'baudelaire.model_extrension' do
4
+ ActiveSupport.on_load :active_record do
5
+ include Baudelaire::ModelExtension
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module Baudelaire
2
+ VERSION = "0.1.0"
3
+ 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
@@ -0,0 +1,9 @@
1
+ require 'active_record'
2
+
3
+ require 'baudelaire'
4
+
5
+ ActiveRecord::Base.establish_connection adapter: "sqlite3",
6
+ database: ":memory:"
7
+ ActiveRecord::Base.send(:include, Baudelaire::ModelExtension)
8
+
9
+ require 'support/models'
@@ -0,0 +1,7 @@
1
+ require 'active_record'
2
+
3
+ load File.dirname(__FILE__) + '/schema.rb'
4
+
5
+ class TvShow < ActiveRecord::Base
6
+ symbolize :kind
7
+ end
@@ -0,0 +1,11 @@
1
+ ActiveRecord::Schema.define do
2
+ self.verbose = false
3
+
4
+ create_table :tv_shows, force: true do |t|
5
+ t.string :title
6
+ t.string :kind
7
+ t.text :description
8
+ t.datetime :published_at
9
+ t.timestamps
10
+ end
11
+ end
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