rabl 0.6.3 → 0.6.5

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/.travis.yml CHANGED
@@ -1,11 +1,9 @@
1
1
  # http://about.travis-ci.org/docs/user/build-configuration/
2
2
  before_script: "git submodule update --init"
3
3
  rvm:
4
- - 1.8.7
5
4
  - 1.9.2
6
5
  - 1.9.3
7
6
  - rbx-18mode
8
- - ree
9
7
  notifications:
10
8
  recipients:
11
9
  - nesquena@gmail.com
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.6.5
4
+
5
+ * Fixed issue with multi_json version use ~> 1.0 (Thanks @sferik)
6
+
7
+ ## 0.6.4
8
+
9
+ * Further improvements to template path resolution for Rails (Thanks @radar)
10
+ * Change multi_json to be > 1.1.0 to support 1.2.0 with Oj support (Thanks @jherdman)
11
+
3
12
  ## 0.6.3
4
13
 
5
14
  * Adds Rails 3.2 Integration Test
data/Gemfile CHANGED
@@ -15,7 +15,5 @@ group :test do
15
15
  gem 'rack-test', :require => "rack/test"
16
16
  gem 'activerecord', :require => "active_record"
17
17
  gem 'sqlite3'
18
- gem 'padrino', '>= 0.10.2'
19
18
  gem 'sinatra', '>= 1.2.0'
20
- gem 'rails', '>= 2.3.0'
21
19
  end
data/README.md CHANGED
@@ -78,12 +78,12 @@ node(:read) { |post| post.read_by?(@user) }
78
78
 
79
79
  Which would output the following JSON or XML when visiting `http://localhost:3000/posts.json`
80
80
 
81
- ```json
82
- [{ post :
81
+ ```js
82
+ [{ "post" :
83
83
  {
84
- id : 5, title: "...", subject: "...",
85
- user : { full_name : "..." },
86
- read : true
84
+ "id" : 5, title: "...", subject: "...",
85
+ "user" : { full_name : "..." },
86
+ "read" : true
87
87
  }
88
88
  }]
89
89
  ```
@@ -463,7 +463,7 @@ Note that RABL can be nested arbitrarily deep within child nodes to allow for th
463
463
  ### Caching ###
464
464
 
465
465
  Caching works by saving the entire template output to the configured cache_store in your application. Note that caching is currently **only available** for
466
- Rails but support for other frameworks is planned in a future release.
466
+ Rails but support for other frameworks is planned in a future release.
467
467
 
468
468
  For Rails, requires `action_controller.perform_caching` to be set to true in your environment, and for `cache` to be set to a key (object that responds to cache_key method, array or string).
469
469
 
@@ -568,8 +568,7 @@ See the [examples](https://github.com/nesquena/rabl/tree/master/examples) direct
568
568
 
569
569
  Check out the [Issues](https://github.com/nesquena/rabl/issues) tab for a full list:
570
570
 
571
- * Better Tilt template support (precompiling templates)
572
- * Benchmarks and performance optimizations
571
+ * Rigorous benchmarking and performance optimizations
573
572
 
574
573
  ## Continuous Integration ##
575
574
 
@@ -595,6 +594,7 @@ Thanks to [Miso](http://gomiso.com) for allowing me to create this for our appli
595
594
  * [Andrey Voronkov](https://github.com/Antiarchitect) - Added BSON format support
596
595
  * [Alli Witheford](https://github.com/alzeih) - Added Plist format support
597
596
  * [David Sommers](https://github.com/databyte) - Added template caching support for Rails
597
+ * [Ryan Bigg](https://github.com/radar) - Improved template resolution code
598
598
 
599
599
  and many more contributors listed in the [CHANGELOG](https://github.com/nesquena/rabl/blob/master/CHANGELOG.md).
600
600
 
data/Rakefile CHANGED
@@ -12,9 +12,24 @@ Rake::TestTask.new(:test) do |test|
12
12
  test.ruby_opts = ['-rubygems']
13
13
  end
14
14
 
15
- desc "Prepares the fixtures for being tested by installing dependencies"
15
+ # Running integration tests
16
+ # rake test:clean
17
+ # rake test:stup
18
+ # rake test:full
19
+
20
+ fixture_list = "{padrino_test,sinatra_test,rails2,rails3,rails3_2}"
21
+
22
+ desc "Clean up the fixtures being tested by cleaning and installing dependencies"
23
+ task "test:clean" do
24
+ Dir[File.dirname(__FILE__) + "/fixtures/#{fixture_list}"].each do |fixture|
25
+ puts "\n*** Cleaning up for #{File.basename(fixture)} tests ***\n"
26
+ puts `cd #{fixture}; rm Gemfile.lock`
27
+ end
28
+ end
29
+
30
+ desc "Prepares the fixtures being tested by installing dependencies"
16
31
  task "test:setup" do
