swaggard 0.0.4 → 0.1.0

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.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +18 -0
  3. data/app/assets/fonts/swaggard/droid-sans-v6-latin-700.eot +0 -0
  4. data/app/assets/fonts/swaggard/droid-sans-v6-latin-700.svg +0 -0
  5. data/app/assets/fonts/swaggard/droid-sans-v6-latin-700.ttf +0 -0
  6. data/app/assets/fonts/swaggard/droid-sans-v6-latin-700.woff +0 -0
  7. data/app/assets/fonts/swaggard/droid-sans-v6-latin-700.woff2 +0 -0
  8. data/app/assets/fonts/swaggard/droid-sans-v6-latin-regular.eot +0 -0
  9. data/app/assets/fonts/swaggard/droid-sans-v6-latin-regular.svg +0 -0
  10. data/app/assets/fonts/swaggard/droid-sans-v6-latin-regular.ttf +0 -0
  11. data/app/assets/fonts/swaggard/droid-sans-v6-latin-regular.woff +0 -0
  12. data/app/assets/fonts/swaggard/droid-sans-v6-latin-regular.woff2 +0 -0
  13. data/app/assets/images/swaggard/explorer_icons.png +0 -0
  14. data/app/assets/images/swaggard/favicon-16x16.png +0 -0
  15. data/app/assets/images/swaggard/favicon-32x32.png +0 -0
  16. data/app/assets/images/swaggard/favicon.ico +0 -0
  17. data/app/assets/images/swaggard/logo_small.png +0 -0
  18. data/app/assets/images/swaggard/pet_store_api.png +0 -0
  19. data/app/assets/images/swaggard/throbber.gif +0 -0
  20. data/app/assets/images/swaggard/wordnik_api.png +0 -0
  21. data/app/assets/javascripts/swaggard/application.js +12 -12
  22. data/app/assets/javascripts/swaggard/lib/backbone-min.js +0 -0
  23. data/app/assets/javascripts/swaggard/lib/handlebars-2.0.0.js +0 -0
  24. data/app/assets/javascripts/swaggard/lib/highlight.7.3.pack.js +0 -0
  25. data/app/assets/javascripts/swaggard/lib/jquery-1.8.0.min.js +1 -1
  26. data/app/assets/javascripts/swaggard/lib/jquery.ba-bbq.min.js +0 -0
  27. data/app/assets/javascripts/swaggard/lib/jquery.slideto.min.js +0 -0
  28. data/app/assets/javascripts/swaggard/lib/jquery.wiggle.min.js +0 -0
  29. data/app/assets/javascripts/swaggard/lib/marked.js +0 -0
  30. data/app/assets/javascripts/swaggard/lib/swagger-oauth.js +290 -0
  31. data/app/assets/javascripts/swaggard/lib/underscore-min.js +6 -32
  32. data/app/assets/javascripts/swaggard/lib/underscore-min.map +1 -0
  33. data/app/assets/javascripts/swaggard/swaggard.js +59 -0
  34. data/app/assets/javascripts/swaggard/swagger-ui.js +31404 -1363
  35. data/app/assets/stylesheets/swaggard/application.css +1 -1
  36. data/app/assets/stylesheets/swaggard/application_print.css +15 -0
  37. data/app/assets/stylesheets/swaggard/print.css.scss +1175 -0
  38. data/app/assets/stylesheets/swaggard/reset.css +0 -0
  39. data/app/assets/stylesheets/swaggard/screen.css.scss +41 -15
  40. data/app/assets/stylesheets/swaggard/typography.css.scss +2 -1
  41. data/app/controllers/swaggard/swagger_controller.rb +3 -1
  42. data/app/views/swaggard/swagger/index.html.erb +30 -71
  43. data/config/initializers/assets.rb +1 -0
  44. data/lib/swaggard.rb +13 -7
  45. data/lib/swaggard/api_definition.rb +3 -1
  46. data/lib/swaggard/configuration.rb +18 -6
  47. data/lib/swaggard/engine.rb +8 -2
  48. data/lib/swaggard/parsers/controllers.rb +0 -2
  49. data/lib/swaggard/parsers/models.rb +1 -1
  50. data/lib/swaggard/swagger/default_response.rb +17 -0
  51. data/lib/swaggard/swagger/definition.rb +3 -1
  52. data/lib/swaggard/swagger/operation.rb +3 -0
  53. data/lib/swaggard/swagger/parameters/body.rb +4 -2
  54. data/lib/swaggard/swagger/parameters/query.rb +13 -1
  55. data/lib/swaggard/swagger/response.rb +14 -6
  56. data/lib/swaggard/swagger/type.rb +27 -42
  57. data/lib/swaggard/version.rb +1 -1
  58. data/spec/fixtures/api.json +1 -1
  59. data/spec/fixtures/dummy/app/controllers/admin/pets_controller.rb +11 -0
  60. data/spec/fixtures/dummy/config/routes.rb +4 -1
  61. data/spec/fixtures/swagger_schema.json +1495 -0
  62. data/spec/integration/swaggard_spec.rb +8 -4
  63. data/spec/spec_helper.rb +0 -1
  64. metadata +17 -8
  65. data/app/assets/javascripts/swaggard/lib/MD5.js +0 -319
  66. data/app/assets/javascripts/swaggard/lib/handlebars-1.0.rc.1.js +0 -1920
  67. data/app/assets/javascripts/swaggard/lib/shred.bundle.js +0 -2765
  68. data/app/assets/javascripts/swaggard/lib/swagger-client.js +0 -3294
  69. data/app/assets/javascripts/swaggard/lib/swagger.js +0 -794
  70. data/app/assets/javascripts/swaggard/swagger-ui_org.js +0 -2005
