Skip to content

Commit 3f00ae9

Browse files
author
Andrey Helldar
authored
Merge pull request #16 from andrey-helldar/compiles-json
Compiles json
2 parents 5103bd5 + 530d30f commit 3f00ae9

File tree

10 files changed

+261
-164
lines changed

10 files changed

+261
-164
lines changed

.github/workflows/phpunit.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
- name: Install dependencies
3131
run: |
3232
composer require laravel/framework:^${{ matrix.laravel }}
33-
composer update --prefer-stable --prefer-dist --no-progress --no-interaction --no-suggest
33+
composer update --prefer-stable --prefer-dist --no-progress --no-interaction
3434
3535
- name: Execute tests
3636
run: |

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ If your using autodiscovery in Laravel, it should just work.
3030
Otherwise - add to your `config/app.php` providers array to where all your package providers are (before your app's providers):
3131

3232
```php
33-
PrettyRoutes\ServiceProvider::class,
33+
PrettyRoutes\AppServiceProvider::class,
3434
```
3535

3636
By default, the package exposes a `/routes` url. If you wish to configure this, publish the config.
3737

3838
```bash
39-
php artisan vendor:publish --provider="PrettyRoutes\ServiceProvider"
39+
php artisan vendor:publish --provider="PrettyRoutes\AppServiceProvider"
4040
```
4141

4242
If accessing `/routes` isn't working, ensure that you've included the provider within the same area as all your package providers (before all your app's providers) to ensure it takes priority.

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@
5252
"extra": {
5353
"laravel": {
5454
"providers": [
55-
"PrettyRoutes\\ServiceProvider"
55+
"PrettyRoutes\\BladeServiceProvider",
56+
"PrettyRoutes\\AppServiceProvider"
5657
]
5758
}
5859
}

resources/views/layout.blade.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<!DOCTYPE html>
2+
<html lang="{{ app()->getLocale() }}">
3+
<head>
4+
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
5+
6+
<title>{{ trans('Routes list') }} | {{ config('app.name') }}</title>
7+
8+
<link
9+
rel="shortcut icon"
10+
type="image/svg"
11+
sizes="16x16"
12+
href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzk0Ljk3MSAzOTQuOTcxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzOTQuOTcxIDM5NC45NzE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxnPg0KCQk8Zz4NCgkJCTxwYXRoIGQ9Ik01Ni40MjQsMTQ2LjI4NmMtMjguMjc3LDAtNTEuMiwyMi45MjMtNTEuMiw1MS4yczIyLjkyMyw1MS4yLDUxLjIsNTEuMnM1MS4yLTIyLjkyMyw1MS4yLTUxLjINCgkJCQlTODQuNzAxLDE0Ni4yODYsNTYuNDI0LDE0Ni4yODZ6IE01Ni40MjQsMjI3Ljc4OEw1Ni40MjQsMjI3Ljc4OGMtMTYuNzM1LDAtMzAuMzAyLTEzLjU2Ny0zMC4zMDItMzAuMzAyDQoJCQkJczEzLjU2Ny0zMC4zMDIsMzAuMzAyLTMwLjMwMmMxNi43MzUsMCwzMC4zMDIsMTMuNTY3LDMwLjMwMiwzMC4zMDJTNzMuMTYsMjI3Ljc4OCw1Ni40MjQsMjI3Ljc4OHoiLz4NCgkJCTxwYXRoIGQ9Ik0zNzkuMjk4LDE4Ny4wMzdIMTQzLjE1MWMtNS43NzEsMC0xMC40NDksNC42NzgtMTAuNDQ5LDEwLjQ0OXM0LjY3OCwxMC40NDksMTAuNDQ5LDEwLjQ0OWgyMzYuMTQ3DQoJCQkJYzUuNzcxLDAsMTAuNDQ5LTQuNjc4LDEwLjQ0OS0xMC40NDlTMzg1LjA2OSwxODcuMDM3LDM3OS4yOTgsMTg3LjAzN3oiLz4NCgkJCTxwYXRoIGQ9Ik01Ni40MjQsMGMtMjguMjc3LDAtNTEuMiwyMi45MjMtNTEuMiw1MS4yczIyLjkyMyw1MS4yLDUxLjIsNTEuMnM1MS4yLTIyLjkyMyw1MS4yLTUxLjJTODQuNzAxLDAsNTYuNDI0LDB6DQoJCQkJIE01Ni40MjQsODEuNTAyYy0xNi43MzUsMC0zMC4zMDItMTMuNTY3LTMwLjMwMi0zMC4zMDJzMTMuNTY3LTMwLjMwMiwzMC4zMDItMzAuMzAyUzg2LjcyNiwzNC40NjUsODYuNzI2LDUxLjINCgkJCQlTNzMuMTYsODEuNTAyLDU2LjQyNCw4MS41MDJ6Ii8+DQoJCQk8cGF0aCBkPSJNMTQzLjE1MSw2MS42NDloMjM2LjE0N2M1Ljc3MSwwLDEwLjQ0OS00LjY3OCwxMC40NDktMTAuNDQ5cy00LjY3OC0xMC40NDktMTAuNDQ5LTEwLjQ0OUgxNDMuMTUxDQoJCQkJYy01Ljc3MSwwLTEwLjQ0OSw0LjY3OC0xMC40NDksMTAuNDQ5UzEzNy4zOCw2MS42NDksMTQzLjE1MSw2MS42NDl6Ii8+DQoJCQk8cGF0aCBkPSJNNTYuNDI0LDI5Mi41NzFjLTI4LjI3NywwLTUxLjIsMjIuOTIzLTUxLjIsNTEuMmMwLDI4LjI3NywyMi45MjMsNTEuMiw1MS4yLDUxLjJzNTEuMi0yMi45MjMsNTEuMi01MS4yDQoJCQkJQzEwNy42MjQsMzE1LjQ5NCw4NC43MDEsMjkyLjU3MSw1Ni40MjQsMjkyLjU3MXogTTg2LjcyNiwzNDMuNzcxYzAsMTYuNzM1LTEzLjU2NywzMC4zMDItMzAuMzAyLDMwLjMwMnYwDQoJCQkJYy0xNi43MzUsMC0zMC4zMDItMTMuNTY3LTMwLjMwMi0zMC4zMDJjMC0xNi43MzUsMTMuNTY3LTMwLjMwMiwzMC4zMDItMzAuMzAyUzg2LjcyNiwzMjcuMDM2LDg2LjcyNiwzNDMuNzcxTDg2LjcyNiwzNDMuNzcxeiIvPg0KCQkJPHBhdGggZD0iTTM3OS4yOTgsMzMzLjMyMkgxNDMuMTUxYy01Ljc3MSwwLTEwLjQ0OSw0LjY3OC0xMC40NDksMTAuNDQ5czQuNjc4LDEwLjQ0OSwxMC40NDksMTAuNDQ5aDIzNi4xNDcNCgkJCQljNS43NzEsMCwxMC40NDktNC42NzgsMTAuNDQ5LTEwLjQ0OVMzODUuMDY5LDMzMy4zMjIsMzc5LjI5OCwzMzMuMzIyeiIvPg0KCQk8L2c+DQoJPC9nPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPC9zdmc+DQo=">
13+
14+
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
15+
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
16+
17+
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
18+
<link href="https://cdn.jsdelivr.net/npm/@mdi/[email protected]/css/materialdesignicons.min.css" rel="stylesheet">
19+
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.css" rel="stylesheet">
20+
21+
@stack('styles')
22+
</head>
23+
<body>
24+
25+
<div id="app">
26+
@include('pretty-routes::vue')
27+
</div>
28+
29+
@include('pretty-routes::scripts')
30+
31+
</body>
32+
</html>

resources/views/routes.blade.php renamed to resources/views/scripts.blade.php

Lines changed: 1 addition & 155 deletions
Original file line numberDiff line numberDiff line change
@@ -1,154 +1,3 @@
1-
<!DOCTYPE html>
2-
<html lang="{{ app()->getLocale() }}">
3-
<head>
4-
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
5-
6-
<title>{{ trans('Routes list') }} | {{ config('app.name') }}</title>
7-
8-
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
9-
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
10-
11-
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
12-
<link href="https://cdn.jsdelivr.net/npm/@mdi/[email protected]/css/materialdesignicons.min.css" rel="stylesheet">
13-
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.css" rel="stylesheet">
14-
15-
<style>
16-
.spaced { margin: 2px; }
17-
18-
.deprecated { text-decoration: line-through; }
19-
20-
.link:hover { text-decoration: underline; cursor: pointer; }
21-
</style>
22-
</head>
23-
<body>
24-
25-
<div id="app">
26-
<v-app>
27-
<v-app-bar app>
28-
<v-toolbar-title>
29-
<span
30-
v-text="trans('title')"
31-
:class="{link: filterIsFull()}"
32-
@click="resetFilters"
33-
></span> (<span v-text="countRoutes"></span>)
34-
</v-toolbar-title>
35-
36-
<v-spacer v-if="hasDeprecated"></v-spacer>
37-
<v-select
38-
v-if="hasDeprecated"
39-
v-model="filter.deprecated"
40-
:label="trans('show')"
41-
:items="items.deprecated"
42-
item-value="key"
43-
item-text="value"
44-
hide-details="true"
45-
></v-select>
46-
47-
<v-spacer v-if="hasModules"></v-spacer>
48-
<v-select
49-
v-if="hasModules"
50-
v-model="filter.modules"
51-
:label="trans('module')"
52-
:items="filteredModules"
53-
item-value="key"
54-
item-text="value"
55-
hide-details="true"
56-
></v-select>
57-
58-
<v-spacer></v-spacer>
59-
<v-text-field
60-
v-model="filter.value"
61-
:label="trans('search')"
62-
append-icon="mdi-magnify"
63-
hide-details
64-
clearable
65-
></v-text-field>
66-
67-
<v-spacer></v-spacer>
68-
<v-btn icon @click="openGitHubRepository">
69-
<v-avatar size="36">
70-
<img
71-
:src="repository.icon"
72-
alt="Github Project Page"
73-
>
74-
</v-avatar>
75-
</v-btn>
76-
</v-app-bar>
77-
78-
<v-main>
79-
<v-data-table
80-
:headers="filteredHeaders"
81-
:items="filteredRoutes"
82-
:items-per-page="itemsPerPage"
83-
:search="filter.value"
84-
:loading="loading"
85-
:loading-text="trans('loading')"
86-
:no-data-text="trans('noDataText')"
87-
:no-results-text="trans('noResultsText')"
88-
:footer-props="{
89-
itemsPerPageAllText: trans('itemsPerPageAllText'),
90-
itemsPerPageText: trans('itemsPerPageText'),
91-
pageText: trans('pageText')
92-
}"
93-
ref="routes"
94-
multi-sort
95-
>
96-
<template v-slot:item.methods="{ item }">
97-
<v-chip
98-
v-for="badge in item.methods"
99-
v-text="badge.toUpperCase()"
100-
:color="badges[badge]"
101-
text-color="white"
102-
label
103-
small
104-
class="spaced"
105-
@click="setSearch(badge)"
106-
></v-chip>
107-
</template>
108-
109-
<template v-slot:item.path="{ item }">
110-
<span v-html="highlightParameters(item.path)"></span>
111-
</template>
112-
113-
<template v-slot:item.module="{ item }">
114-
<v-chip
115-
v-if="item.module !== null"
116-
v-text="item.module"
117-
label
118-
small
119-
class="spaced"
120-
@click="setModule(item.module)"
121-
></v-chip>
122-
</template>
123-
124-
<template v-slot:item.action="{ item }">
125-
<v-tooltip top v-if="item.deprecated">
126-
<template v-slot:activator="{ on }">
127-
<span
128-
v-on="on"
129-
v-html="highlightMethod(item.action)"
130-
class="deprecated"
131-
></span>
132-
</template>
133-
<span v-text="trans('deprecated')"></span>
134-
</v-tooltip>
135-
136-
<span v-else v-html="highlightMethod(item.action)"></span>
137-
</template>
138-
139-
<template v-slot:item.middlewares="{ item }">
140-
<span
141-
v-for="(middleware, key) in item.middlewares"
142-
v-text="`${middleware}${key !== item.middlewares.length - 1 ? ', ' : ''}`"
143-
@click="setSearch(middleware)"
144-
class="link"
145-
></span>
146-
</template>
147-
</v-data-table>
148-
</v-main>
149-
</v-app>
150-
</div>
151-
1521
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
1532
<script src="https://cdn.jsdelivr.net/npm/vuetify"></script>
1543
<script src="https://cdn.jsdelivr.net/npm/axios"></script>
@@ -181,7 +30,7 @@ class="link"
18130
};
18231
18332
const colorScheme = () => {
184-
switch ({!! json_encode(config('pretty-routes.color_scheme', 'auto')) !!}) {
33+
switch (@json(config('pretty-routes.color_scheme', 'auto'))) {
18534
case 'dark':
18635
return true;
18736
case 'light':
@@ -415,6 +264,3 @@ class="link"
415264
}
416265
});
417266
</script>
418-
419-
</body>
420-
</html>