17
- Dir[File.dirname(__FILE__) + "/fixtures/{padrino_test,sinatra_test,rails2,rails3,rails3_2}"].each do |fixture|
32
+ Dir[File.dirname(__FILE__) + "/fixtures/#{fixture_list}"].each do |fixture|
18
33
  puts "\n*** Setting up for #{File.basename(fixture)} tests ***\n"
19
34
  `export BUNDLE_GEMFILE=#{fixture}/Gemfile` if ENV['TRAVIS']
20
35
  puts `cd #{fixture}; bundle install;`
@@ -23,7 +38,7 @@ end
23
38
 
24
39
  desc "Executes the fixture tests"
25
40
  task "test:fixtures" do
26
- Dir[File.dirname(__FILE__) + "/fixtures/{padrino_test,sinatra_test,rails2,rails3,rails3_2}"].each do |fixture|
41
+ Dir[File.dirname(__FILE__) + "/fixtures/#{fixture_list}"].each do |fixture|
27
42
  puts "\n*** Running tests for #{File.basename(fixture)}... ***\n"
28
43
  puts `cd #{fixture}; bundle check; bundle exec rake test:rabl`
29
44
  end
data/lib/rabl/partials.rb CHANGED
@@ -23,7 +23,7 @@ module Rabl
23
23
  def object_to_hash(object, options={}, &block)
24
24
  return object unless is_object?(object) || is_collection?(object)
25
25
  return [] if is_collection?(object) && object.blank? # empty collection
26
- engine_options = options.merge(:format => "hash", :root => (options[:root] || false))
26
+ engine_options = options.reverse_merge(:format => "hash", :root => (options[:root] || false))
27
27
  Rabl::Engine.new(options[:source], engine_options).render(@_scope, :object => object, &block)
28
28
  end
29
29
 
@@ -31,35 +31,65 @@ module Rabl
31
31
  # fetch_source("show", :view_path => "...") => "...contents..."
32
32
  def fetch_source(file, options={})
33
33
  Rabl.source_cache(file, options[:view_path]) do
34
- if defined? Padrino
35
- view_path = Array(options[:view_path] || context_scope.settings.views)
36
- # use Padrino's own template resolution mechanism
37
- file_path, _ = context_scope.instance_eval { resolve_template(file) }
38
- # Padrino chops the extension, stitch it back on
39
- file_path = File.join(view_path.first.to_s, (file_path.to_s + ".rabl"))
34
+ file_path = if defined? Padrino
35
+ fetch_padrino_source(file, options)
40
36
  elsif defined?(Rails) && context_scope
41
- # use Rails template resolution mechanism if possible (find_template)
42
- source_format = request_format if defined?(request_format)
43
- view_path = Array(options[:view_path] || context_scope.view_paths.to_a)
44
- if source_format && context_scope.respond_to?(:lookup_context) # Rails 3
45
- lookup_proc = lambda { |partial| context_scope.lookup_context.find_template(file, [], partial) }
46
- template = lookup_proc.call(false) rescue lookup_proc.call(true)
47
- file_path = template.identifier if template
48
- elsif source_format && context_scope.respond_to?(:view_paths) # Rails 2
49
- template = context_scope.view_paths.find_template(file, source_format, false)
50
- file_path = template.filename if template
51
- else # fallback to manual
52
- file_path = Dir[File.join("{#{view_path.join(",")}}", file + ".{*.,}rabl")].first
53
- end
37
+ fetch_rails_source(file, options)
54
38
  elsif defined? Sinatra
