cornucopia 0.1.49 → 0.1.50

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: a36c9fc3e3de51328834235d1832c44c078b5c26
4
- data.tar.gz: c1e378cde43452e8cc82be9dec1776e7d5e88415
3
+ metadata.gz: 7462c271c128c488e2b7678c71196f50c0217a42
4
+ data.tar.gz: 8e5fdc17a806ccb163cbe85ab12bd8258fc11300
5
5
  SHA512:
6
- metadata.gz: 399af987ba5bbd8bbc5638624b85115ccfe52e40abc4c7987ba398077d0f25816e4293aa5720e06fdcc1dbe029692edbbb81f2a54fb45a3a8d3b9d0578aa6c89
7
- data.tar.gz: 10d6382357ce759ed1266fc669ad98958b744e9a9960a806f118c507ed491831b8c1343eb995eeff30cadaa50e0df62a1540edbf17af4be106bef63ecb5e5357
6
+ metadata.gz: 4b93a7e57f64c87e647c64ed76e23535b8ead4a609e789c380218e356089cfb1aeac47fcc7f297d0386a18eff29cca1286f96556f5a55ae5a0c127f1c690170c
7
+ data.tar.gz: c0861b302f07518b241277ebb89ae0db9d35c92a91df7309e2ca58ce8428ff16665dcb57f024c0dc671ee3e215c29784ea5a236e7ab716d1da76c3c7128c216f
@@ -34,6 +34,8 @@ module Cornucopia
34
34
  end
35
35
 
36
36
  if do_pretty_print
37
+ @loop_pos = [-1, -1]
38
+ @loop_count = [0, 0]
37
39
  @indent_level = 0
38
40
  @current_state = :unknown
39
41
  @state_stack = [:unknown]
@@ -43,6 +45,8 @@ module Cornucopia
43
45
  @formatted_string = "".dup
44
46
 
45
47
  while @current_pos < @unknown_string_len
48
+ break if in_infinite_loop?
49
+
46
50
  case @current_state
47
51
  when :unknown
48
52
  search_pos = @current_pos
@@ -173,6 +177,9 @@ module Cornucopia
173
177
 
174
178
  when :array
175
179
  group_value_end :array_comma, "]"
180
+
181
+ when :group_implied
182
+ @current_pos += 1
176
183
  end
177
184
 
178
185
  @current_pos -= 1
@@ -577,6 +584,22 @@ module Cornucopia
577
584
  end
578
585
  end
579
586
  end
587
+
588
+ private
589
+
590
+ def in_infinite_loop?
591
+ @loop_count[0] += 1
592
+ @loop_count[1] += 1
593
+ @loop_count[0] = 0 if @loop_pos[0] != @current_pos
594
+ @loop_count[1] = 0 if @loop_pos[1] != @start_pos
595
+ @loop_pos[0] = @current_pos
596
+ @loop_pos[1] = @start_pos
597
+
598
+ return false if @loop_count[0] < @unknown_string_len && @loop_count[1] < @unknown_string_len
599
+
600
+ @formatted_string += @unknown_string[@start_pos..-1]
601
+ true
602
+ end
580
603
  end
581
604
  end
582
605
  end
@@ -1,3 +1,3 @@
1
1
  module Cornucopia
2
- VERSION = "0.1.49"
2
+ VERSION = "0.1.50"
3
3
  end
@@ -65,6 +65,12 @@ describe Cornucopia::Util::PrettyFormatter do
65
65
  end
66
66
  end
67
67
 
68
+ it "formats a string" do
69
+ pretty = Cornucopia::Util::PrettyFormatter.format_string("#&lt;MetaDataOwnerTestModel _id: 5a3ea06e402cfe50bca1fc6b, &gt;\n".html_safe)
70
+
71
+ expect(pretty).to eq "#&lt;MetaDataOwnerTestModel\n _id: 5a3ea06e402cfe50bca1fc6b,\n&gt;"
72
+ end
73
+
68
74
  it "formats a simple class" do
69
75
  pretty = Cornucopia::Util::PrettyFormatter.format_string(simple_class)
70
76
  expect(pretty).to be == simple_class
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cornucopia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.49
4
+ version: 0.1.50
5
5
  platform: ruby
6
6
  authors:
7
7
  - RealNobody
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-22 00:00:00.000000000 Z
11
+ date: 2017-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport