We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.
@@ -13,7 +13,7 @@ |
||
13 | 13 | */ |
14 | 14 | public function up() |
15 | 15 | { |
16 | - Schema::create('addresses', function (Blueprint $table) { |
|
16 | + Schema::create('addresses', function(Blueprint $table) { |
|
17 | 17 | $table->increments('id'); |
18 | 18 | $table->integer('account_details_id')->unsigned(); |
19 | 19 | $table->string('city')->nullable(); |
@@ -49,7 +49,7 @@ discard block |
||
49 | 49 | $column = ['name' => $column]; |
50 | 50 | } |
51 | 51 | |
52 | - if (is_array($column) && ! isset($column['name'])) { |
|
52 | + if (is_array($column) && !isset($column['name'])) { |
|
53 | 53 | $column['name'] = 'anonymous_column_'.Str::random(5); |
54 | 54 | } |
55 | 55 | |
@@ -65,7 +65,7 @@ discard block |
||
65 | 65 | */ |
66 | 66 | protected function makeSureColumnHasLabel($column) |
67 | 67 | { |
68 | - if (! isset($column['label'])) { |
|
68 | + if (!isset($column['label'])) { |
|
69 | 69 | $column['label'] = mb_ucfirst($this->makeLabel($column['name'])); |
70 | 70 | } |
71 | 71 | |
@@ -146,7 +146,7 @@ discard block |
||
146 | 146 | */ |
147 | 147 | protected function makeSureColumnHasKey($column) |
148 | 148 | { |
149 | - if (! isset($column['key'])) { |
|
149 | + if (!isset($column['key'])) { |
|
150 | 150 | $column['key'] = str_replace('.', '__', $column['name']); |
151 | 151 | } |
152 | 152 | |
@@ -164,7 +164,7 @@ discard block |
||
164 | 164 | */ |
165 | 165 | protected function makeSureColumnHasWrapper($column) |
166 | 166 | { |
167 | - if (! isset($column['wrapper'])) { |
|
167 | + if (!isset($column['wrapper'])) { |
|
168 | 168 | $column['wrapper'] = []; |
169 | 169 | } |
170 | 170 | |
@@ -255,7 +255,7 @@ discard block |
||
255 | 255 | { |
256 | 256 | // if this is a relation type field and no corresponding model was specified, |
257 | 257 | // get it from the relation method defined in the main model |
258 | - if (isset($column['entity']) && $column['entity'] !== false && ! isset($column['model'])) { |
|
258 | + if (isset($column['entity']) && $column['entity'] !== false && !isset($column['model'])) { |
|
259 | 259 | $column['model'] = $this->getRelationModel($column['entity']); |
260 | 260 | } |
261 | 261 | |
@@ -276,8 +276,7 @@ discard block |
||
276 | 276 | $columnsArray = $this->columns(); |
277 | 277 | |
278 | 278 | if (array_key_exists($targetColumnName, $columnsArray)) { |
279 | - $targetColumnPosition = $before ? array_search($targetColumnName, array_keys($columnsArray)) : |
|
280 | - array_search($targetColumnName, array_keys($columnsArray)) + 1; |
|
279 | + $targetColumnPosition = $before ? array_search($targetColumnName, array_keys($columnsArray)) : array_search($targetColumnName, array_keys($columnsArray)) + 1; |
|
281 | 280 | |
282 | 281 | $element = array_pop($columnsArray); |
283 | 282 | $beginningPart = array_slice($columnsArray, 0, $targetColumnPosition, true); |
@@ -299,7 +298,7 @@ discard block |
||
299 | 298 | { |
300 | 299 | static $cache = []; |
301 | 300 | |
302 | - if (! $this->driverIsSql()) { |
|
301 | + if (!$this->driverIsSql()) { |
|
303 | 302 | return true; |
304 | 303 | } |
305 | 304 |
@@ -30,25 +30,25 @@ |
||
30 | 30 | $this->crud->allowAccess('show'); |
31 | 31 | $this->crud->setOperationSetting('setFromDb', true); |
32 | 32 | |
33 | - $this->crud->operation('show', function () { |
|
33 | + $this->crud->operation('show', function() { |
|
34 | 34 | $this->crud->loadDefaultOperationSettingsFromConfig(); |
35 | 35 | |
36 | - if (! method_exists($this, 'setupShowOperation')) { |
|
36 | + if (!method_exists($this, 'setupShowOperation')) { |
|
37 | 37 | $this->autoSetupShowOperation(); |
38 | 38 | } |
39 | 39 | }); |
40 | 40 | |
41 | - $this->crud->operation('list', function () { |
|
41 | + $this->crud->operation('list', function() { |
|
42 | 42 | $this->crud->addButton('line', 'show', 'view', 'crud::buttons.show', 'beginning'); |
43 | 43 | }); |
44 | 44 | |
45 | - $this->crud->operation(['create', 'update'], function () { |
|
45 | + $this->crud->operation(['create', 'update'], function() { |
|
46 | 46 | $this->crud->addSaveAction([ |
47 | 47 | 'name' => 'save_and_preview', |
48 | - 'visible' => function ($crud) { |
|
48 | + 'visible' => function($crud) { |
|
49 | 49 | return $crud->hasAccess('show'); |
50 | 50 | }, |
51 | - 'redirect' => function ($crud, $request, $itemId = null) { |
|
51 | + 'redirect' => function($crud, $request, $itemId = null) { |
|
52 | 52 | $itemId = $itemId ?: $request->input('id'); |
53 | 53 | $redirectUrl = $crud->route.'/'.$itemId.'/show'; |
54 | 54 | if ($request->has('_locale')) { |
@@ -117,7 +117,7 @@ discard block |
||
117 | 117 | */ |
118 | 118 | public function afterField($targetFieldName) |
119 | 119 | { |
120 | - $this->transformFields(function ($fields) use ($targetFieldName) { |
|
120 | + $this->transformFields(function($fields) use ($targetFieldName) { |
|
121 | 121 | return $this->moveField($fields, $targetFieldName, false); |
122 | 122 | }); |
123 | 123 | } |
@@ -129,7 +129,7 @@ discard block |
||
129 | 129 | */ |
130 | 130 | public function beforeField($targetFieldName) |
131 | 131 | { |
132 | - $this->transformFields(function ($fields) use ($targetFieldName) { |
|
132 | + $this->transformFields(function($fields) use ($targetFieldName) { |
|
133 | 133 | return $this->moveField($fields, $targetFieldName, true); |
134 | 134 | }); |
135 | 135 | } |
@@ -141,7 +141,7 @@ discard block |
||
141 | 141 | */ |
142 | 142 | public function makeFirstField() |
143 | 143 | { |
144 | - if (! $this->fields()) { |
|
144 | + if (!$this->fields()) { |
|
145 | 145 | return false; |
146 | 146 | } |
147 | 147 | |
@@ -156,7 +156,7 @@ discard block |
||
156 | 156 | */ |
157 | 157 | public function removeField($name) |
158 | 158 | { |
159 | - $this->transformFields(function ($fields) use ($name) { |
|
159 | + $this->transformFields(function($fields) use ($name) { |
|
160 | 160 | Arr::forget($fields, $name); |
161 | 161 | |
162 | 162 | return $fields; |
@@ -170,7 +170,7 @@ discard block |
||
170 | 170 | */ |
171 | 171 | public function removeFields($array_of_names) |
172 | 172 | { |
173 | - if (! empty($array_of_names)) { |
|
173 | + if (!empty($array_of_names)) { |
|
174 | 174 | foreach ($array_of_names as $name) { |
175 | 175 | $this->removeField($name); |
176 | 176 | } |
@@ -183,7 +183,7 @@ discard block |
||
183 | 183 | public function removeAllFields() |
184 | 184 | { |
185 | 185 | $current_fields = $this->getCleanStateFields(); |
186 | - if (! empty($current_fields)) { |
|
186 | + if (!empty($current_fields)) { |
|
187 | 187 | foreach ($current_fields as $field) { |
188 | 188 | $this->removeField($field['name']); |
189 | 189 | } |
@@ -280,7 +280,7 @@ discard block |
||
280 | 280 | $jsonCastables = ['array', 'object', 'json']; |
281 | 281 | $fieldCasting = $casted_attributes[$field['name']]; |
282 | 282 | |
283 | - if (in_array($fieldCasting, $jsonCastables) && isset($input[$field['name']]) && ! empty($input[$field['name']]) && ! is_array($input[$field['name']])) { |
|
283 | + if (in_array($fieldCasting, $jsonCastables) && isset($input[$field['name']]) && !empty($input[$field['name']]) && !is_array($input[$field['name']])) { |
|
284 | 284 | try { |
285 | 285 | $input[$field['name']] = json_decode($input[$field['name']]); |
286 | 286 | } catch (\Exception $e) { |
@@ -309,7 +309,7 @@ discard block |
||
309 | 309 | */ |
310 | 310 | public function orderFields($order) |
311 | 311 | { |
312 | - $this->transformFields(function ($fields) use ($order) { |
|
312 | + $this->transformFields(function($fields) use ($order) { |
|
313 | 313 | return $this->applyOrderToFields($fields, $order); |
314 | 314 | }); |
315 | 315 | } |
@@ -335,7 +335,7 @@ discard block |
||
335 | 335 | public function hasUploadFields() |
336 | 336 | { |
337 | 337 | $fields = $this->getCleanStateFields(); |
338 | - $upload_fields = Arr::where($fields, function ($value, $key) { |
|
338 | + $upload_fields = Arr::where($fields, function($value, $key) { |
|
339 | 339 | return isset($value['upload']) && $value['upload'] == true; |
340 | 340 | }); |
341 | 341 | |
@@ -398,7 +398,7 @@ discard block |
||
398 | 398 | $alreadyLoaded = $this->getLoadedFieldTypes(); |
399 | 399 | $type = $this->getFieldTypeWithNamespace($field); |
400 | 400 | |
401 | - if (! in_array($type, $this->getLoadedFieldTypes(), true)) { |
|
401 | + if (!in_array($type, $this->getLoadedFieldTypes(), true)) { |
|
402 | 402 | $alreadyLoaded[] = $type; |
403 | 403 | $this->setLoadedFieldTypes($alreadyLoaded); |
404 | 404 | |
@@ -439,7 +439,7 @@ discard block |
||
439 | 439 | */ |
440 | 440 | public function fieldTypeNotLoaded($field) |
441 | 441 | { |
442 | - return ! in_array($this->getFieldTypeWithNamespace($field), $this->getLoadedFieldTypes()); |
|
442 | + return !in_array($this->getFieldTypeWithNamespace($field), $this->getLoadedFieldTypes()); |
|
443 | 443 | } |
444 | 444 | |
445 | 445 | /** |
@@ -479,7 +479,7 @@ discard block |
||
479 | 479 | */ |
480 | 480 | public function hasFieldWhere($attribute, $value) |
481 | 481 | { |
482 | - $match = Arr::first($this->getCleanStateFields(), function ($field, $fieldKey) use ($attribute, $value) { |
|
482 | + $match = Arr::first($this->getCleanStateFields(), function($field, $fieldKey) use ($attribute, $value) { |
|
483 | 483 | return isset($field[$attribute]) && $field[$attribute] == $value; |
484 | 484 | }); |
485 | 485 | |
@@ -495,7 +495,7 @@ discard block |
||
495 | 495 | */ |
496 | 496 | public function firstFieldWhere($attribute, $value) |
497 | 497 | { |
498 | - return Arr::first($this->getCleanStateFields(), function ($field, $fieldKey) use ($attribute, $value) { |
|
498 | + return Arr::first($this->getCleanStateFields(), function($field, $fieldKey) use ($attribute, $value) { |
|
499 | 499 | return isset($field[$attribute]) && $field[$attribute] == $value; |
500 | 500 | }); |
501 | 501 | } |
@@ -13,14 +13,14 @@ discard block |
||
13 | 13 | */ |
14 | 14 | public function up() |
15 | 15 | { |
16 | - Schema::create('comments', function (Blueprint $table) { |
|
16 | + Schema::create('comments', function(Blueprint $table) { |
|
17 | 17 | $table->bigIncrements('id'); |
18 | 18 | $table->string('text')->nullable(); |
19 | 19 | $table->morphs('commentable'); |
20 | 20 | $table->timestamps(); |
21 | 21 | }); |
22 | 22 | |
23 | - Schema::create('recommendables', function (Blueprint $table) { |
|
23 | + Schema::create('recommendables', function(Blueprint $table) { |
|
24 | 24 | $table->bigIncrements('id'); |
25 | 25 | $table->string('text')->nullable(); |
26 | 26 | $table->morphs('recommendable'); |
@@ -28,7 +28,7 @@ discard block |
||
28 | 28 | $table->timestamps(); |
29 | 29 | }); |
30 | 30 | |
31 | - Schema::create('billables', function (Blueprint $table) { |
|
31 | + Schema::create('billables', function(Blueprint $table) { |
|
32 | 32 | $table->bigIncrements('id'); |
33 | 33 | $table->string('text')->nullable(); |
34 | 34 | $table->morphs('billable'); |
@@ -36,7 +36,7 @@ discard block |
||
36 | 36 | $table->timestamps(); |
37 | 37 | }); |
38 | 38 | |
39 | - Schema::create('articles_user', function (Blueprint $table) { |
|
39 | + Schema::create('articles_user', function(Blueprint $table) { |
|
40 | 40 | $table->increments('id'); |
41 | 41 | $table->integer('article_id')->unsigned(); |
42 | 42 | $table->integer('user_id')->unsigned(); |
@@ -46,26 +46,26 @@ discard block |
||
46 | 46 | $table->nullableTimestamps(); |
47 | 47 | }); |
48 | 48 | |
49 | - Schema::create('recommends', function (Blueprint $table) { |
|
49 | + Schema::create('recommends', function(Blueprint $table) { |
|
50 | 50 | $table->bigIncrements('id'); |
51 | 51 | $table->string('title')->nullable(); |
52 | 52 | $table->timestamps(); |
53 | 53 | }); |
54 | 54 | |
55 | - Schema::create('bills', function (Blueprint $table) { |
|
55 | + Schema::create('bills', function(Blueprint $table) { |
|
56 | 56 | $table->bigIncrements('id'); |
57 | 57 | $table->string('title')->nullable(); |
58 | 58 | $table->timestamps(); |
59 | 59 | }); |
60 | 60 | |
61 | - Schema::create('stars', function (Blueprint $table) { |
|
61 | + Schema::create('stars', function(Blueprint $table) { |
|
62 | 62 | $table->bigIncrements('id'); |
63 | 63 | $table->string('starable_type'); |
64 | 64 | $table->bigInteger('starable_id'); |
65 | 65 | $table->string('title')->nullable(); |
66 | 66 | }); |
67 | 67 | |
68 | - Schema::create('universes', function (Blueprint $table) { |
|
68 | + Schema::create('universes', function(Blueprint $table) { |
|
69 | 69 | $table->bigIncrements('id'); |
70 | 70 | $table->bigInteger('user_id'); |
71 | 71 | $table->string('title')->nullable(); |
@@ -73,13 +73,13 @@ discard block |
||
73 | 73 | $table->date('end_date')->nullable(); |
74 | 74 | }); |
75 | 75 | |
76 | - Schema::create('planets', function (Blueprint $table) { |
|
76 | + Schema::create('planets', function(Blueprint $table) { |
|
77 | 77 | $table->bigIncrements('id'); |
78 | 78 | $table->bigInteger('user_id')->nullable(); |
79 | 79 | $table->string('title')->nullable(); |
80 | 80 | }); |
81 | 81 | |
82 | - Schema::create('transactions', function (Blueprint $table) { |
|
82 | + Schema::create('transactions', function(Blueprint $table) { |
|
83 | 83 | $table->bigIncrements('id')->unique(); |
84 | 84 | $table->bigInteger('user_id'); |
85 | 85 | $table->string('label')->nullable(); |
@@ -87,29 +87,29 @@ discard block |
||
87 | 87 | $table->string('type'); |
88 | 88 | }); |
89 | 89 | |
90 | - Schema::create('planets_non_nullable', function (Blueprint $table) { |
|
90 | + Schema::create('planets_non_nullable', function(Blueprint $table) { |
|
91 | 91 | $table->bigIncrements('id'); |
92 | 92 | $table->bigInteger('user_id'); |
93 | 93 | $table->string('title')->nullable(); |
94 | 94 | }); |
95 | 95 | |
96 | - Schema::create('comets', function (Blueprint $table) { |
|
96 | + Schema::create('comets', function(Blueprint $table) { |
|
97 | 97 | $table->bigIncrements('id'); |
98 | 98 | $table->bigInteger('user_id')->default(0); |
99 | 99 | }); |
100 | 100 | |
101 | - Schema::create('bangs', function (Blueprint $table) { |
|
101 | + Schema::create('bangs', function(Blueprint $table) { |
|
102 | 102 | $table->bigIncrements('id'); |
103 | 103 | $table->string('name'); |
104 | 104 | }); |
105 | 105 | |
106 | - Schema::create('account_details_bang', function (Blueprint $table) { |
|
106 | + Schema::create('account_details_bang', function(Blueprint $table) { |
|
107 | 107 | $table->bigIncrements('id'); |
108 | 108 | $table->bigInteger('account_details_id'); |
109 | 109 | $table->bigInteger('bang_id'); |
110 | 110 | }); |
111 | 111 | |
112 | - Schema::create('account_details_bangs_pivot', function (Blueprint $table) { |
|
112 | + Schema::create('account_details_bangs_pivot', function(Blueprint $table) { |
|
113 | 113 | $table->bigIncrements('id'); |
114 | 114 | $table->bigInteger('account_details_id'); |
115 | 115 | $table->bigInteger('bang_id'); |
@@ -284,7 +284,7 @@ discard block |
||
284 | 284 | |
285 | 285 | public function testEnableDetailsRow() |
286 | 286 | { |
287 | - if (! backpack_pro()) { |
|
287 | + if (!backpack_pro()) { |
|
288 | 288 | $this->expectException(\Backpack\CRUD\app\Exceptions\BackpackProRequiredException::class); |
289 | 289 | } |
290 | 290 | |
@@ -319,7 +319,7 @@ discard block |
||
319 | 319 | |
320 | 320 | public function testEnableExportButtons() |
321 | 321 | { |
322 | - if (! backpack_pro()) { |
|
322 | + if (!backpack_pro()) { |
|
323 | 323 | $this->expectException(\Backpack\CRUD\app\Exceptions\BackpackProRequiredException::class); |
324 | 324 | } |
325 | 325 |
@@ -62,20 +62,20 @@ discard block |
||
62 | 62 | include_once __DIR__.'/macros.php'; |
63 | 63 | |
64 | 64 | // Bind the CrudPanel object to Laravel's service container |
65 | - $this->app->scoped('crud', function ($app) { |
|
65 | + $this->app->scoped('crud', function($app) { |
|
66 | 66 | return new CrudPanel(); |
67 | 67 | }); |
68 | 68 | |
69 | - $this->app->scoped('DatabaseSchema', function ($app) { |
|
69 | + $this->app->scoped('DatabaseSchema', function($app) { |
|
70 | 70 | return new DatabaseSchema(); |
71 | 71 | }); |
72 | 72 | |
73 | - $this->app->singleton('BackpackViewNamespaces', function ($app) { |
|
73 | + $this->app->singleton('BackpackViewNamespaces', function($app) { |
|
74 | 74 | return new ViewNamespaces(); |
75 | 75 | }); |
76 | 76 | |
77 | 77 | // Bind the widgets collection object to Laravel's service container |
78 | - $this->app->singleton('widgets', function ($app) { |
|
78 | + $this->app->singleton('widgets', function($app) { |
|
79 | 79 | return new Collection(); |
80 | 80 | }); |
81 | 81 | |
@@ -91,7 +91,7 @@ discard block |
||
91 | 91 | $middleware_key = config('backpack.base.middleware_key'); |
92 | 92 | $middleware_class = config('backpack.base.middleware_class'); |
93 | 93 | |
94 | - if (! is_array($middleware_class)) { |
|
94 | + if (!is_array($middleware_class)) { |
|
95 | 95 | $router->pushMiddlewareToGroup($middleware_key, $middleware_class); |
96 | 96 | |
97 | 97 | return; |
@@ -207,7 +207,7 @@ discard block |
||
207 | 207 | $operationConfigs = scandir(__DIR__.'/config/backpack/operations/'); |
208 | 208 | $operationConfigs = array_diff($operationConfigs, ['.', '..']); |
209 | 209 | |
210 | - if (! count($operationConfigs)) { |
|
210 | + if (!count($operationConfigs)) { |
|
211 | 211 | return; |
212 | 212 | } |
213 | 213 |
@@ -16,8 +16,8 @@ discard block |
||
16 | 16 | * - when true: `address[street]` |
17 | 17 | * - when false: `[address][street]` |
18 | 18 | */ |
19 | -if (! Str::hasMacro('dotsToSquareBrackets')) { |
|
20 | - Str::macro('dotsToSquareBrackets', function ($string, $ignore = [], $keyFirst = true) { |
|
19 | +if (!Str::hasMacro('dotsToSquareBrackets')) { |
|
20 | + Str::macro('dotsToSquareBrackets', function($string, $ignore = [], $keyFirst = true) { |
|
21 | 21 | $stringParts = explode('.', $string); |
22 | 22 | $result = ''; |
23 | 23 | |
@@ -38,8 +38,8 @@ discard block |
||
38 | 38 | * |
39 | 39 | * It will go to the given CrudController and get the setupRoutes() method on it. |
40 | 40 | */ |
41 | -if (! Route::hasMacro('crud')) { |
|
42 | - Route::macro('crud', function ($name, $controller) { |
|
41 | +if (!Route::hasMacro('crud')) { |
|
42 | + Route::macro('crud', function($name, $controller) { |
|
43 | 43 | // put together the route name prefix, |
44 | 44 | // as passed to the Route::group() statements |
45 | 45 | $routeName = ''; |
@@ -78,7 +78,7 @@ discard block |
||
78 | 78 | $this->closeProgressBlock(); |
79 | 79 | |
80 | 80 | // Optional commands |
81 | - if (! $this->option('no-interaction')) { |
|
81 | + if (!$this->option('no-interaction')) { |
|
82 | 82 | // Create users |
83 | 83 | $this->createUsers(); |
84 | 84 | |
@@ -153,7 +153,7 @@ discard block |
||
153 | 153 | |
154 | 154 | $this->deleteLines(3); |
155 | 155 | |
156 | - if (! $total) { |
|
156 | + if (!$total) { |
|
157 | 157 | $this->deleteLines(); |
158 | 158 | $this->note('Skipping creating an admin user.'); |
159 | 159 | $this->newLine(); |
@@ -162,14 +162,14 @@ discard block |
||
162 | 162 | |
163 | 163 | private function isEveryAddonInstalled() |
164 | 164 | { |
165 | - return collect($this->addons)->every(function ($addon) { |
|
165 | + return collect($this->addons)->every(function($addon) { |
|
166 | 166 | return file_exists($addon->path); |
167 | 167 | }); |
168 | 168 | } |
169 | 169 | |
170 | 170 | private function updateAddonsStatus() |
171 | 171 | { |
172 | - $this->addons = $this->addons->each(function (&$addon) { |
|
172 | + $this->addons = $this->addons->each(function(&$addon) { |
|
173 | 173 | $isInstalled = file_exists($addon->path); |
174 | 174 | $addon->status = $isInstalled ? 'installed' : 'not installed'; |
175 | 175 | $addon->statusColor = $isInstalled ? 'green' : 'yellow'; |
@@ -180,7 +180,7 @@ discard block |
||
180 | 180 | { |
181 | 181 | // map the addons |
182 | 182 | $this->addons = collect($this->addons) |
183 | - ->map(function ($class) { |
|
183 | + ->map(function($class) { |
|
184 | 184 | return (object) $class::$addon; |
185 | 185 | }); |
186 | 186 | |
@@ -199,15 +199,15 @@ discard block |
||
199 | 199 | |
200 | 200 | // Calculate the printed line count |
201 | 201 | $printedLines = $this->addons |
202 | - ->map(function ($e) { |
|
202 | + ->map(function($e) { |
|
203 | 203 | return count($e->description); |
204 | 204 | }) |
205 | - ->reduce(function ($sum, $item) { |
|
205 | + ->reduce(function($sum, $item) { |
|
206 | 206 | return $sum + $item + 2; |
207 | 207 | }, 0); |
208 | 208 | |
209 | 209 | $total = 0; |
210 | - while (! $this->isEveryAddonInstalled()) { |
|
210 | + while (!$this->isEveryAddonInstalled()) { |
|
211 | 211 | $input = (int) $this->listChoice('Would you like to install a premium Backpack add-on? <fg=gray>(enter option number)</>', $this->addons->toArray()); |
212 | 212 | |
213 | 213 | if ($input < 1 || $input > $this->addons->count()) { |