55
- view_path = Array(options[:view_path] || context_scope.settings.views)
56
- file_path = Dir[File.join("{#{view_path.join(",")}}", file + ".{*.,}rabl")].first
39
+ fetch_sinatra_source(file, options)
57
40
  end
58
41
 
59
- raise "Cannot find rabl template '#{file}' within registered views!" unless File.exist?(file_path.to_s)
42
+ raise "Cannot find rabl template '#{file}' within registered view paths!" unless File.exist?(file_path.to_s)
60
43
  [File.read(file_path.to_s), file_path.to_s] if file_path
61
44
  end
62
45
  end
63
46
 
47
+ private
48
+
49
+ # Returns the rabl template path for padrino views using configured views
50
+ def fetch_padrino_source(file, options={})
51
+ view_path = Array(options[:view_path] || context_scope.settings.views)
52
+ # use Padrino's own template resolution mechanism
53
+ file_path, _ = context_scope.instance_eval { resolve_template(file) }
54
+ # Padrino chops the extension, stitch it back on
55
+ File.join(view_path.first.to_s, (file_path.to_s + ".rabl"))
56
+ end
57
+
58
+ # Returns the rabl template path for Rails, including special lookups for Rails 2 and 3
59
+ def fetch_rails_source(file, options={})
60
+ # use Rails template resolution mechanism if possible (find_template)
61
+ source_format = request_format if defined?(request_format)
62
+ view_path = Array(options[:view_path] || context_scope.view_paths.to_a)
63
+ if source_format && context_scope.respond_to?(:lookup_context) # Rails 3
64
+ lookup_proc = lambda { |partial| context_scope.lookup_context.find_template(file, [], partial) }
65
+ template = lookup_proc.call(false) rescue lookup_proc.call(true)
66
+ template.identifier if template
67
+ elsif source_format && context_scope.respond_to?(:view_paths) # Rails 2
68
+ template = context_scope.view_paths.find_template(file, source_format, false)
69
+ template.filename if template
70
+ else # manual file lookup
71
+ fetch_manual_template(view_path, file)
72
+ end
73
+ end
74
+
75
+ # Returns the rabl template path for sinatra views using configured views
76
+ def fetch_sinatra_source(file, options={})
77
+ view_path = Array(options[:view_path] || context_scope.settings.views)
78
+ fetch_manual_template(view_path, file)
79
+ end
80
+
81
+ # Returns the rabl template by looking up files within the view_path and specified file path
82
+ def fetch_manual_template(view_path, file)
83
+ Dir[File.join("{#{view_path.join(",")}}", "{#{file},#{partialized(file)}}" + ".{*.,}rabl")].first
84
+ end
85
+
86
+ # Returns a partialized version of a file path
87
+ # partialized("v1/variants/variant") => "v1/variants/_variant"
88
+ def partialized(file)
89
+ partial_file = file.split(File::SEPARATOR)
90
+ partial_file[-1] = "_#{partial_file[-1]}" unless partial_file[-1].start_with?("_")
91
+ partial_file.join(File::SEPARATOR)
92
+ end
93
+
64
94
  end # Partials
65
- end # Rabl
95
+ end # Rabl
data/lib/rabl/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rabl
2
- VERSION = "0.6.3"
2
+ VERSION = "0.6.5"
3
3
  end
data/rabl.gemspec CHANGED
@@ -19,8 +19,8 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_dependency 'multi_json', '~> 1.1.0'
23
22
  s.add_dependency 'activesupport', '>= 2.3.14'
23
+ s.add_dependency 'multi_json', '~> 1.0'
24
24
 
25
25
  s.add_development_dependency 'riot', '~> 0.12.3'
26
26
  s.add_development_dependency 'rr', '~> 1.0.2'
data/test/engine_test.rb CHANGED
@@ -33,13 +33,13 @@ context "Rabl::Engine" do
33
33
  context "with cache and options" do
34
34
  setup do
35
35
  template = rabl %q{
36
- cache 'foo', expires_in: 'bar'
36
+ cache 'foo', :expires_in => 'bar'
37
37
  }
38
38
  template.render(Object.new)
39
39
  template.instance_eval('@engine')
40
40
  end
41
41
 
