to_jbuilder 0.1.0 → 0.1.1

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: 8fea4b1d3823b9fbf79d2089bcbeec4a26b282bd
4
- data.tar.gz: 76c6f2cab9f79c056cf8252f2c5abba914f451b6
3
+ metadata.gz: ce7616e8edda34f464c51c17657556493d58ecb2
4
+ data.tar.gz: 46d50ed8ae4ec0876d0d099246e83468a51602c8
5
5
  SHA512:
6
- metadata.gz: b476579a67244808eb995e706398825d0f2ade2bb10c033afefc6bbadc1a361f07c7f70d609b7ba2f78a8705366e4e914edc808a86de1c9812599eaa68dcf6fd
7
- data.tar.gz: c334307a7ceeb1c672225be66194d0447f2118a63111e02998c1c7712d7b45372d7919bf6f304d7e449e6e117f98d55b2d994f1223b2bb660dc8d0123f63b8ca
6
+ metadata.gz: 690ae50f4c3fd36b0c24867e1a0c879f003c9113ea7a4fe7e31b9d64b269c5999b184b3ac9900d0269f90fb312ecdb46e756b10580eac4b571850bf525f4ff9f
7
+ data.tar.gz: ceaacc4d03008d66279230e3f9880d38f5098076ffe1c97c53069256b31b5e513266d0a21eaa6d25e0b438dbe929bb23f18fed9025dec7b66c03fd54872fc065
@@ -43,13 +43,15 @@ module ToJbuilder
43
43
  end
44
44
  end
45
45
 
46
- class Nesting < Struct.new(:name, :type)
46
+ class Nesting < Struct.new(:name, :type, :sequence_processed)
47
+ def sequence_processed?
48
+ !! sequence_processed
49
+ end
47
50
  end
48
51
 
49
52
  def initialize(io, resource_name)
50
53
  @io, @resource_name = io, resource_name
51
54
 
52
- @sequence_processed = false
53
55
  @jbuilder_array = nil
54
56
  @jbuilder_lines = []
55
57
  @nesting = [Nesting.new(@resource_name, :root)]
@@ -78,11 +80,11 @@ module ToJbuilder
78
80
  when ARRAY_START
79
81
  flush!
80
82
 
81
- @io.write "\n" if @trace[-3] != ARRAY_END
82
- @io.write @jbuilder_array.to_jbuilder
83
+ unless @nesting.last.sequence_processed?
84
+ @io.write "\n" if @trace[-3] != ARRAY_END && @trace[-3] != HASH_START
85
+ @io.write @jbuilder_array.to_jbuilder
86
+ end
83
87
  when PAIR_KEY
84
- return if @sequence_processed
85
-
86
88
  line = @jbuilder_lines.pop
87
89
  flush!
88
90
  line.line_break = true if @trace[-2] != HASH_START
@@ -95,7 +97,7 @@ module ToJbuilder
95
97
 
96
98
  def end_mapping
97
99
  flush!
98
- @sequence_processed = true if within_array? && !@sequence_processed
100
+ @nesting.last.sequence_processed = true if within_array? && !@nesting.last.sequence_processed?
99
101
 
100
102
  if @nesting.size > 1 && !within_array?
101
103
  @nesting.pop
@@ -116,26 +118,28 @@ module ToJbuilder
116
118
  @jbuilder_array = JbuilderArray.new(nil, @nesting.last.name)
117
119
  end
118
120
 
119
- @nesting.push Nesting.new((@jbuilder_array.line || @jbuilder_array).key.singularize, ARRAY_START)
121
+ @nesting.push Nesting.new((@jbuilder_array.line || @jbuilder_array).key.singularize, ARRAY_START, @nesting.last.sequence_processed)
120
122
  @trace << ARRAY_START
121
123
  end
122
124
 
123
125
  def end_sequence
124
126
  case @trace.last
127
+ when ARRAY_START
128
+ @nesting.pop
129
+ @jbuilder_lines << @jbuilder_array.line unless @nesting.last.sequence_processed?
125
130
  when PAIR_VALUE
126
131
  @nesting.pop
127
132
  @jbuilder_lines << @jbuilder_array.line
128
133
  when HASH_END
129
134
  @nesting.pop
130
- @io.write "#{indent}end\n"
135
+ @io.write "#{indent}end\n" unless @nesting.last.sequence_processed?
131
136
  end
132
137
 
133
- @sequence_processed = false
134
138
  @trace << ARRAY_END
135
139
  end
136
140
 
137
141
  def scalar(value, anchor, tag, plain, quoted, style)
138
- return if @sequence_processed
142
+ return if @nesting.last.sequence_processed?
139
143
 
140
144
  case @trace.last
141
145
  when DOCUMENT_START, HASH_START, HASH_END, ARRAY_END, PAIR_VALUE
@@ -145,7 +149,7 @@ module ToJbuilder
145
149
  @jbuilder_lines << JbuilderLine.new(@nesting.last.name, value, nil, prefix, indent, line_break)
146
150
  @trace << PAIR_KEY
147
151
  when ARRAY_START
148
- @sequence_processed = true
152
+ @nesting.last.sequence_processed = true
149
153
 
150
154
  @trace << PAIR_VALUE
151
155
  when PAIR_KEY
@@ -1,3 +1,3 @@
1
1
  module ToJbuilder
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: to_jbuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuki Nishijima
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-04-26 00:00:00.000000000 Z
11
+ date: 2015-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -98,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
98
  version: '0'
99
99
  requirements: []
100
100
  rubyforge_project:
101
- rubygems_version: 2.4.6
101
+ rubygems_version: 2.4.7
102
102
  signing_key:
103
103
  specification_version: 4
104
104
  summary: Convert JSON to jbuilder templates