resources/views/vue.blade.php

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
@push('styles')
2+
<style>
3+
.spaced { margin: 2px; }
4+
5+
.deprecated { text-decoration: line-through; }
6+
7+
.link:hover { text-decoration: underline; cursor: pointer; }
8+
</style>
9+
@endpush
10+
11+
<v-app>
12+
<v-app-bar app>
13+
<v-toolbar-title>
14+
<span
15+
v-text="trans('title')"
16+
:class="{link: filterIsFull()}"
17+
@click="resetFilters"
18+
></span> (<span v-text="countRoutes"></span>)
19+
</v-toolbar-title>
20+
21+
<v-spacer v-if="hasDeprecated"></v-spacer>
22+
<v-select
23+
v-if="hasDeprecated"
24+
v-model="filter.deprecated"
25+
:label="trans('show')"
26+
:items="items.deprecated"
27+
item-value="key"
28+
item-text="value"
29+
hide-details="true"
30+
></v-select>
31+
32+
<v-spacer v-if="hasModules"></v-spacer>
33+
<v-select
34+
v-if="hasModules"
35+
v-model="filter.modules"
36+
:label="trans('module')"
37+
:items="filteredModules"
38+
item-value="key"
39+
item-text="value"
40+
hide-details="true"
41+
></v-select>
42+
43+
<v-spacer></v-spacer>
44+
<v-text-field
45+
v-model="filter.value"
46+
:label="trans('search')"
47+
append-icon="mdi-magnify"
48+
hide-details
49+
clearable
50+
></v-text-field>
51+
52+
<v-spacer></v-spacer>
53+
<v-btn icon @click="openGitHubRepository">
54+
<v-avatar size="36">
55+
<img
56+
:src="repository.icon"
57+
alt="Github Project Page"
58+
>
59+
</v-avatar>
60+
</v-btn>
61+
</v-app-bar>
62+
63+
<v-main>
64+
<v-data-table
65+
:headers="filteredHeaders"
66+
:items="filteredRoutes"
67+
:items-per-page="itemsPerPage"
68+
:search="filter.value"
69+
:loading="loading"
70+
:loading-text="trans('loading')"
71+
:no-data-text="trans('noDataText')"
72+
:no-results-text="trans('noResultsText')"
73+
:footer-props="{
74+
itemsPerPageAllText: trans('itemsPerPageAllText'),
75+
itemsPerPageText: trans('itemsPerPageText'),
76+
pageText: trans('pageText')
77+
}"
78+
ref="routes"
79+
multi-sort
80+
>
81+
<template v-slot:item.methods="{ item }">
82+
<v-chip
83+
v-for="badge in item.methods"
84+
v-text="badge.toUpperCase()"
85+
:color="badges[badge]"
86+
text-color="white"
87+
label
88+
small
89+
class="spaced"
90+
@click="setSearch(badge)"
91+
></v-chip>
92+
</template>
93+
94+
<template v-slot:item.path="{ item }">
95+
<span v-html="highlightParameters(item.path)"></span>
96+
</template>
97+
98+
<template v-slot:item.module="{ item }">
99+
<v-chip
100+
v-if="item.module !== null"
101+
v-text="item.module"
102+
label
103+
small
104+
class="spaced"
105+
@click="setModule(item.module)"
106+
></v-chip>
107+
</template>
108+
109+
<template v-slot:item.action="{ item }">
110+
<v-tooltip top v-if="item.deprecated">
111+
<template v-slot:activator="{ on }">
112+
<span
113+
v-on="on"
114+
v-html="highlightMethod(item.action)"
115+
class="deprecated"
116+
></span>
117+
</template>
118+
<span v-text="trans('deprecated')"></span>
119+
</v-tooltip>
120+
121+
<span v-else v-html="highlightMethod(item.action)"></span>
122+
</template>
123+
124+
<template v-slot:item.middlewares="{ item }">
125+
<span
126+
v-for="(middleware, key) in item.middlewares"
127+
v-text="`${middleware}${key !== item.middlewares.length - 1 ? ', ' : ''}`"
128+
@click="setSearch(middleware)"
129+
class="link"
130+
></span>
131+
</template>
132+
</v-data-table>
133+
</v-main>
134+
</v-app>

src/ServiceProvider.php renamed to src/AppServiceProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use Illuminate\Support\ServiceProvider as BaseServiceProvider;
66

7-
class ServiceProvider extends BaseServiceProvider
7+
class AppServiceProvider extends BaseServiceProvider
88
{
99
public function register()
1010
{

0 commit comments

Comments
 (0)