42
- asserts_topic.assigns(:_cache) { ['foo', { expires_in: 'bar' }] }
42
+ asserts_topic.assigns(:_cache) { ['foo', { :expires_in => 'bar' }] }
43
43
  end
44
44
 
45
45
  context "without cache" do
@@ -32,8 +32,8 @@ context "Rabl::Engine" do
32
32
  }
33
33
  scope = Object.new
34
34
  scope.instance_variable_set :@user, User.new
35
- template.render(scope)
36
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>person</key>\n\t<dict/>\n</dict>\n</plist>\n"
35
+ template.render(scope).split("").sort
36
+ end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>person</key>\n\t<dict/>\n</dict>\n</plist>\n".split("").sort
37
37
  end
38
38
 
39
39
  context "#collection" do
@@ -44,8 +44,8 @@ context "Rabl::Engine" do
44
44
  }
45
45
  scope = Object.new
46
46
  scope.instance_variable_set :@users, [User.new, User.new]
47
- template.render(scope)
48
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<array>\n\t<dict>\n\t\t<key>user</key>\n\t\t<dict/>\n\t</dict>\n\t<dict>\n\t\t<key>user</key>\n\t\t<dict/>\n\t</dict>\n</array>\n</plist>\n"
47
+ template.render(scope).split("").sort
48
+ end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<array>\n\t<dict>\n\t\t<key>user</key>\n\t\t<dict/>\n\t</dict>\n\t<dict>\n\t\t<key>user</key>\n\t\t<dict/>\n\t</dict>\n</array>\n</plist>\n".split("").sort
49
49
 
50
50
  asserts "that it sets root node for objects" do
51
51
  template = rabl %{
@@ -53,8 +53,8 @@ context "Rabl::Engine" do
53
53
  }
54
54
  scope = Object.new
55
55
  scope.instance_variable_set :@users, [User.new, User.new]
56
- template.render(scope)
57
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>person</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>person</key>\n\t\t\t<dict/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>person</key>\n\t\t\t<dict/>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n"
56
+ template.render(scope).split("").sort
57
+ end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>person</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>person</key>\n\t\t\t<dict/>\n\t\t</dict>\n\t\t<dict>\n\t\t\t<key>person</key>\n\t\t\t<dict/>\n\t\t</dict>\n\t</array>\n</dict>\n</plist>\n".split("").sort
58
58
 
59
59
  end
60
60
 
@@ -67,8 +67,8 @@ context "Rabl::Engine" do
67
67
  }
68
68
  scope = Object.new
69
69
  scope.instance_variable_set :@user, User.new(:name => 'irvine')
70
- template.render(scope)
71
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>user</key>\n\t<dict>\n\t\t<key>name</key>\n\t\t<string>irvine</string>\n\t</dict>\n</dict>\n</plist>\n"
70
+ template.render(scope).split("").sort
71
+ end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>user</key>\n\t<dict>\n\t\t<key>name</key>\n\t\t<string>irvine</string>\n\t</dict>\n</dict>\n</plist>\n".split("").sort
72
72
 
73
73
  asserts "that it can add attribute under a different key name through :as" do
74
74
  template = rabl %{
@@ -77,8 +77,8 @@ context "Rabl::Engine" do
77
77
  }
78
78
  scope = Object.new
79
79
  scope.instance_variable_set :@user, User.new(:name => 'irvine')
80
- template.render(scope)
81
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>user</key>\n\t<dict>\n\t\t<key>city</key>\n\t\t<string>irvine</string>\n\t</dict>\n</dict>\n</plist>\n"
80
+ template.render(scope).split("").sort
81
+ end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>user</key>\n\t<dict>\n\t\t<key>city</key>\n\t\t<string>irvine</string>\n\t</dict>\n</dict>\n</plist>\n".split("").sort
82
82
 
83
83
  asserts "that it can add attribute under a different key name through hash" do
84
84
  template = rabl %{
@@ -87,8 +87,8 @@ context "Rabl::Engine" do
87
87
  }
88
88
  scope = Object.new
89
89
  scope.instance_variable_set :@user, User.new(:name => 'irvine')
