Skip to content

Commit a2a12da

Browse files
committed
Fix URLs and add overwrite option
1 parent 0559910 commit a2a12da

File tree

9 files changed

+186
-30
lines changed

9 files changed

+186
-30
lines changed

docs/man1/phpdraft.1

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.15.
2-
.TH PHPDRAFT: "1" "May 2020" "PHPDraft: 2.2-1-g5fc9180" "User Commands"
2+
.TH PHPDRAFT: "1" "July 2020" "PHPDraft: 2.2.1-2-g0559910" "User Commands"
33
.SH NAME
4-
PHPDraft: \- manual page for PHPDraft: 2.2-1-g5fc9180
4+
PHPDraft: \- manual page for PHPDraft: 2.2.1-2-g0559910
55
.SH DESCRIPTION
66
usage: phpdraft [<options>]
77
.PP

src/PHPDraft/Model/Elements/ElementStructureElement.php

+4
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ public function __toString(): string
5454

5555
public function string_value($flat = false)
5656
{
57+
if ($flat === true) {
58+
return $this->value;
59+
}
60+
5761
return $this->__toString();
5862
}
5963

src/PHPDraft/Model/HierarchyElement.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ public function parse(stdClass $object)
8585
*/
8686
public function get_href(): string
8787
{
88-
$seperator = '-';
89-
$prep = ($this->parent !== null) ? $this->parent->get_href() . $seperator : '';
88+
$separator = '-';
89+
$prep = ($this->parent !== null) ? $this->parent->get_href() . $separator : '';
9090

9191
return $prep . str_replace(' ', '-', strtolower($this->title));
9292
}

src/PHPDraft/Model/Transition.php

+2-4
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,7 @@ public function build_url(string $base_url = '', bool $clean = false): string
177177
continue;
178178
}
179179

180-
$urlvalue = $item->string_value();
181-
$vars[$item->key->value] = $urlvalue;
180+
$vars[$item->key->value] = $item->string_value(true);
182181
}
183182
}
184183
if ($this->parent->url_variables !== []) {
@@ -187,8 +186,7 @@ public function build_url(string $base_url = '', bool $clean = false): string
187186
continue;
188187
}
189188

190-
$urlvalue = $item->string_value();
191-
$vars[$item->key->value] = $urlvalue;
189+
$vars[$item->key->value] = $item->string_value(true);
192190
}
193191
}
194192
$url = $tpl->expand($vars);

src/PHPDraft/Out/HTML/default.js

