mold 1.0.0 → 1.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.
- data/Gemfile +3 -3
- data/Gemfile.lock +14 -7
- data/README.md +54 -45
- data/Rakefile +2 -10
- data/lib/mold/handler.rb +20 -38
- data/lib/mold/version.rb +1 -1
- data/mold.gemspec +59 -0
- metadata +41 -19
data/Gemfile
CHANGED
|
@@ -4,7 +4,7 @@ source "http://rubygems.org"
|
|
|
4
4
|
# Include everything needed to run rake, tests, features, etc.
|
|
5
5
|
group :development do
|
|
6
6
|
gem "shoulda", ">= 0"
|
|
7
|
-
gem "bundler"
|
|
8
|
-
gem "jeweler"
|
|
9
|
-
gem "
|
|
7
|
+
gem "bundler"
|
|
8
|
+
gem "jeweler"
|
|
9
|
+
gem "rake"
|
|
10
10
|
end
|
data/Gemfile.lock
CHANGED
|
@@ -2,19 +2,26 @@ GEM
|
|
|
2
2
|
remote: http://rubygems.org/
|
|
3
3
|
specs:
|
|
4
4
|
git (1.2.5)
|
|
5
|
-
jeweler (1.
|
|
5
|
+
jeweler (1.8.3)
|
|
6
6
|
bundler (~> 1.0)
|
|
7
7
|
git (>= 1.2.5)
|
|
8
8
|
rake
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
rdoc
|
|
10
|
+
json (1.7.3)
|
|
11
|
+
rake (0.9.2.2)
|
|
12
|
+
rdoc (3.12)
|
|
13
|
+
json (~> 1.4)
|
|
14
|
+
shoulda (3.0.1)
|
|
15
|
+
shoulda-context (~> 1.0.0)
|
|
16
|
+
shoulda-matchers (~> 1.0.0)
|
|
17
|
+
shoulda-context (1.0.0)
|
|
18
|
+
shoulda-matchers (1.0.0)
|
|
12
19
|
|
|
13
20
|
PLATFORMS
|
|
14
21
|
ruby
|
|
15
22
|
|
|
16
23
|
DEPENDENCIES
|
|
17
|
-
bundler
|
|
18
|
-
jeweler
|
|
19
|
-
|
|
24
|
+
bundler
|
|
25
|
+
jeweler
|
|
26
|
+
rake
|
|
20
27
|
shoulda
|
data/README.md
CHANGED
|
@@ -1,72 +1,81 @@
|
|
|
1
1
|
## Overview ##
|
|
2
2
|
|
|
3
|
-
Mold is a view template handler for Rails that renders Ruby objects to JSON.
|
|
3
|
+
Mold is a view template handler for Rails 3+ that renders Ruby objects to JSON.
|
|
4
4
|
|
|
5
5
|
## Compatibility ##
|
|
6
6
|
|
|
7
|
-
Mold is compatible with Rails
|
|
7
|
+
Mold is compatible with Rails Rails 3.x.
|
|
8
8
|
|
|
9
9
|
## Installation ##
|
|
10
10
|
|
|
11
11
|
Install Mold as a gem:
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
```ruby
|
|
14
|
+
gem install mold
|
|
15
|
+
```
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
or add to your Gemfile:
|
|
18
|
+
```ruby
|
|
19
|
+
gem 'mold'
|
|
20
|
+
```
|
|
18
21
|
|
|
19
22
|
## Usage ##
|
|
20
23
|
|
|
21
24
|
It's pretty straight-forward to create a Mold JSON template, just create the structure as you would in a Hash:
|
|
22
25
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
26
|
+
```ruby
|
|
27
|
+
# app/controllers/users_controller.rb
|
|
28
|
+
class Users < ActionController:Base
|
|
29
|
+
def show
|
|
30
|
+
@user = User.first
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# app/views/users/show.mold
|
|
35
|
+
{
|
|
36
|
+
:user => {
|
|
37
|
+
:id => @user.id,
|
|
38
|
+
:name => @user.name
|
|
36
39
|
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
37
42
|
|
|
38
43
|
You can also create and use view partials in Mold:
|
|
39
44
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
# app/views/users/index.json.mold
|
|
56
|
-
{
|
|
57
|
-
:users => @users.map{ |user| render(:partial => 'user', :object => user) }
|
|
45
|
+
```ruby
|
|
46
|
+
# app/controllers/users_controller.rb
|
|
47
|
+
class Users < ActionController:Base
|
|
48
|
+
def index
|
|
49
|
+
@users = User.all
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# app/views/users/_user.json.mold
|
|
54
|
+
{
|
|
55
|
+
:user => {
|
|
56
|
+
:id => user.id,
|
|
57
|
+
:name => user.name
|
|
58
58
|
}
|
|
59
|
-
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
# app/views/users/index.json.mold
|
|
62
|
+
{
|
|
63
|
+
:users => @users.map{ |user| render(:partial => 'user', :object => user) }
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
60
67
|
Writing code in a Mold view also works:
|
|
61
68
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
```ruby
|
|
70
|
+
# app/views/users/show.json.mold
|
|
71
|
+
time = Time.now
|
|
72
|
+
|
|
73
|
+
{
|
|
74
|
+
:user => {
|
|
75
|
+
:time => time
|
|
69
76
|
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
70
79
|
|
|
71
80
|
## Inspiration ##
|
|
72
81
|
|
data/Rakefile
CHANGED
|
@@ -24,8 +24,8 @@ Jeweler::Tasks.new do |gem|
|
|
|
24
24
|
gem.email = "tjackiw@gmail.com"
|
|
25
25
|
gem.homepage = "http://github.com/tjackiw/mold"
|
|
26
26
|
gem.license = "MIT"
|
|
27
|
-
gem.summary = %Q{ Mold is a view template handler for Rails that renders Ruby objects to JSON. }
|
|
28
|
-
gem.description = %Q{ Mold is a view template handler for Rails that renders Ruby objects to JSON. }
|
|
27
|
+
gem.summary = %Q{ Mold is a view template handler for Rails 3+ that renders Ruby objects to JSON. }
|
|
28
|
+
gem.description = %Q{ Mold is a view template handler for Rails 3+ that renders Ruby objects to JSON. }
|
|
29
29
|
|
|
30
30
|
gem.files = `git ls-files`.split("\n")
|
|
31
31
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
@@ -40,14 +40,6 @@ Rake::TestTask.new(:test) do |test|
|
|
|
40
40
|
test.verbose = true
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
require 'rcov/rcovtask'
|
|
44
|
-
Rcov::RcovTask.new do |test|
|
|
45
|
-
test.libs << 'test'
|
|
46
|
-
test.pattern = 'test/**/test_*.rb'
|
|
47
|
-
test.verbose = true
|
|
48
|
-
test.rcov_opts << '--exclude "gems/*"'
|
|
49
|
-
end
|
|
50
|
-
|
|
51
43
|
task :default => :test
|
|
52
44
|
|
|
53
45
|
require 'rdoc/task'
|
data/lib/mold/handler.rb
CHANGED
|
@@ -1,45 +1,27 @@
|
|
|
1
|
-
# Rails 2.X Template
|
|
2
|
-
if defined?(Rails) && Rails.version =~ /^2/
|
|
3
|
-
module Mold
|
|
4
|
-
class Handler < ActionView::TemplateHandler
|
|
5
|
-
include ActionView::TemplateHandlers::Compilable
|
|
6
|
-
|
|
7
|
-
def compile(template)
|
|
8
|
-
source = if File.basename(template.filename).starts_with?('_')
|
|
9
|
-
'code.call'
|
|
10
|
-
else
|
|
11
|
-
'ActiveSupport::JSON.encode(code.call)'
|
|
12
|
-
end
|
|
13
|
-
%{
|
|
14
|
-
controller.response.content_type = Mime::JSON
|
|
15
|
-
code = lambda{#{ template.source }}
|
|
16
|
-
self.output_buffer = (#{ src })
|
|
17
|
-
}
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
ActionView::Template.register_template_handler(:mold, Mold::Handler)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# Rails 3.X Template
|
|
25
1
|
if defined?(Rails) && Rails.version =~ /^3/
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
self.default_format = Mime::JSON
|
|
2
|
+
|
|
3
|
+
require('yajl/json_gem') if defined?(Yajl)
|
|
30
4
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
5
|
+
class ActionView::Template
|
|
6
|
+
module Handlers
|
|
7
|
+
class Mold
|
|
8
|
+
default_format = Mime::JSON
|
|
9
|
+
|
|
10
|
+
def call(template)
|
|
11
|
+
source = if File.basename(template.identifier).starts_with?('_')
|
|
12
|
+
'code.call'
|
|
13
|
+
else
|
|
14
|
+
defined?(Yajl) ? 'JSON.generate(code.call)' : 'ActiveSupport::JSON.encode(code.call)'
|
|
15
|
+
end
|
|
16
|
+
%{
|
|
17
|
+
code = lambda{#{ template.source }}
|
|
18
|
+
self.output_buffer = (#{ source })
|
|
19
|
+
}
|
|
36
20
|
end
|
|
37
|
-
|
|
38
|
-
code = lambda{#{ template.source }}
|
|
39
|
-
self.output_buffer = (#{ source })
|
|
40
|
-
}
|
|
21
|
+
|
|
41
22
|
end
|
|
42
23
|
end
|
|
24
|
+
register_template_handler(:mold, Handlers::Mold.new)
|
|
43
25
|
end
|
|
44
|
-
|
|
26
|
+
|
|
45
27
|
end
|
data/lib/mold/version.rb
CHANGED
data/mold.gemspec
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Generated by jeweler
|
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
|
+
# -*- encoding: utf-8 -*-
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |s|
|
|
7
|
+
s.name = "mold"
|
|
8
|
+
s.version = "1.1.0"
|
|
9
|
+
|
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
|
+
s.authors = ["Thiago Jackiw"]
|
|
12
|
+
s.date = "2012-06-06"
|
|
13
|
+
s.description = " Mold is a view template handler for Rails 3+ that renders Ruby objects to JSON. "
|
|
14
|
+
s.email = "tjackiw@gmail.com"
|
|
15
|
+
s.extra_rdoc_files = [
|
|
16
|
+
"LICENSE.txt",
|
|
17
|
+
"README.md"
|
|
18
|
+
]
|
|
19
|
+
s.files = [
|
|
20
|
+
".document",
|
|
21
|
+
".gitignore",
|
|
22
|
+
"Gemfile",
|
|
23
|
+
"Gemfile.lock",
|
|
24
|
+
"LICENSE.txt",
|
|
25
|
+
"README.md",
|
|
26
|
+
"Rakefile",
|
|
27
|
+
"lib/mold.rb",
|
|
28
|
+
"lib/mold/handler.rb",
|
|
29
|
+
"lib/mold/version.rb",
|
|
30
|
+
"mold.gemspec"
|
|
31
|
+
]
|
|
32
|
+
s.homepage = "http://github.com/tjackiw/mold"
|
|
33
|
+
s.licenses = ["MIT"]
|
|
34
|
+
s.require_paths = ["lib"]
|
|
35
|
+
s.rubygems_version = "1.8.24"
|
|
36
|
+
s.summary = "Mold is a view template handler for Rails 3+ that renders Ruby objects to JSON."
|
|
37
|
+
|
|
38
|
+
if s.respond_to? :specification_version then
|
|
39
|
+
s.specification_version = 3
|
|
40
|
+
|
|
41
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
42
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
|
43
|
+
s.add_development_dependency(%q<bundler>, [">= 0"])
|
|
44
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
|
45
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
|
46
|
+
else
|
|
47
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
|
48
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
|
49
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
50
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
|
51
|
+
end
|
|
52
|
+
else
|
|
53
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
|
54
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
|
55
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
56
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mold
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2012-06-06 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: shoulda
|
|
16
|
-
requirement:
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,32 +21,47 @@ dependencies:
|
|
|
21
21
|
version: '0'
|
|
22
22
|
type: :development
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements:
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ! '>='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '0'
|
|
25
30
|
- !ruby/object:Gem::Dependency
|
|
26
31
|
name: bundler
|
|
27
|
-
requirement:
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
28
33
|
none: false
|
|
29
34
|
requirements:
|
|
30
|
-
- -
|
|
35
|
+
- - ! '>='
|
|
31
36
|
- !ruby/object:Gem::Version
|
|
32
|
-
version:
|
|
37
|
+
version: '0'
|
|
33
38
|
type: :development
|
|
34
39
|
prerelease: false
|
|
35
|
-
version_requirements:
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ! '>='
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '0'
|
|
36
46
|
- !ruby/object:Gem::Dependency
|
|
37
47
|
name: jeweler
|
|
38
|
-
requirement:
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
39
49
|
none: false
|
|
40
50
|
requirements:
|
|
41
|
-
- -
|
|
51
|
+
- - ! '>='
|
|
42
52
|
- !ruby/object:Gem::Version
|
|
43
|
-
version:
|
|
53
|
+
version: '0'
|
|
44
54
|
type: :development
|
|
45
55
|
prerelease: false
|
|
46
|
-
version_requirements:
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
none: false
|
|
58
|
+
requirements:
|
|
59
|
+
- - ! '>='
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
47
62
|
- !ruby/object:Gem::Dependency
|
|
48
|
-
name:
|
|
49
|
-
requirement:
|
|
63
|
+
name: rake
|
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
|
50
65
|
none: false
|
|
51
66
|
requirements:
|
|
52
67
|
- - ! '>='
|
|
@@ -54,8 +69,13 @@ dependencies:
|
|
|
54
69
|
version: '0'
|
|
55
70
|
type: :development
|
|
56
71
|
prerelease: false
|
|
57
|
-
version_requirements:
|
|
58
|
-
|
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
+
none: false
|
|
74
|
+
requirements:
|
|
75
|
+
- - ! '>='
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: '0'
|
|
78
|
+
description: ! ' Mold is a view template handler for Rails 3+ that renders Ruby objects
|
|
59
79
|
to JSON. '
|
|
60
80
|
email: tjackiw@gmail.com
|
|
61
81
|
executables: []
|
|
@@ -74,6 +94,7 @@ files:
|
|
|
74
94
|
- lib/mold.rb
|
|
75
95
|
- lib/mold/handler.rb
|
|
76
96
|
- lib/mold/version.rb
|
|
97
|
+
- mold.gemspec
|
|
77
98
|
homepage: http://github.com/tjackiw/mold
|
|
78
99
|
licenses:
|
|
79
100
|
- MIT
|
|
@@ -89,7 +110,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
89
110
|
version: '0'
|
|
90
111
|
segments:
|
|
91
112
|
- 0
|
|
92
|
-
hash: -
|
|
113
|
+
hash: -1180247979504646527
|
|
93
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
115
|
none: false
|
|
95
116
|
requirements:
|
|
@@ -98,8 +119,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
98
119
|
version: '0'
|
|
99
120
|
requirements: []
|
|
100
121
|
rubyforge_project:
|
|
101
|
-
rubygems_version: 1.8.
|
|
122
|
+
rubygems_version: 1.8.24
|
|
102
123
|
signing_key:
|
|
103
124
|
specification_version: 3
|
|
104
|
-
summary: Mold is a view template handler for Rails that renders Ruby objects to
|
|
125
|
+
summary: Mold is a view template handler for Rails 3+ that renders Ruby objects to
|
|
126
|
+
JSON.
|
|
105
127
|
test_files: []
|