90
- template.render(scope)
91
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>user</key>\n\t<dict>\n\t\t<key>city</key>\n\t\t<string>irvine</string>\n\t</dict>\n</dict>\n</plist>\n"
90
+ template.render(scope).split("").sort
91
+ end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>user</key>\n\t<dict>\n\t\t<key>city</key>\n\t\t<string>irvine</string>\n\t</dict>\n</dict>\n</plist>\n".split("").sort
92
92
 
93
93
  end
94
94
 
@@ -98,15 +98,15 @@ context "Rabl::Engine" do
98
98
  template = rabl %{
99
99
  code(:foo) { 'bar' }
100
100
  }
101
- template.render(Object.new)
102
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>foo</key>\n\t<string>bar</string>\n</dict>\n</plist>\n"
101
+ template.render(Object.new).split("").sort
102
+ end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>foo</key>\n\t<string>bar</string>\n</dict>\n</plist>\n".split("").sort
103
103
 
104
104
  asserts "that it can be passed conditionals" do
105
105
  template = rabl %{
106
106
  code(:foo, :if => lambda { |i| false }) { 'bar' }
107
107
  }
108
- template.render(Object.new)
109
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict/>\n</plist>\n"
108
+ template.render(Object.new).split("").sort
109
+ end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict/>\n</plist>\n".split("").sort
110
110
 
111
111
  end
112
112
 
@@ -120,8 +120,8 @@ context "Rabl::Engine" do
120
120
  }
121
121
  scope = Object.new
122
122
  scope.instance_variable_set :@user, User.new(:name => 'leo', :city => 'LA')
123
- template.render(scope)
124
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>user</key>\n\t<dict>\n\t\t<key>name</key>\n\t\t<string>leo</string>\n\t\t<key>user</key>\n\t\t<dict>\n\t\t\t<key>city</key>\n\t\t\t<string>LA</string>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
123
+ template.render(scope).split("").sort
124
+ end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>user</key>\n\t<dict>\n\t\t<key>name</key>\n\t\t<string>leo</string>\n\t\t<key>user</key>\n\t\t<dict>\n\t\t\t<key>city</key>\n\t\t\t<string>LA</string>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n".split("").sort
125
125
 
126
126
  asserts "that it can create a child node with different key" do
127
127
  template = rabl %{
@@ -269,7 +269,7 @@ context "Rabl::Engine" do
269
269
 
270
270
  context "#code" do
271
271
 
272
- asserts "that it can create an arbitraty code node" do
272
+ asserts "that it can create an arbitrary code node" do
273
273
  template = rabl %{
274
274
  code(:foo) { 'bar' }
275
275
  }
@@ -295,8 +295,8 @@ context "Rabl::Engine" do
295
295
  }
296
296
  scope = Object.new
297
297
  scope.instance_variable_set :@user, User.new(:name => 'leo', :city => 'LA')
298
- template.render(scope)
299
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>name</key>\n\t<string>leo</string>\n\t<key>user</key>\n\t<dict>\n\t\t<key>city</key>\n\t\t<string>LA</string>\n\t</dict>\n</dict>\n</plist>\n"
298
+ template.render(scope).split("").sort
299
+ end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>name</key>\n\t<string>leo</string>\n\t<key>user</key>\n\t<dict>\n\t\t<key>city</key>\n\t\t<string>LA</string>\n\t</dict>\n</dict>\n</plist>\n".split("").sort
300
300
 
301
301
  asserts "that it can create a child node with different key" do
302
302
  template = rabl %{
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rabl
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.6.3
5
+ version: 0.6.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Nathan Esquenazi
@@ -10,28 +10,28 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-03-27 00:00:00 Z
13
+ date: 2012-03-28 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: multi_json
16
+ name: activesupport
17
17
  prerelease: false
18
18
  requirement: &id001 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
- - - ~>
21
+ - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 1.1.0
23
+ version: 2.3.14
24
24
  type: :runtime
25
25
  version_requirements: *id001
26
26
  - !ruby/object:Gem::Dependency
27
- name: activesupport
27
+ name: multi_json
28
28
  prerelease: false
29
29
  requirement: &id002 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
- - - ">="
32
+ - - ~>
33
33
  - !ruby/object:Gem::Version
34
- version: 2.3.14
34
+ version: "1.0"
35
35
  type: :runtime
36
36
  version_requirements: *id002
37
37
  - !ruby/object:Gem::Dependency