@@ -1,19 +1,23 @@
1
1
  require 'spec_helper'
2
2
 
3
+ require 'json-schema'
4
+
3
5
  describe Swaggard, '.get_doc' do
4
6
 
5
- let(:controller_path) { File.expand_path('../../fixtures/dummy/app/controllers/pets_controller.rb', __FILE__) }
7
+ let(:controller_path) { File.expand_path('../../fixtures/dummy/app/controllers/**/*.rb', __FILE__) }
6
8
  let(:api_json) { File.read(File.expand_path('../../fixtures/api.json', __FILE__)) }
7
9
 
8
- it 'generates swagger json' do
10
+ let(:host) { 'localhost:3000' }
11
+
12
+ it 'generates the expected swagger json' do
9
13
  Swaggard.configure do |config|
10
14
  config.controllers_path = controller_path
11
15
  config.routes = Dummy::Application.routes.routes
12
16
  end
13
17
 
14
- swagger_json = JSON.dump(Swaggard.get_doc)
18
+ swagger_json = JSON.dump(Swaggard.get_doc(host))
15
19
 
16
20
  expect(swagger_json).to eq(api_json)
17
21
  end
18
22
 
19
- end
23
+ end
@@ -17,7 +17,6 @@ require File.expand_path('../fixtures/dummy/config/application.rb', __FILE__)
17
17
  # Dir["./spec/support/**/*.rb"].each {|f| require f}
18
18
 
19
19
  RSpec.configure do |config|
20
- config.treat_symbols_as_metadata_keys_with_true_values = true
21
20
  config.run_all_when_everything_filtered = true
22
21
  config.filter_run :focus
23
22
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swaggard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Gomez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-30 00:00:00.000000000 Z
11
+ date: 2015-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -114,14 +114,16 @@ files:
114
114
  - app/assets/fonts/swaggard/droid-sans-v6-latin-regular.ttf
115
115
  - app/assets/fonts/swaggard/droid-sans-v6-latin-regular.woff
116
116
  - app/assets/fonts/swaggard/droid-sans-v6-latin-regular.woff2
117
+ - app/assets/images/swaggard/explorer_icons.png
118
+ - app/assets/images/swaggard/favicon-16x16.png
119
+ - app/assets/images/swaggard/favicon-32x32.png
120
+ - app/assets/images/swaggard/favicon.ico
117
121
  - app/assets/images/swaggard/logo_small.png
118
122
  - app/assets/images/swaggard/pet_store_api.png
119
123
  - app/assets/images/swaggard/throbber.gif
120
124
  - app/assets/images/swaggard/wordnik_api.png
121
125
  - app/assets/javascripts/swaggard/application.js
122
- - app/assets/javascripts/swaggard/lib/MD5.js
123
126
  - app/assets/javascripts/swaggard/lib/backbone-min.js
124
- - app/assets/javascripts/swaggard/lib/handlebars-1.0.rc.1.js
125
127
  - app/assets/javascripts/swaggard/lib/handlebars-2.0.0.js
