jbuilder 2.2.12 → 2.2.13

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: e20ebff9d84c8c417da4626184d5c0360d96039c
4
- data.tar.gz: 73e44d30685bdd6db5655c8cd3c6c6e5087f21e6
3
+ metadata.gz: 332d9c49a287b19d5b1afb7c64af39cbda9ccfc4
4
+ data.tar.gz: 332ccfb496127ea17c8f3def19a2fb28c2c8c17e
5
5
  SHA512:
6
- metadata.gz: 4447541e8d14944f440ff55d1bdc88a2b64a14aadcf43de76aaa1ae308e430ceadb25e9bd60707963655ef407b9b27b5f6eaa298bc5b800e6392736cee3d3847
7
- data.tar.gz: 87ec45135f3d1fb89f20cc51b51e9f62cf69b270af5ef55fe52e5706aac70da2799b4f5b71e584816e74a2727703a6471e3370e4589e81a79599727caa01db66
6
+ metadata.gz: 149866f11d9ae0814d83a40faa89380149516a50fef38829274092323b7ad74a5d2c05bce5443d8cb7a289e02b1307dd8b547530369d1127e338eadf3dbbcc9d
7
+ data.tar.gz: 3a6ce99d14c7ed4b67d29c0c6a1e840ef44074796ff3052de2e7148d31aa40ae106cbca923fb6b6f382cbb1cee41d36dba7bf048cd581eaa1e2bd9f1faad4c2a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ 2.2.13
4
+ ------
5
+
6
+ * Several peformance optimizations: [#260](https://github.com/rails/jbuilder/pull/260) & [#261](https://github.com/rails/jbuilder/pull/261)
7
+
3
8
  2.2.12
4
9
  ------
5
10
 
data/jbuilder.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'jbuilder'
3
- s.version = '2.2.12'
3
+ s.version = '2.2.13'
4
4
  s.authors = ['David Heinemeier Hansson', 'Pavel Pravosud']
5
5
  s.email = ['david@37signals.com', 'pavel@pravosud.com']
6
6
  s.summary = 'Create JSON structures via a Builder-style DSL'
data/lib/jbuilder.rb CHANGED
@@ -5,13 +5,13 @@ require 'jbuilder/errors'
5
5
  require 'multi_json'
6
6
 
7
7
  class Jbuilder
8
- @@key_formatter = KeyFormatter.new
8
+ @@key_formatter = nil
9
9
  @@ignore_nil = false
10
10
 
11
11
  def initialize(options = {})
12
12
  @attributes = {}
13
13
 
14
- @key_formatter = options.fetch(:key_formatter){ @@key_formatter.clone }
14
+ @key_formatter = options.fetch(:key_formatter){ @@key_formatter ? @@key_formatter.clone : nil}
15
15
  @ignore_nil = options.fetch(:ignore_nil, @@ignore_nil)
16
16
 
17
17
  yield self if ::Kernel.block_given?
@@ -207,9 +207,9 @@ class Jbuilder
207
207
  # json.(@person, :name, :age)
208
208
  def extract!(object, *attributes)
209
209
  if ::Hash === object
210
- _extract_hash_values(object, *attributes)
210
+ _extract_hash_values(object, attributes)
211
211
  else
212
- _extract_method_values(object, *attributes)
212
+ _extract_method_values(object, attributes)
213
213
  end
214
214
  end
215
215
 
@@ -245,11 +245,11 @@ class Jbuilder
245
245
 
246
246
  private
247
247
 
248
- def _extract_hash_values(object, *attributes)
248
+ def _extract_hash_values(object, attributes)
249
249
  attributes.each{ |key| _set_value key, object.fetch(key) }
250
250
  end
251
251
 
252
- def _extract_method_values(object, *attributes)
252
+ def _extract_method_values(object, attributes)
253
253
  attributes.each{ |key| _set_value key, object.public_send(key) }
254
254
  end
255
255
 
@@ -275,7 +275,7 @@ class Jbuilder
275
275
  end
276
276
 
277
277
  def _key(key)
278
- @key_formatter.format(key)
278
+ @key_formatter ? @key_formatter.format(key) : key.to_s
279
279
  end
280
280
 
281
281
  def _set_value(key, value)
@@ -51,6 +51,10 @@ end
51
51
 
52
52
 
53
53
  class JbuilderTest < ActiveSupport::TestCase
54
+ setup do
55
+ Jbuilder.send :class_variable_set, '@@key_formatter', Jbuilder::KeyFormatter.new
56
+ end
57
+
54
58
  test 'single key' do
55
59
  result = jbuild do |json|
56
60
  json.content 'hello'
@@ -564,12 +568,12 @@ class JbuilderTest < ActiveSupport::TestCase
564
568
  Jbuilder.key_format camelize: :lower
565
569
  result = jbuild{ |json| json.camel_style 'for JS' }
566
570
  assert_equal ['camelStyle'], result.keys
567
- Jbuilder.send :class_variable_set, '@@key_formatter', Jbuilder::KeyFormatter.new
568
571
  end
569
572
 
570
573
  test 'do not use default key formatter directly' do
571
574
  jbuild{ |json| json.key 'value' }
572
- cache = Jbuilder.send(:class_variable_get, '@@key_formatter').instance_variable_get('@cache')
575
+ formatter = Jbuilder.send(:class_variable_get, '@@key_formatter')
576
+ cache = formatter.instance_variable_get('@cache')
573
577
  assert_empty cache
574
578
  end
575
579
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jbuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.12
4
+ version: 2.2.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-20 00:00:00.000000000 Z
12
+ date: 2015-04-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  requirements: []
109
109
  rubyforge_project:
110
- rubygems_version: 2.4.5
110
+ rubygems_version: 2.4.6
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Create JSON structures via a Builder-style DSL