+48-14
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,26 @@
1-
$(function () {
1+
function getParameters() {
2+
let result = {};
3+
let tmp = [];
4+
5+
if (location.search === '') { return result; }
6+
7+
location.search
8+
.substr(1)
9+
.split("&")
10+
.forEach(function (item) {tmp = item.split("="); result[tmp[0]] = decodeURIComponent(tmp[1]); });
11+
return result;
12+
};
13+
14+
function trigger_popover() {
215
$('[data-toggle="popover"]').popover({
316
html: true,
417
sanitize: false,
518
});
19+
}
20+
21+
function escapeRegExp(str) { return str.replace(/[-\[\]/{}()*+?.\\^$|]/g, "\\$&"); };
22+
23+
$(function () {
624
$('[data-toggle="tooltip"]').tooltip();
725
$('body').on('click', function (e) {
826
$('[data-toggle="popover"]').each(function () {
@@ -11,22 +29,38 @@ $(function () {
1129
}
1230
});
1331
});
14-
var selectedhost = $('h1.media-heading select.form-control').val();
15-
$('h1.media-heading select.form-control').on('change', function () {
16-
var html = $('body>div>div.row').html();
17-
var re = new RegExp(escapeRegExp(selectedhost), 'g');
18-
html = html.replace(re, $('h1.media-heading select.form-control').val());
19-
selectedhost = $('h1.media-heading select.form-control').val();
20-
$('body>div>div.row').html(html);
21-
$('[data-toggle="popover"]').popover();
32+
let contentDom = $('body>div>div.row');
33+
34+
let formControlDom = $('h1.media-heading select.form-control');
35+
let selectedhost = formControlDom.val();
36+
formControlDom.on('change', function () {
37+
let html = contentDom.html();
38+
let re = new RegExp(escapeRegExp(selectedhost), 'g');
39+
let new_html = html.replace(re, formControlDom.val());
40+
selectedhost = formControlDom.val();
41+
contentDom.html(new_html);
42+
trigger_popover();
2243
});
2344

24-
function escapeRegExp(str)
25-
{
26-
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
27-
};
2845
$('table:not(.table)').each(function () {
29-
$(this).addClass('table');});
46+
$(this).addClass('table');
47+
});
48+
49+
let parameters = getParameters();
50+
Object.keys(parameters).forEach(function(key) {
51+
let html = contentDom.html();
52+
53+
const regex = `<span class="attr">${key}</span>: <span class="value">[a-zA-Z0-9\ \\\-\/]*</span>`;
54+
let list_re = new RegExp(regex, 'g');
55+
56+
const curl_regex = `-H '${key}: [a-zA-Z0-9\ \\\-\/]*'`;
57+
let curl_re = new RegExp(curl_regex, 'g');
58+
59+
let new_html = html.replace(list_re, `<span class="attr">${key}</span>: <span class="value">${parameters[key]}</span>`)
60+
.replace(curl_re, `-H '${key}: ${parameters[key]}'`);
61+
contentDom.html(new_html);
62+
});
63+
trigger_popover();
3064
});
3165

3266
$('.collapse.request-card').on('shown.bs.collapse', function () {

src/PHPDraft/Out/HTML/default.phtml

+1-1
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,6 @@ if ($extras !== []):
330330
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.2.2/anchor.min.js" integrity="sha256-E4RlfxwyJVmkkk0szw7LYJxuPlp6evtPSBDlWHsYYL8=" crossorigin="anonymous"></script>
331331
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
332332
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
333-
<script><?= Minifier::minify_js(file_get_contents($this->find_include_file($this->template, 'js'), true)); ?></script>
333+
<script><?= file_get_contents($this->find_include_file($this->template, 'js'), true); ?></script>
334334
</body>
335335
</html>

src/PHPDraft/Out/HTML/material.js

+34-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,41 @@
22
* Created by smillernl on 18-5-17.
33
*/
44

5+
function getParameters() {
6+
let result = {};
7+
let tmp = [];
8+
9+
if (location.search === '') { return result; }
10+
11+
location.search
12+
.substr(1)
13+
.split("&")
14+
.forEach(function (item) {tmp = item.split("="); result[tmp[0]] = decodeURIComponent(tmp[1]); });
15+
return result;
16+
};
17+
518
anchors.options = {
619
placement: 'left',
720
visible: 'touch',
821
};
9-
anchors.add('.main-content h1, .main-content h2, .main-content h3, .main-content .card-header a');
22+
anchors.add('.main-content h1, .main-content h2, .main-content h3, .main-content .card-header a');
23+
24+
$(function () {
25+
$('[data-toggle="tooltip"]').tooltip();
26+
let contentDom = $('body>div>div.row');
27+
28+
let parameters = getParameters();
29+
Object.keys(parameters).forEach(function(key) {
30+
let html = contentDom.html();
31+
32+
const regex = `<span class="attr">${key}</span>: <span class="value">[a-zA-Z0-9\ \\\-\/]*</span>`;
33+
let list_re = new RegExp(regex, 'g');
34+
35+
const curl_regex = `-H '${key}: [a-zA-Z0-9\ \\\-\/]*'`;
36+
let curl_re = new RegExp(curl_regex, 'g');
37+
38+
let new_html = html.replace(list_re, `<span class="attr">${key}</span>: <span class="value">${parameters[key]}</span>`)
39+
.replace(curl_re, `-H '${key}: ${parameters[key]}'`);
40+
contentDom.html(new_html);
41+
});
42+
});

tests/statics/drafter/html/basic.html

+90-3
Original file line numberDiff line numberDiff line change
@@ -3127,11 +3127,11 @@ <h5 class="card-title">
31273127
data-placement="left"
31283128
data-toggle="popover"
31293129
data-html="true"
3130-
data-content="<textarea rows='8' cols='75'>curl -XPOST -H 'Authorization: Bearer {access_token}' 'https://owner-api.teslamotors.com/api/1/vehicles/1/command/sun_roof_control?state=%3Ctr%3E%3Ctd%3Eopen%3C%2Ftd%3E%3Ctd%3E%3Ccode%3Eenum%3C%2Fcode%3E%3C%2Ftd%3E%3Ctd%3E%3C%2Ftd%3E%3C%2Ftr%3E&amp;percent=50'</textarea>">
3130+
data-content="<textarea rows='8' cols='75'>curl -XPOST -H 'Authorization: Bearer {access_token}' 'https://owner-api.teslamotors.com/api/1/vehicles/1/command/sun_roof_control?state=open&amp;percent=50'</textarea>">
31313131
<span class="fas fa-copy"></span>
31323132
</a>
31333133
<h5>Example URI</h5>
3134-
<span class="base-url">https://owner-api.teslamotors.com</span><em>/api/1/vehicles/1/command/sun_roof_control?state=%3Ctr%3E%3Ctd%3Eopen%3C%2Ftd%3E%3Ctd%3E%3Ccode%3Eenum%3C%2Fcode%3E%3C%2Ftd%3E%3Ctd%3E%3C%2Ftd%3E%3C%2Ftr%3E&percent=50</em>
3134+
<span class="base-url">https://owner-api.teslamotors.com</span><em>/api/1/vehicles/1/command/sun_roof_control?state=open&percent=50</em>
31353135
<h5>Headers</h5>
31363136
<ul class="headers list-unstyled">
31373137
<li>
@@ -3459,6 +3459,93 @@ <h5>Headers</h5>
34593459
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.2.2/anchor.min.js" integrity="sha256-E4RlfxwyJVmkkk0szw7LYJxuPlp6evtPSBDlWHsYYL8=" crossorigin="anonymous"></script>
34603460
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
34613461
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
3462-
<script>$(function(){$('[data-toggle="popover"]').popover({html:!0,sanitize:!1});$('[data-toggle="tooltip"]').tooltip();$('body').on('click',function(e){$('[data-toggle="popover"]').each(function(){if(!$(this).is(e.target)&&$(this).has(e.target).length===0&&$('.popover').has(e.target).length===0){$(this).popover('hide')}})});var selectedhost=$('h1.media-heading select.form-control').val();$('h1.media-heading select.form-control').on('change',function(){var html=$('body>div>div.row').html();var re=new RegExp(escapeRegExp(selectedhost),'g');html=html.replace(re,$('h1.media-heading select.form-control').val());selectedhost=$('h1.media-heading select.form-control').val();$('body>div>div.row').html(html);$('[data-toggle="popover"]').popover()});function escapeRegExp(str){return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")};$('table:not(.table)').each(function(){$(this).addClass('table')})});$('.collapse.request-card').on('shown.bs.collapse',function(){$(this).parent().find('h6.request .fas.indicator').removeClass('fa-angle-up').addClass('fa-angle-down')}).on('hidden.bs.collapse',function(){$(this).parent().find('h6.request .fas.indicator').removeClass('fa-angle-down').addClass('fa-angle-up')});$('.collapse.response-card').on('shown.bs.collapse',function(){$(this).parent().find('h6.response .fas.indicator').removeClass('fa-angle-up').addClass("fa-angle-down")}).on('hidden.bs.collapse',function(){$(this).parent().find('h6.response .fas.indicator').removeClass('fa-angle-down').addClass("fa-angle-up")});$('pre.collapse.response-body').on('shown.bs.collapse',function(){$(this).parent().find('h6.response-body .fas.indicator').removeClass('fa-angle-up').addClass('fa-angle-down')}).on('hidden.bs.collapse',function(){$(this).parent().find('h6.response-body .fas.indicator').removeClass('fa-angle-down').addClass('fa-angle-up')});anchors.options={placement:'left',visible:'touch'};anchors.add('.main-content h1, .main-content h2, .main-content h3, .main-content .card-header a');</script>
3462+
<script>function getParameters() {
3463+
let result = {};
3464+
let tmp = [];
3465+
3466+
if (location.search === '') { return result; }
3467+
3468+
location.search
3469+
.substr(1)
3470+
.split("&")
3471+
.forEach(function (item) {tmp = item.split("="); result[tmp[0]] = decodeURIComponent(tmp[1]); });
3472+
return result;
3473+
};
3474+
3475+
function trigger_popover() {
3476+
$('[data-toggle="popover"]').popover({
3477+
html: true,
3478+
sanitize: false,
3479+
});
3480+
}
3481+
3482+
function escapeRegExp(str) { return str.replace(/[-\[\]/{}()*+?.\\^$|]/g, "\\$&"); };
3483+
3484+
$(function () {
3485+
$('[data-toggle="tooltip"]').tooltip();
3486+
$('body').on('click', function (e) {
3487+
$('[data-toggle="popover"]').each(function () {
3488+
if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) {
3489+
$(this).popover('hide');
3490+
}
3491+
});
3492+
});
3493+
let contentDom = $('body>div>div.row');
3494+
3495+
let formControlDom = $('h1.media-heading select.form-control');
3496+
let selectedhost = formControlDom.val();
3497+
formControlDom.on('change', function () {
3498+
let html = contentDom.html();
3499+
let re = new RegExp(escapeRegExp(selectedhost), 'g');
3500+
let new_html = html.replace(re, formControlDom.val());
3501+
selectedhost = formControlDom.val();
3502+
contentDom.html(new_html);
3503+
trigger_popover();
3504+
});
3505+
3506+
$('table:not(.table)').each(function () {
3507+
$(this).addClass('table');
3508+
});
3509+
3510+
let parameters = getParameters();
3511+
Object.keys(parameters).forEach(function(key) {
3512+
let html = contentDom.html();
3513+
3514+
const regex = `<span class="attr">${key}</span>: <span class="value">[a-zA-Z0-9\ \\\-\/]*</span>`;
3515+
let list_re = new RegExp(regex, 'g');
3516+
3517+
const curl_regex = `-H '${key}: [a-zA-Z0-9\ \\\-\/]*'`;
3518+
let curl_re = new RegExp(curl_regex, 'g');
3519+
3520+
let new_html = html.replace(list_re, `<span class="attr">${key}</span>: <span class="value">${parameters[key]}</span>`)
3521+
.replace(curl_re, `-H '${key}: ${parameters[key]}'`);
3522+
contentDom.html(new_html);
3523+
});
3524+
trigger_popover();
3525+
});
3526+
3527+
$('.collapse.request-card').on('shown.bs.collapse', function () {
3528+
$(this).parent().find('h6.request .fas.indicator').removeClass('fa-angle-up').addClass('fa-angle-down');
3529+
}).on('hidden.bs.collapse', function () {
3530+
$(this).parent().find('h6.request .fas.indicator').removeClass('fa-angle-down').addClass('fa-angle-up');
3531+
});
3532+
3533+
$('.collapse.response-card').on('shown.bs.collapse', function () {
3534+
$(this).parent().find('h6.response .fas.indicator').removeClass('fa-angle-up').addClass("fa-angle-down");
3535+
}).on('hidden.bs.collapse', function () {
3536+
$(this).parent().find('h6.response .fas.indicator').removeClass('fa-angle-down').addClass("fa-angle-up");
3537+
});
3538+
3539+
$('pre.collapse.response-body').on('shown.bs.collapse', function () {
3540+
$(this).parent().find('h6.response-body .fas.indicator').removeClass('fa-angle-up').addClass('fa-angle-down');
3541+
}).on('hidden.bs.collapse', function () {
3542+
$(this).parent().find('h6.response-body .fas.indicator').removeClass('fa-angle-down').addClass('fa-angle-up');
3543+
});
3544+
3545+
anchors.options = {
3546+
placement: 'left',
3547+
visible: 'touch',
3548+
};
3549+
anchors.add('.main-content h1, .main-content h2, .main-content h3, .main-content .card-header a');</script>
34633550
</body>
34643551
</html>

tests/statics/drafter/html/material.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -2381,7 +2381,7 @@ <h4 class="mdl-dialog__title">CURL Command</h4>
23812381
<textarea class="mdl-textfield__input" rows="7"
23822382
title="CURL Command"
23832383
autofocus
2384-
readonly>curl -XPOST -H 'Authorization: Bearer {access_token}' 'https://owner-api.teslamotors.com/api/1/vehicles/1/command/sun_roof_control?state=%3Ctr%3E%3Ctd%3Eopen%3C%2Ftd%3E%3Ctd%3E%3Ccode%3Eenum%3C%2Fcode%3E%3C%2Ftd%3E%3Ctd%3E%3C%2Ftd%3E%3C%2Ftr%3E&amp;percent=50'</textarea>
2384+
readonly>curl -XPOST -H 'Authorization: Bearer {access_token}' 'https://owner-api.teslamotors.com/api/1/vehicles/1/command/sun_roof_control?state=open&amp;percent=50'</textarea>
23852385
</div>
23862386
</div>
23872387
<div class="mdl-dialog__actions">
@@ -2392,7 +2392,7 @@ <h4 class="mdl-dialog__title">CURL Command</h4>
23922392
id="request-panel-SOME_ID">
23932393
<h5>Example URI</h5>
23942394
<span class="base-url">https://owner-api.teslamotors.com</span>
2395-
<em>/api/1/vehicles/1/command/sun_roof_control?state=%3Ctr%3E%3Ctd%3Eopen%3C%2Ftd%3E%3Ctd%3E%3Ccode%3Eenum%3C%2Fcode%3E%3C%2Ftd%3E%3Ctd%3E%3C%2Ftd%3E%3C%2Ftr%3E&percent=50</em>
2395+
<em>/api/1/vehicles/1/command/sun_roof_control?state=open&percent=50</em>
23962396
<h5>Headers</h5>
23972397
<ul class="headers mdl-list">
23982398
<li class="mdl-list__item">
@@ -2640,6 +2640,6 @@ <h5 class="response-body">application/json</h5>
26402640
<script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script>
26412641
<script>
26422642

2643-
anchors.options={placement:'left',visible:'touch'};anchors.add('.main-content h1, .main-content h2, .main-content h3, .main-content .card-header a');</script>
2643+
function getParameters(){let result={};let tmp=[];if(location.search===''){return result}location.search.substr(1).split("&").forEach(function(item){tmp=item.split("=");result[tmp[0]]=decodeURIComponent(tmp[1])});return result};anchors.options={placement:'left',visible:'touch'};anchors.add('.main-content h1, .main-content h2, .main-content h3, .main-content .card-header a');$(function(){$('[data-toggle="tooltip"]').tooltip();let contentDom=$('body>div>div.row');let parameters=getParameters();Object.keys(parameters).forEach(function(key){let html=contentDom.html();const regex=`<span class="attr">${key}</span>:<span class="value">[a-zA-Z0-9\ \\\-\/]*</span>`;let list_re=new RegExp(regex,'g');const curl_regex=`-H '${key}: [a-zA-Z0-9\ \\\-\/]*'`;let curl_re=new RegExp(curl_regex,'g');let new_html=html.replace(list_re,`<span class="attr">${key}</span>:<span class="value">${parameters[key]}</span>`).replace(curl_re,`-H '${key}: ${parameters[key]}'`);contentDom.html(new_html)})});</script>
26442644
</body>
26452645
</html>

0 commit comments

Comments
 (0)