126
128
  - app/assets/javascripts/swaggard/lib/highlight.7.3.pack.js
127
129
  - app/assets/javascripts/swaggard/lib/jquery-1.8.0.min.js
@@ -129,19 +131,21 @@ files:
129
131
  - app/assets/javascripts/swaggard/lib/jquery.slideto.min.js
130
132
  - app/assets/javascripts/swaggard/lib/jquery.wiggle.min.js
131
133
  - app/assets/javascripts/swaggard/lib/marked.js
132
- - app/assets/javascripts/swaggard/lib/shred.bundle.js
133
- - app/assets/javascripts/swaggard/lib/swagger-client.js
134
- - app/assets/javascripts/swaggard/lib/swagger.js
134
+ - app/assets/javascripts/swaggard/lib/swagger-oauth.js
135
135
  - app/assets/javascripts/swaggard/lib/underscore-min.js
136
+ - app/assets/javascripts/swaggard/lib/underscore-min.map
137
+ - app/assets/javascripts/swaggard/swaggard.js
136
138
  - app/assets/javascripts/swaggard/swagger-ui.js
137
- - app/assets/javascripts/swaggard/swagger-ui_org.js
138
139
  - app/assets/stylesheets/swaggard/application.css
140
+ - app/assets/stylesheets/swaggard/application_print.css
141
+ - app/assets/stylesheets/swaggard/print.css.scss
139
142
  - app/assets/stylesheets/swaggard/reset.css
140
143
  - app/assets/stylesheets/swaggard/screen.css.scss
141
144
  - app/assets/stylesheets/swaggard/typography.css.scss
142
145
  - app/controllers/swaggard/application_controller.rb
143
146
  - app/controllers/swaggard/swagger_controller.rb
144
147
  - app/views/swaggard/swagger/index.html.erb
148
+ - config/initializers/assets.rb
145
149
  - config/routes.rb
146
150
  - lib/swaggard.rb
147
151
  - lib/swaggard/api_definition.rb
@@ -150,6 +154,7 @@ files:
150
154
  - lib/swaggard/parsers/controllers.rb
151
155
  - lib/swaggard/parsers/models.rb
152
156
  - lib/swaggard/parsers/routes.rb
157
+ - lib/swaggard/swagger/default_response.rb
153
158
  - lib/swaggard/swagger/definition.rb
154
159
  - lib/swaggard/swagger/operation.rb
155
160
  - lib/swaggard/swagger/parameters/base.rb
@@ -165,12 +170,14 @@ files:
165
170
  - lib/swaggard/swagger/type.rb
166
171
  - lib/swaggard/version.rb
167
172
  - spec/fixtures/api.json
173
+ - spec/fixtures/dummy/app/controllers/admin/pets_controller.rb
168
174
  - spec/fixtures/dummy/app/controllers/application_controller.rb
169
175
  - spec/fixtures/dummy/app/controllers/pets_controller.rb
170
176
  - spec/fixtures/dummy/config/application.rb
171
177
  - spec/fixtures/dummy/config/environments/development.rb
172
178
  - spec/fixtures/dummy/config/routes.rb
173
179
  - spec/fixtures/dummy/log/development.log
180
+ - spec/fixtures/swagger_schema.json
174
181
  - spec/integration/swaggard_spec.rb
175
182
  - spec/spec_helper.rb
176
183
  homepage: https://github.com/Moove-it/swaggard
@@ -199,12 +206,14 @@ specification_version: 4
199
206
  summary: 'Swaggard: Swagger Rails REST API doc using yard YARD'
200
207
  test_files:
201
208
  - spec/fixtures/api.json
209
+ - spec/fixtures/dummy/app/controllers/admin/pets_controller.rb
202
210
  - spec/fixtures/dummy/app/controllers/application_controller.rb
203
211
  - spec/fixtures/dummy/app/controllers/pets_controller.rb
204
212
  - spec/fixtures/dummy/config/application.rb
205
213
  - spec/fixtures/dummy/config/environments/development.rb
206
214
  - spec/fixtures/dummy/config/routes.rb
207
215
  - spec/fixtures/dummy/log/development.log
216
+ - spec/fixtures/swagger_schema.json
208
217
  - spec/integration/swaggard_spec.rb
209
218
  - spec/spec_helper.rb
210
219
  has_rdoc:
