mercadopago-custom-checkout 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +5 -5
  2. data/.gs/bin/rake +12 -8
  3. data/.gs/specifications/rake-10.5.0.gemspec +24 -28
  4. data/.tool-versions +1 -0
  5. data/lib/mercadopago/custom_checkout/version.rb +1 -1
  6. data/mercadopago-custom-checkout.gemspec +3 -3
  7. metadata +14 -125
  8. data/.gs/cache/faraday-0.9.2.gem +0 -0
  9. data/.gs/cache/minitest-5.9.0.gem +0 -0
  10. data/.gs/cache/multi_json-1.12.1.gem +0 -0
  11. data/.gs/cache/multipart-post-2.0.0.gem +0 -0
  12. data/.gs/gems/faraday-0.9.2/LICENSE.md +0 -20
  13. data/.gs/gems/faraday-0.9.2/README.md +0 -245
  14. data/.gs/gems/faraday-0.9.2/lib/faraday/adapter/em_http.rb +0 -237
  15. data/.gs/gems/faraday-0.9.2/lib/faraday/adapter/em_http_ssl_patch.rb +0 -56
  16. data/.gs/gems/faraday-0.9.2/lib/faraday/adapter/em_synchrony/parallel_manager.rb +0 -66
  17. data/.gs/gems/faraday-0.9.2/lib/faraday/adapter/em_synchrony.rb +0 -100
  18. data/.gs/gems/faraday-0.9.2/lib/faraday/adapter/excon.rb +0 -81
  19. data/.gs/gems/faraday-0.9.2/lib/faraday/adapter/httpclient.rb +0 -117
  20. data/.gs/gems/faraday-0.9.2/lib/faraday/adapter/net_http.rb +0 -130
  21. data/.gs/gems/faraday-0.9.2/lib/faraday/adapter/net_http_persistent.rb +0 -49
  22. data/.gs/gems/faraday-0.9.2/lib/faraday/adapter/patron.rb +0 -78
  23. data/.gs/gems/faraday-0.9.2/lib/faraday/adapter/rack.rb +0 -58
  24. data/.gs/gems/faraday-0.9.2/lib/faraday/adapter/test.rb +0 -162
  25. data/.gs/gems/faraday-0.9.2/lib/faraday/adapter/typhoeus.rb +0 -123
  26. data/.gs/gems/faraday-0.9.2/lib/faraday/adapter.rb +0 -46
  27. data/.gs/gems/faraday-0.9.2/lib/faraday/autoload.rb +0 -84
  28. data/.gs/gems/faraday-0.9.2/lib/faraday/connection.rb +0 -437
  29. data/.gs/gems/faraday-0.9.2/lib/faraday/error.rb +0 -53
  30. data/.gs/gems/faraday-0.9.2/lib/faraday/middleware.rb +0 -37
  31. data/.gs/gems/faraday-0.9.2/lib/faraday/options.rb +0 -359
  32. data/.gs/gems/faraday-0.9.2/lib/faraday/parameters.rb +0 -197
  33. data/.gs/gems/faraday-0.9.2/lib/faraday/rack_builder.rb +0 -213
  34. data/.gs/gems/faraday-0.9.2/lib/faraday/request/authorization.rb +0 -42
  35. data/.gs/gems/faraday-0.9.2/lib/faraday/request/basic_authentication.rb +0 -13
  36. data/.gs/gems/faraday-0.9.2/lib/faraday/request/instrumentation.rb +0 -36
  37. data/.gs/gems/faraday-0.9.2/lib/faraday/request/multipart.rb +0 -63
  38. data/.gs/gems/faraday-0.9.2/lib/faraday/request/retry.rb +0 -154
  39. data/.gs/gems/faraday-0.9.2/lib/faraday/request/token_authentication.rb +0 -15
  40. data/.gs/gems/faraday-0.9.2/lib/faraday/request/url_encoded.rb +0 -36
  41. data/.gs/gems/faraday-0.9.2/lib/faraday/request.rb +0 -92
  42. data/.gs/gems/faraday-0.9.2/lib/faraday/response/logger.rb +0 -59
  43. data/.gs/gems/faraday-0.9.2/lib/faraday/response/raise_error.rb +0 -21
  44. data/.gs/gems/faraday-0.9.2/lib/faraday/response.rb +0 -93
  45. data/.gs/gems/faraday-0.9.2/lib/faraday/upload_io.rb +0 -67
  46. data/.gs/gems/faraday-0.9.2/lib/faraday/utils.rb +0 -309
  47. data/.gs/gems/faraday-0.9.2/lib/faraday.rb +0 -268
  48. data/.gs/gems/minitest-5.9.0/.autotest +0 -34
  49. data/.gs/gems/minitest-5.9.0/History.rdoc +0 -1176
  50. data/.gs/gems/minitest-5.9.0/Manifest.txt +0 -26
  51. data/.gs/gems/minitest-5.9.0/README.rdoc +0 -656
  52. data/.gs/gems/minitest-5.9.0/Rakefile +0 -72
  53. data/.gs/gems/minitest-5.9.0/design_rationale.rb +0 -52
  54. data/.gs/gems/minitest-5.9.0/lib/hoe/minitest.rb +0 -26
  55. data/.gs/gems/minitest-5.9.0/lib/minitest/assertions.rb +0 -674
  56. data/.gs/gems/minitest-5.9.0/lib/minitest/autorun.rb +0 -13
  57. data/.gs/gems/minitest-5.9.0/lib/minitest/benchmark.rb +0 -424
  58. data/.gs/gems/minitest-5.9.0/lib/minitest/expectations.rb +0 -284
  59. data/.gs/gems/minitest-5.9.0/lib/minitest/hell.rb +0 -17
  60. data/.gs/gems/minitest-5.9.0/lib/minitest/mock.rb +0 -232
  61. data/.gs/gems/minitest-5.9.0/lib/minitest/parallel.rb +0 -69
  62. data/.gs/gems/minitest-5.9.0/lib/minitest/pride.rb +0 -4
  63. data/.gs/gems/minitest-5.9.0/lib/minitest/pride_plugin.rb +0 -142
  64. data/.gs/gems/minitest-5.9.0/lib/minitest/spec.rb +0 -331
  65. data/.gs/gems/minitest-5.9.0/lib/minitest/test.rb +0 -284
  66. data/.gs/gems/minitest-5.9.0/lib/minitest/unit.rb +0 -45
  67. data/.gs/gems/minitest-5.9.0/lib/minitest.rb +0 -815
  68. data/.gs/gems/minitest-5.9.0/test/minitest/metametameta.rb +0 -90
  69. data/.gs/gems/minitest-5.9.0/test/minitest/test_minitest_benchmark.rb +0 -137
  70. data/.gs/gems/minitest-5.9.0/test/minitest/test_minitest_mock.rb +0 -512
  71. data/.gs/gems/minitest-5.9.0/test/minitest/test_minitest_reporter.rb +0 -281
  72. data/.gs/gems/minitest-5.9.0/test/minitest/test_minitest_spec.rb +0 -967
  73. data/.gs/gems/minitest-5.9.0/test/minitest/test_minitest_test.rb +0 -1983
  74. data/.gs/gems/multi_json-1.12.1/CHANGELOG.md +0 -245
  75. data/.gs/gems/multi_json-1.12.1/CONTRIBUTING.md +0 -46
  76. data/.gs/gems/multi_json-1.12.1/LICENSE.md +0 -20
  77. data/.gs/gems/multi_json-1.12.1/README.md +0 -121
  78. data/.gs/gems/multi_json-1.12.1/lib/multi_json/adapter.rb +0 -49
  79. data/.gs/gems/multi_json-1.12.1/lib/multi_json/adapter_error.rb +0 -15
  80. data/.gs/gems/multi_json-1.12.1/lib/multi_json/adapters/gson.rb +0 -20
  81. data/.gs/gems/multi_json-1.12.1/lib/multi_json/adapters/jr_jackson.rb +0 -25
  82. data/.gs/gems/multi_json-1.12.1/lib/multi_json/adapters/json_common.rb +0 -23
  83. data/.gs/gems/multi_json-1.12.1/lib/multi_json/adapters/json_gem.rb +0 -11
  84. data/.gs/gems/multi_json-1.12.1/lib/multi_json/adapters/json_pure.rb +0 -11
  85. data/.gs/gems/multi_json-1.12.1/lib/multi_json/adapters/nsjsonserialization.rb +0 -32
  86. data/.gs/gems/multi_json-1.12.1/lib/multi_json/adapters/oj.rb +0 -25
  87. data/.gs/gems/multi_json-1.12.1/lib/multi_json/adapters/ok_json.rb +0 -23
  88. data/.gs/gems/multi_json-1.12.1/lib/multi_json/adapters/yajl.rb +0 -19
  89. data/.gs/gems/multi_json-1.12.1/lib/multi_json/convertible_hash_keys.rb +0 -43
  90. data/.gs/gems/multi_json-1.12.1/lib/multi_json/options.rb +0 -39
  91. data/.gs/gems/multi_json-1.12.1/lib/multi_json/options_cache.rb +0 -29
  92. data/.gs/gems/multi_json-1.12.1/lib/multi_json/parse_error.rb +0 -17
  93. data/.gs/gems/multi_json-1.12.1/lib/multi_json/vendor/okjson.rb +0 -606
  94. data/.gs/gems/multi_json-1.12.1/lib/multi_json/version.rb +0 -17
  95. data/.gs/gems/multi_json-1.12.1/lib/multi_json.rb +0 -161
  96. data/.gs/gems/multi_json-1.12.1/multi_json.gemspec +0 -20
  97. data/.gs/gems/multipart-post-2.0.0/.gitignore +0 -6
  98. data/.gs/gems/multipart-post-2.0.0/.travis.yml +0 -7
  99. data/.gs/gems/multipart-post-2.0.0/Gemfile +0 -14
  100. data/.gs/gems/multipart-post-2.0.0/History.txt +0 -60
  101. data/.gs/gems/multipart-post-2.0.0/Manifest.txt +0 -9
  102. data/.gs/gems/multipart-post-2.0.0/README.md +0 -77
  103. data/.gs/gems/multipart-post-2.0.0/Rakefile +0 -9
  104. data/.gs/gems/multipart-post-2.0.0/lib/composite_io.rb +0 -108
  105. data/.gs/gems/multipart-post-2.0.0/lib/multipart_post.rb +0 -9
  106. data/.gs/gems/multipart-post-2.0.0/lib/multipartable.rb +0 -29
  107. data/.gs/gems/multipart-post-2.0.0/lib/net/http/post/multipart.rb +0 -27
  108. data/.gs/gems/multipart-post-2.0.0/lib/parts.rb +0 -96
  109. data/.gs/gems/multipart-post-2.0.0/multipart-post.gemspec +0 -22
  110. data/.gs/gems/multipart-post-2.0.0/test/multibyte.txt +0 -1
  111. data/.gs/gems/multipart-post-2.0.0/test/net/http/post/test_multipart.rb +0 -110
  112. data/.gs/gems/multipart-post-2.0.0/test/test_composite_io.rb +0 -115
  113. data/.gs/gems/multipart-post-2.0.0/test/test_parts.rb +0 -86
  114. data/.gs/specifications/faraday-0.9.2.gemspec +0 -31
  115. data/.gs/specifications/minitest-5.9.0.gemspec +0 -39
  116. data/.gs/specifications/multi_json-1.12.1.gemspec +0 -33
  117. data/.gs/specifications/multipart-post-2.0.0.gemspec +0 -22
  118. data/.ruby-version +0 -1