@@ -1,319 +0,0 @@
1
- /*
2
- Javascript MD5 library - version 0.4 (Modified)
3
-
4
- Coded (2011) by Luigi Galli - LG@4e71.org - http://faultylabs.com
5
- Thanks to: Roberto Viola
6
- Modified at SyncTV, Inc. 2012 to employ AMD module loading and not uppercase result string.
7
-
8
- The below code is PUBLIC DOMAIN - NO WARRANTY!
9
- */
10
-
11
- /**
12
- * @name MD5
13
- * @namespace Utility for dealing with MD5 hashes.
14
- */
15
-
16
- /**
17
- @name hash
18
- @memberof MD5
19
- @function
20
- @description Computes the MD5 hash for the given input data
21
-
22
- @param {String|String[]|Number[]|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array} data
23
- data as String - (Assumes Unicode code points are encoded as UTF-8. If you
24
- attempt to digest Unicode strings using other encodings
25
- you will get incorrect results!)
26
- <br />
27
- data as array of characters - (Assumes Unicode code points are encoded as UTF-8. If you
28
- attempt to digest Unicode strings using other encodings
29
- you will get incorrect results!)
30
- <br />
31
- data as array of bytes (plain javascript array of integer numbers)
32
- <br />
33
- data as ArrayBuffer (see: https://developer.mozilla.org/en/JavaScript_typed_arrays)
34
- <br />
35
- data as Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array or Uint8Array (see: https://developer.mozilla.org/en/JavaScript_typed_arrays)
36
-
37
- @returns {String} MD5 hash as lowercase hex string.
38
- */
39
-
40
- var MD5 = {};
41
- MD5.hash = function(data) {
42
-
43
- // convert number to (unsigned) 32 bit hex, zero filled string
44
- function to_zerofilled_hex(n) {
45
- var t1 = (n >>> 0).toString(16)
46
- return "00000000".substr(0, 8 - t1.length) + t1
47
- }
48
-
49
- // convert array of chars to array of bytes
50
- function chars_to_bytes(ac) {
51
- var retval = []
52
- for(var i = 0; i < ac.length; i++) {
53
- retval = retval.concat(str_to_bytes(ac[i]))
54
- }
55
- return retval
56
- }
57
-
58
- // convert a 64 bit unsigned number to array of bytes. Little endian
59
- function int64_to_bytes(num) {
60
- var retval = []
61
- for(var i = 0; i < 8; i++) {
62
- retval.push(num & 0xFF)
63
- num = num >>> 8
64
- }
65
- return retval
66
- }
67
-
68
- // 32 bit left-rotation
69
- function rol(num, places) {
70
- return ((num << places) & 0xFFFFFFFF) | (num >>> (32 - places))
71
- }
72
-
73
- // The 4 MD5 functions
74
- function fF(b, c, d) {
75
- return (b & c) | (~b & d)
76
- }
77
-
78
- function fG(b, c, d) {
79
- return (d & b) | (~d & c)
80
- }
81
-
82
- function fH(b, c, d) {
83
- return b ^ c ^ d
84
- }
85
-
86
- function fI(b, c, d) {
87
- return c ^ (b | ~d)
88
- }
89
-
90
- // pick 4 bytes at specified offset. Little-endian is assumed
91
- function bytes_to_int32(arr, off) {
92
- return (arr[off + 3] << 24) | (arr[off + 2] << 16) | (arr[off + 1] << 8) | (arr[off])
93
- }
94
-
95
- /*
96
- Conver string to array of bytes in UTF-8 encoding
97
- See:
98
- http://www.dangrossman.info/2007/05/25/handling-utf-8-in-javascript-php-and-non-utf8-databases/
99
- http://stackoverflow.com/questions/1240408/reading-bytes-from-a-javascript-string
100
- How about a String.getBytes(<ENCODING>) for Javascript!? Isn't it time to add it?
101
- */
102
- function str_to_bytes(str) {
103
- var retval = []
104
- for(var i = 0; i < str.length; i++)
105
- if(str.charCodeAt(i) <= 0x7F) {
106
- retval.push(str.charCodeAt(i))
107
- } else {
108
- var tmp = encodeURIComponent(str.charAt(i)).substr(1).split('%')
109
- for(var j = 0; j < tmp.length; j++) {
110
- retval.push(parseInt(tmp[j], 0x10))
111
- }
112
- }
113
- return retval
114
- }
115
-
116
- // convert the 4 32-bit buffers to a 128 bit hex string. (Little-endian is assumed)
117
- function int128le_to_hex(a, b, c, d) {
118
- var ra = ""
119
- var t = 0
120
- var ta = 0
121
- for(var i = 3; i >= 0; i--) {
122
- ta = arguments[i]
123
- t = (ta & 0xFF)
124
- ta = ta >>> 8
125
- t = t << 8
126
- t = t | (ta & 0xFF)
127
- ta = ta >>> 8
128
- t = t << 8
129
- t = t | (ta & 0xFF)
130
- ta = ta >>> 8
131
- t = t << 8
132
- t = t | ta
133
- ra = ra + to_zerofilled_hex(t)
134
- }
135
- return ra
136
- }
137
-
138
- // conversion from typed byte array to plain javascript array
139
- function typed_to_plain(tarr) {
140
- var retval = new Array(tarr.length)
141
- for(var i = 0; i < tarr.length; i++) {
142
- retval[i] = tarr[i]
143
- }
144
- return retval
145
- }
146
-
147
- // check input data type and perform conversions if needed
148
- var databytes = null
149
- // String
150
- var type_mismatch = null
151
- if( typeof data == 'string') {
152
- // convert string to array bytes
153
- databytes = str_to_bytes(data)
154
- } else if(data.constructor == Array) {
155
- if(data.length === 0) {
156
- // if it's empty, just assume array of bytes
157
- databytes = data
158
- } else if( typeof data[0] == 'string') {
159
- databytes = chars_to_bytes(data)
160
- } else if( typeof data[0] == 'number') {
161
- databytes = data
162
- } else {
163
- type_mismatch = typeof data[0]
164
- }
165
- } else if( typeof ArrayBuffer != 'undefined') {
166
- if( data instanceof ArrayBuffer) {
167
- databytes = typed_to_plain(new Uint8Array(data))
168
- } else if(( data instanceof Uint8Array) || ( data instanceof Int8Array)) {
169
- databytes = typed_to_plain(data)
170
- } else if(( data instanceof Uint32Array) || ( data instanceof Int32Array) || ( data instanceof Uint16Array) || ( data instanceof Int16Array) || ( data instanceof Float32Array) || ( data instanceof Float64Array)) {
171
- databytes = typed_to_plain(new Uint8Array(data.buffer))
172
- } else {
173
- type_mismatch = typeof data
174
- }
175
- } else {
176
- type_mismatch = typeof data
177
- }
178
-
179
- if(type_mismatch) {
180
- alert('MD5 type mismatch, cannot process ' + type_mismatch)
181
- }
182
-
183
- function _add(n1, n2) {
184
- return 0x0FFFFFFFF & (n1 + n2)
185
- }
186
-
187
- return do_digest()
188
-
189
- function do_digest() {
190
-
191
- // function update partial state for each run
192
- function updateRun(nf, sin32, dw32, b32) {
193
- var temp = d
194
- d = c
195
- c = b
196
- //b = b + rol(a + (nf + (sin32 + dw32)), b32)
197
- b = _add(b, rol(_add(a, _add(nf, _add(sin32, dw32))), b32))
198
- a = temp
199
- }
200
-
201
- // save original length
202
- var org_len = databytes.length
203
-
204
- // first append the "1" + 7x "0"
205
- databytes.push(0x80)
206
-
207
- // determine required amount of padding
208
- var tail = databytes.length % 64
209
- // no room for msg length?
210
- if(tail > 56) {
211
- // pad to next 512 bit block
212
- for(var i = 0; i < (64 - tail); i++) {
213
- databytes.push(0x0)
214
- }
215
- tail = databytes.length % 64
216
- }
217
- for( i = 0; i < (56 - tail); i++) {
218
- databytes.push(0x0)
219
- }
220
- // message length in bits mod 512 should now be 448
221
- // append 64 bit, little-endian original msg length (in *bits*!)
222
- databytes = databytes.concat(int64_to_bytes(org_len * 8))
223
-
224
- // initialize 4x32 bit state
225
- var h0 = 0x67452301
226
- var h1 = 0xEFCDAB89
227
- var h2 = 0x98BADCFE
228
- var h3 = 0x10325476
229
-
230
- // temp buffers
231
- var a = 0, b = 0, c = 0, d = 0
232
-
233
- // Digest message
234
- for( i = 0; i < databytes.length / 64; i++) {
235
- // initialize run
236
- a = h0
237
- b = h1
238
- c = h2
239
- d = h3
240
-
241
- var ptr = i * 64
242
-
243
- // do 64 runs
244
- updateRun(fF(b, c, d), 0xd76aa478, bytes_to_int32(databytes, ptr), 7)
245
- updateRun(fF(b, c, d), 0xe8c7b756, bytes_to_int32(databytes, ptr + 4), 12)
246
- updateRun(fF(b, c, d), 0x242070db, bytes_to_int32(databytes, ptr + 8), 17)
247
- updateRun(fF(b, c, d), 0xc1bdceee, bytes_to_int32(databytes, ptr + 12), 22)
248
- updateRun(fF(b, c, d), 0xf57c0faf, bytes_to_int32(databytes, ptr + 16), 7)
249
- updateRun(fF(b, c, d), 0x4787c62a, bytes_to_int32(databytes, ptr + 20), 12)
250
- updateRun(fF(b, c, d), 0xa8304613, bytes_to_int32(databytes, ptr + 24), 17)
251
- updateRun(fF(b, c, d), 0xfd469501, bytes_to_int32(databytes, ptr + 28), 22)
252
- updateRun(fF(b, c, d), 0x698098d8, bytes_to_int32(databytes, ptr + 32), 7)
253
- updateRun(fF(b, c, d), 0x8b44f7af, bytes_to_int32(databytes, ptr + 36), 12)
254
- updateRun(fF(b, c, d), 0xffff5bb1, bytes_to_int32(databytes, ptr + 40), 17)
255
- updateRun(fF(b, c, d), 0x895cd7be, bytes_to_int32(databytes, ptr + 44), 22)
256
- updateRun(fF(b, c, d), 0x6b901122, bytes_to_int32(databytes, ptr + 48), 7)
257
- updateRun(fF(b, c, d), 0xfd987193, bytes_to_int32(databytes, ptr + 52), 12)
258
- updateRun(fF(b, c, d), 0xa679438e, bytes_to_int32(databytes, ptr + 56), 17)
259
- updateRun(fF(b, c, d), 0x49b40821, bytes_to_int32(databytes, ptr + 60), 22)
260
- updateRun(fG(b, c, d), 0xf61e2562, bytes_to_int32(databytes, ptr + 4), 5)
261
- updateRun(fG(b, c, d), 0xc040b340, bytes_to_int32(databytes, ptr + 24), 9)
262
- updateRun(fG(b, c, d), 0x265e5a51, bytes_to_int32(databytes, ptr + 44), 14)
263
- updateRun(fG(b, c, d), 0xe9b6c7aa, bytes_to_int32(databytes, ptr), 20)
264
- updateRun(fG(b, c, d), 0xd62f105d, bytes_to_int32(databytes, ptr + 20), 5)
265
- updateRun(fG(b, c, d), 0x2441453, bytes_to_int32(databytes, ptr + 40), 9)
266
- updateRun(fG(b, c, d), 0xd8a1e681, bytes_to_int32(databytes, ptr + 60), 14)
267
- updateRun(fG(b, c, d), 0xe7d3fbc8, bytes_to_int32(databytes, ptr + 16), 20)
268
- updateRun(fG(b, c, d), 0x21e1cde6, bytes_to_int32(databytes, ptr + 36), 5)
269
- updateRun(fG(b, c, d), 0xc33707d6, bytes_to_int32(databytes, ptr + 56), 9)
270
- updateRun(fG(b, c, d), 0xf4d50d87, bytes_to_int32(databytes, ptr + 12), 14)
271
- updateRun(fG(b, c, d), 0x455a14ed, bytes_to_int32(databytes, ptr + 32), 20)
272
- updateRun(fG(b, c, d), 0xa9e3e905, bytes_to_int32(databytes, ptr + 52), 5)
273
- updateRun(fG(b, c, d), 0xfcefa3f8, bytes_to_int32(databytes, ptr + 8), 9)
274
- updateRun(fG(b, c, d), 0x676f02d9, bytes_to_int32(databytes, ptr + 28), 14)
275
- updateRun(fG(b, c, d), 0x8d2a4c8a, bytes_to_int32(databytes, ptr + 48), 20)
276
- updateRun(fH(b, c, d), 0xfffa3942, bytes_to_int32(databytes, ptr + 20), 4)
277
- updateRun(fH(b, c, d), 0x8771f681, bytes_to_int32(databytes, ptr + 32), 11)
278
- updateRun(fH(b, c, d), 0x6d9d6122, bytes_to_int32(databytes, ptr + 44), 16)
279
- updateRun(fH(b, c, d), 0xfde5380c, bytes_to_int32(databytes, ptr + 56), 23)
280
- updateRun(fH(b, c, d), 0xa4beea44, bytes_to_int32(databytes, ptr + 4), 4)
281
- updateRun(fH(b, c, d), 0x4bdecfa9, bytes_to_int32(databytes, ptr + 16), 11)
282
- updateRun(fH(b, c, d), 0xf6bb4b60, bytes_to_int32(databytes, ptr + 28), 16)
283
- updateRun(fH(b, c, d), 0xbebfbc70, bytes_to_int32(databytes, ptr + 40), 23)
284
- updateRun(fH(b, c, d), 0x289b7ec6, bytes_to_int32(databytes, ptr + 52), 4)
285
- updateRun(fH(b, c, d), 0xeaa127fa, bytes_to_int32(databytes, ptr), 11)
286
- updateRun(fH(b, c, d), 0xd4ef3085, bytes_to_int32(databytes, ptr + 12), 16)
287
- updateRun(fH(b, c, d), 0x4881d05, bytes_to_int32(databytes, ptr + 24), 23)
288
- updateRun(fH(b, c, d), 0xd9d4d039, bytes_to_int32(databytes, ptr + 36), 4)
289
- updateRun(fH(b, c, d), 0xe6db99e5, bytes_to_int32(databytes, ptr + 48), 11)
290
- updateRun(fH(b, c, d), 0x1fa27cf8, bytes_to_int32(databytes, ptr + 60), 16)
291
- updateRun(fH(b, c, d), 0xc4ac5665, bytes_to_int32(databytes, ptr + 8), 23)
292
- updateRun(fI(b, c, d), 0xf4292244, bytes_to_int32(databytes, ptr), 6)
293
- updateRun(fI(b, c, d), 0x432aff97, bytes_to_int32(databytes, ptr + 28), 10)
294
- updateRun(fI(b, c, d), 0xab9423a7, bytes_to_int32(databytes, ptr + 56), 15)
295
- updateRun(fI(b, c, d), 0xfc93a039, bytes_to_int32(databytes, ptr + 20), 21)
296
- updateRun(fI(b, c, d), 0x655b59c3, bytes_to_int32(databytes, ptr + 48), 6)
297
- updateRun(fI(b, c, d), 0x8f0ccc92, bytes_to_int32(databytes, ptr + 12), 10)
298
- updateRun(fI(b, c, d), 0xffeff47d, bytes_to_int32(databytes, ptr + 40), 15)
299
- updateRun(fI(b, c, d), 0x85845dd1, bytes_to_int32(databytes, ptr + 4), 21)
300
- updateRun(fI(b, c, d), 0x6fa87e4f, bytes_to_int32(databytes, ptr + 32), 6)
301
- updateRun(fI(b, c, d), 0xfe2ce6e0, bytes_to_int32(databytes, ptr + 60), 10)
302
- updateRun(fI(b, c, d), 0xa3014314, bytes_to_int32(databytes, ptr + 24), 15)
303
- updateRun(fI(b, c, d), 0x4e0811a1, bytes_to_int32(databytes, ptr + 52), 21)
304
- updateRun(fI(b, c, d), 0xf7537e82, bytes_to_int32(databytes, ptr + 16), 6)
305
- updateRun(fI(b, c, d), 0xbd3af235, bytes_to_int32(databytes, ptr + 44), 10)
306
- updateRun(fI(b, c, d), 0x2ad7d2bb, bytes_to_int32(databytes, ptr + 8), 15)
307
- updateRun(fI(b, c, d), 0xeb86d391, bytes_to_int32(databytes, ptr + 36), 21)
308
-
309
- // update buffers
310
- h0 = _add(h0, a)
311
- h1 = _add(h1, b)
312
- h2 = _add(h2, c)
313
- h3 = _add(h3, d)
314
- }
315
- // Done! Convert buffers to 128 bit (LE)
316
- return int128le_to_hex(h3, h2, h1, h0)
317
- }
318
-
319
- };