@@ -1,606 +0,0 @@
1
- # encoding: UTF-8
2
- #
3
- # Copyright 2011, 2012 Keith Rarick
4
- #
5
- # Permission is hereby granted, free of charge, to any person obtaining a copy
6
- # of this software and associated documentation files (the "Software"), to deal
7
- # in the Software without restriction, including without limitation the rights
8
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- # copies of the Software, and to permit persons to whom the Software is
10
- # furnished to do so, subject to the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be included in
13
- # all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- # THE SOFTWARE.
22
-
23
- # See https://github.com/kr/okjson for updates.
24
-
25
- require 'stringio'
26
-
27
- module MultiJson
28
- # Some parts adapted from
29
- # https://golang.org/src/encoding/json/decode.go and
30
- # https://golang.org/src/unicode/utf8/utf8.go
31
- module OkJson
32
- Upstream = '45'
33
- extend self
34
-
35
-
36
- # Decodes a json document in string s and
37
- # returns the corresponding ruby value.
38
- # String s must be valid UTF-8. If you have
39
- # a string in some other encoding, convert
40
- # it first.
41
- #
42
- # String values in the resulting structure
43
- # will be UTF-8.
44
- def decode(s)
45
- ts = lex(s)
46
- v, ts = textparse(ts)
47
- if ts.length > 0
48
- raise Error, 'trailing garbage'
49
- end
50
- v
51
- end
52
-
53
-
54
- # Encodes x into a json text. It may contain only
55
- # Array, Hash, String, Numeric, true, false, nil.
56
- # (Note, this list excludes Symbol.)
57
- # X itself must be an Array or a Hash.
58
- # No other value can be encoded, and an error will
59
- # be raised if x contains any other value, such as
60
- # Nan, Infinity, Symbol, and Proc, or if a Hash key
61
- # is not a String.
62
- # Strings contained in x must be valid UTF-8.
63
- def encode(x)
64
- case x
65
- when Hash then objenc(x)
66
- when Array then arrenc(x)
67
- else
68
- raise Error, 'root value must be an Array or a Hash'
69
- end
70
- end
71
-
72
-
73
- def valenc(x)
74
- case x
75
- when Hash then objenc(x)
76
- when Array then arrenc(x)
77
- when String then strenc(x)
78
- when Numeric then numenc(x)
79
- when true then "true"
80
- when false then "false"
81
- when nil then "null"
82
- else
83
- if x.respond_to?(:to_json)
84
- x.to_json
85
- else
86
- raise Error, "cannot encode #{x.class}: #{x.inspect}"
87
- end
88
- end
89
- end
90
-
91
-
92
- private
93
-
94
-
95
- # Parses a "json text" in the sense of RFC 4627.
96
- # Returns the parsed value and any trailing tokens.
97
- # Note: this is almost the same as valparse,
98
- # except that it does not accept atomic values.
99
- def textparse(ts)
100
- if ts.length <= 0
101
- raise Error, 'empty'
102
- end
103
-
104
- typ, _, val = ts[0]
105
- case typ
106
- when '{' then objparse(ts)
107
- when '[' then arrparse(ts)
108
- else
109
- raise Error, "unexpected #{val.inspect}"
110
- end
111
- end
112
-
113
-
114
- # Parses a "value" in the sense of RFC 4627.
115
- # Returns the parsed value and any trailing tokens.
116
- def valparse(ts)
117
- if ts.length <= 0
118
- raise Error, 'empty'
119
- end
120
-
121
- typ, _, val = ts[0]
122
- case typ
123
- when '{' then objparse(ts)
124
- when '[' then arrparse(ts)
125
- when :val,:str then [val, ts[1..-1]]
126
- else
127
- raise Error, "unexpected #{val.inspect}"
128
- end
129
- end
130
-
131
-
132
- # Parses an "object" in the sense of RFC 4627.
133
- # Returns the parsed value and any trailing tokens.
134
- def objparse(ts)
135
- ts = eat('{', ts)
136
- obj = {}
137
-
138
- if ts[0][0] == '}'
139
- return obj, ts[1..-1]
140
- end
141
-
142
- k, v, ts = pairparse(ts)
143
- obj[k] = v
144
-
145
- if ts[0][0] == '}'
146
- return obj, ts[1..-1]
147
- end
148
-
149
- loop do
150
- ts = eat(',', ts)
151
-
152
- k, v, ts = pairparse(ts)
153
- obj[k] = v
154
-
155
- if ts[0][0] == '}'
156
- return obj, ts[1..-1]
157
- end
158
- end
159
- end
160
-
161
-
162
- # Parses a "member" in the sense of RFC 4627.
163
- # Returns the parsed values and any trailing tokens.
164
- def pairparse(ts)
165
- (typ, _, k), ts = ts[0], ts[1..-1]
166
- if typ != :str
167
- raise Error, "unexpected #{k.inspect}"
168
- end
169
- ts = eat(':', ts)
170
- v, ts = valparse(ts)
171
- [k, v, ts]
172
- end
173
-
174
-
175
- # Parses an "array" in the sense of RFC 4627.
176
- # Returns the parsed value and any trailing tokens.
177
- def arrparse(ts)
178
- ts = eat('[', ts)
179
- arr = []
180
-
181
- if ts[0][0] == ']'
182
- return arr, ts[1..-1]
183
- end
184
-
185
- v, ts = valparse(ts)
186
- arr << v
187
-
188
- if ts[0][0] == ']'
189
- return arr, ts[1..-1]
190
- end
191
-
192
- loop do
193
- ts = eat(',', ts)
194
-
195
- v, ts = valparse(ts)
196
- arr << v
197
-
198
- if ts[0][0] == ']'
199
- return arr, ts[1..-1]
200
- end
201
- end
202
- end
203
-
204
-
205
- def eat(typ, ts)
206
- if ts[0][0] != typ
207
- raise Error, "expected #{typ} (got #{ts[0].inspect})"
208
- end
209
- ts[1..-1]
210
- end
211
-
212
-
213
- # Scans s and returns a list of json tokens,
214
- # excluding white space (as defined in RFC 4627).
215
- def lex(s)
216
- ts = []
217
- while s.length > 0
218
- typ, lexeme, val = tok(s)
219
- if typ == nil
220
- raise Error, "invalid character at #{s[0,10].inspect}"
221
- end
222
- if typ != :space
223
- ts << [typ, lexeme, val]
224
- end
225
- s = s[lexeme.length..-1]
226
- end
227
- ts
228
- end
229
-
230
-
231
- # Scans the first token in s and
232
- # returns a 3-element list, or nil
233
- # if s does not begin with a valid token.
234
- #
235
- # The first list element is one of
236
- # '{', '}', ':', ',', '[', ']',
237
- # :val, :str, and :space.
238
- #
239
- # The second element is the lexeme.
240
- #
241
- # The third element is the value of the
242
- # token for :val and :str, otherwise
243
- # it is the lexeme.
244
- def tok(s)
245
- case s[0]
246
- when ?{ then ['{', s[0,1], s[0,1]]
247
- when ?} then ['}', s[0,1], s[0,1]]
248
- when ?: then [':', s[0,1], s[0,1]]
249
- when ?, then [',', s[0,1], s[0,1]]
250
- when ?[ then ['[', s[0,1], s[0,1]]
251
- when ?] then [']', s[0,1], s[0,1]]
252
- when ?n then nulltok(s)
253
- when ?t then truetok(s)
254
- when ?f then falsetok(s)
255
- when ?" then strtok(s)
256
- when Spc, ?\t, ?\n, ?\r then [:space, s[0,1], s[0,1]]
257
- else
258
- numtok(s)
259
- end
260
- end
261
-
262
-
263
- def nulltok(s); s[0,4] == 'null' ? [:val, 'null', nil] : [] end
264
- def truetok(s); s[0,4] == 'true' ? [:val, 'true', true] : [] end
265
- def falsetok(s); s[0,5] == 'false' ? [:val, 'false', false] : [] end
266
-
267
-
268
- def numtok(s)
269
- m = /(-?(?:[1-9][0-9]+|[0-9]))([.][0-9]+)?([eE][+-]?[0-9]+)?/.match(s)
270
- if m && m.begin(0) == 0
271
- if !m[2] && !m[3]
272
- [:val, m[0], Integer(m[0])]
273
- elsif m[2]
274
- [:val, m[0], Float(m[0])]
275
- else
276
- [:val, m[0], Integer(m[1])*(10**m[3][1..-1].to_i(10))]
277
- end
278
- else
279
- []
280
- end
281
- end
282
-
283
-
284
- def strtok(s)
285
- m = /"([^"\\]|\\["\/\\bfnrt]|\\u[0-9a-fA-F]{4})*"/.match(s)
286
- if ! m
287
- raise Error, "invalid string literal at #{abbrev(s)}"
288
- end
289
- [:str, m[0], unquote(m[0])]
290
- end
291
-
292
-
293
- def abbrev(s)
294
- t = s[0,10]
295
- p = t['`']
296
- t = t[0,p] if p
297
- t = t + '...' if t.length < s.length
298
- '`' + t + '`'
299
- end
300
-
301
-
302
- # Converts a quoted json string literal q into a UTF-8-encoded string.
303
- # The rules are different than for Ruby, so we cannot use eval.
304
- # Unquote will raise an error if q contains control characters.
305
- def unquote(q)
306
- q = q[1...-1]
307
- a = q.dup # allocate a big enough string
308
- # In ruby >= 1.9, a[w] is a codepoint, not a byte.
309
- if rubydoesenc?
310
- a.force_encoding('UTF-8')
311
- end
312
- r, w = 0, 0
313
- while r < q.length
314
- c = q[r]
315
- if c == ?\\
316
- r += 1
317
- if r >= q.length
318
- raise Error, "string literal ends with a \"\\\": \"#{q}\""
319
- end
320
-
321
- case q[r]
322
- when ?",?\\,?/,?'
323
- a[w] = q[r]
324
- r += 1
325
- w += 1
326
- when ?b,?f,?n,?r,?t
327
- a[w] = Unesc[q[r]]
328
- r += 1
329
- w += 1
330
- when ?u
331
- r += 1
332
- uchar = begin
333
- hexdec4(q[r,4])
334
- rescue RuntimeError => e
335
- raise Error, "invalid escape sequence \\u#{q[r,4]}: #{e}"
336
- end
337
- r += 4
338
- if surrogate? uchar
339
- if q.length >= r+6
340
- uchar1 = hexdec4(q[r+2,4])
341
- uchar = subst(uchar, uchar1)
342
- if uchar != Ucharerr
343
- # A valid pair; consume.
344
- r += 6
345
- end
346
- end
347
- end
348
- if rubydoesenc?
349
- a[w] = '' << uchar
350
- w += 1
351
- else
352
- w += ucharenc(a, w, uchar)
353
- end
354
- else
355
- raise Error, "invalid escape char #{q[r]} in \"#{q}\""
356
- end
357
- elsif c == ?" || c < Spc
358
- raise Error, "invalid character in string literal \"#{q}\""
359
- else
360
- # Copy anything else byte-for-byte.
361
- # Valid UTF-8 will remain valid UTF-8.
362
- # Invalid UTF-8 will remain invalid UTF-8.
363
- # In ruby >= 1.9, c is a codepoint, not a byte,
364
- # in which case this is still what we want.
365
- a[w] = c
366
- r += 1
367
- w += 1
368
- end
369
- end
370
- a[0,w]
371
- end
372
-
373
-
374
- # Encodes unicode character u as UTF-8
375
- # bytes in string a at position i.
376
- # Returns the number of bytes written.
377
- def ucharenc(a, i, u)
378
- if u <= Uchar1max
379
- a[i] = (u & 0xff).chr
380
- 1
381
- elsif u <= Uchar2max
382
- a[i+0] = (Utag2 | ((u>>6)&0xff)).chr
383
- a[i+1] = (Utagx | (u&Umaskx)).chr
384
- 2
385
- elsif u <= Uchar3max
386
- a[i+0] = (Utag3 | ((u>>12)&0xff)).chr
387
- a[i+1] = (Utagx | ((u>>6)&Umaskx)).chr
388
- a[i+2] = (Utagx | (u&Umaskx)).chr
389
- 3
390
- else
391
- a[i+0] = (Utag4 | ((u>>18)&0xff)).chr
392
- a[i+1] = (Utagx | ((u>>12)&Umaskx)).chr
393
- a[i+2] = (Utagx | ((u>>6)&Umaskx)).chr
394
- a[i+3] = (Utagx | (u&Umaskx)).chr
395
- 4
396
- end
397
- end
398
-
399
-
400
- def hexdec4(s)
401
- if s.length != 4
402
- raise Error, 'short'
403
- end
404
- (nibble(s[0])<<12) | (nibble(s[1])<<8) | (nibble(s[2])<<4) | nibble(s[3])
405
- end
406
-
407
-
408
- def subst(u1, u2)
409
- if Usurr1 <= u1 && u1 < Usurr2 && Usurr2 <= u2 && u2 < Usurr3
410
- return ((u1-Usurr1)<<10) | (u2-Usurr2) + Usurrself
411
- end
412
- return Ucharerr
413
- end
414
-
415
-
416
- def surrogate?(u)
417
- Usurr1 <= u && u < Usurr3
418
- end
419
-
420
-
421
- def nibble(c)
422
- if ?0 <= c && c <= ?9 then c.ord - ?0.ord
423
- elsif ?a <= c && c <= ?z then c.ord - ?a.ord + 10
424
- elsif ?A <= c && c <= ?Z then c.ord - ?A.ord + 10
425
- else
426
- raise Error, "invalid hex code #{c}"
427
- end
428
- end
429
-
430
-
431
- def objenc(x)
432
- '{' + x.map{|k,v| keyenc(k) + ':' + valenc(v)}.join(',') + '}'
433
- end
434
-
435
-
436
- def arrenc(a)
437
- '[' + a.map{|x| valenc(x)}.join(',') + ']'
438
- end
439
-
440
-
441
- def keyenc(k)
442
- case k
443
- when String then strenc(k)
444
- else
445
- raise Error, "Hash key is not a string: #{k.inspect}"
446
- end
447
- end
448
-
449
-
450
- def strenc(s)
451
- t = StringIO.new
452
- t.putc(?")
453
- r = 0
454
-
455
- while r < s.length
456
- case s[r]
457
- when ?" then t.print('\\"')
458
- when ?\\ then t.print('\\\\')
459
- when ?\b then t.print('\\b')
460
- when ?\f then t.print('\\f')
461
- when ?\n then t.print('\\n')
462
- when ?\r then t.print('\\r')
463
- when ?\t then t.print('\\t')
464
- else
465
- c = s[r]
466
- # In ruby >= 1.9, s[r] is a codepoint, not a byte.
467
- if rubydoesenc?
468
- begin
469
- # c.ord will raise an error if c is invalid UTF-8
470
- if c.ord < Spc.ord
471
- c = "\\u%04x" % [c.ord]
472
- end
473
- t.write(c)
474
- rescue
475
- t.write(Ustrerr)
476
- end
477
- elsif c < Spc
478
- t.write("\\u%04x" % c)
479
- elsif Spc <= c && c <= ?~
480
- t.putc(c)
481
- else
482
- n = ucharcopy(t, s, r) # ensure valid UTF-8 output
483
- r += n - 1 # r is incremented below
484
- end
485
- end
486
- r += 1
487
- end
488
- t.putc(?")
489
- t.string
490
- end
491
-
492
-
493
- def numenc(x)
494
- if ((x.nan? || x.infinite?) rescue false)
495
- raise Error, "Numeric cannot be represented: #{x}"
496
- end
497
- "#{x}"
498
- end
499
-
500
-
501
- # Copies the valid UTF-8 bytes of a single character
502
- # from string s at position i to I/O object t, and
503
- # returns the number of bytes copied.
504
- # If no valid UTF-8 char exists at position i,
505
- # ucharcopy writes Ustrerr and returns 1.
506
- def ucharcopy(t, s, i)
507
- n = s.length - i
508
- raise Utf8Error if n < 1
509
-
510
- c0 = s[i].ord
511
-
512
- # 1-byte, 7-bit sequence?
513
- if c0 < Utagx
514
- t.putc(c0)
515
- return 1
516
- end
517
-
518
- raise Utf8Error if c0 < Utag2 # unexpected continuation byte?
519
-
520
- raise Utf8Error if n < 2 # need continuation byte
521
- c1 = s[i+1].ord
522
- raise Utf8Error if c1 < Utagx || Utag2 <= c1
523
-
524
- # 2-byte, 11-bit sequence?
525
- if c0 < Utag3
526
- raise Utf8Error if ((c0&Umask2)<<6 | (c1&Umaskx)) <= Uchar1max
527
- t.putc(c0)
528
- t.putc(c1)
529
- return 2
530
- end
531
-
532
- # need second continuation byte
533
- raise Utf8Error if n < 3
534
-
535
- c2 = s[i+2].ord
536
- raise Utf8Error if c2 < Utagx || Utag2 <= c2
537
-
538
- # 3-byte, 16-bit sequence?
539
- if c0 < Utag4
540
- u = (c0&Umask3)<<12 | (c1&Umaskx)<<6 | (c2&Umaskx)
541
- raise Utf8Error if u <= Uchar2max
542
- t.putc(c0)
543
- t.putc(c1)
544
- t.putc(c2)
545
- return 3
546
- end
547
-
548
- # need third continuation byte
549
- raise Utf8Error if n < 4
550
- c3 = s[i+3].ord
551
- raise Utf8Error if c3 < Utagx || Utag2 <= c3
552
-
553
- # 4-byte, 21-bit sequence?
554
- if c0 < Utag5
555
- u = (c0&Umask4)<<18 | (c1&Umaskx)<<12 | (c2&Umaskx)<<6 | (c3&Umaskx)
556
- raise Utf8Error if u <= Uchar3max
557
- t.putc(c0)
558
- t.putc(c1)
559
- t.putc(c2)
560
- t.putc(c3)
561
- return 4
562
- end
563
-
564
- raise Utf8Error
565
- rescue Utf8Error
566
- t.write(Ustrerr)
567
- return 1
568
- end
569
-
570
-
571
- def rubydoesenc?
572
- ::String.method_defined?(:force_encoding)
573
- end
574
-
575
-
576
- class Utf8Error < ::StandardError
577
- end
578
-
579
-
580
- class Error < ::StandardError
581
- end
582
-
583
-
584
- Utagx = 0b1000_0000
585
- Utag2 = 0b1100_0000
586
- Utag3 = 0b1110_0000
587
- Utag4 = 0b1111_0000
588
- Utag5 = 0b1111_1000
589
- Umaskx = 0b0011_1111
590
- Umask2 = 0b0001_1111
591
- Umask3 = 0b0000_1111
592
- Umask4 = 0b0000_0111
593
- Uchar1max = (1<<7) - 1
594
- Uchar2max = (1<<11) - 1
595
- Uchar3max = (1<<16) - 1
596
- Ucharerr = 0xFFFD # unicode "replacement char"
597
- Ustrerr = "\xef\xbf\xbd" # unicode "replacement char"
598
- Usurrself = 0x10000
599
- Usurr1 = 0xd800
600
- Usurr2 = 0xdc00
601
- Usurr3 = 0xe000
602
-
603
- Spc = ' '[0]
604
- Unesc = {?b=>?\b, ?f=>?\f, ?n=>?\n, ?r=>?\r, ?t=>?\t}
605
- end
606
- end
@@ -1,17 +0,0 @@
1
- module MultiJson
2
- class Version
3
- MAJOR = 1 unless defined? MultiJson::Version::MAJOR
4
- MINOR = 12 unless defined? MultiJson::Version::MINOR
5
- PATCH = 1 unless defined? MultiJson::Version::PATCH
6
- PRE = nil unless defined? MultiJson::Version::PRE
7
-
8
- class << self
9
- # @return [String]
10
- def to_s
11
- [MAJOR, MINOR, PATCH, PRE].compact.join('.')
12
- end
13
- end
14
- end
15
-
16
- VERSION = Version.to_s.freeze
17
- end