Skip to content

Commit

Permalink
Fix URLs and add overwrite option
Browse files Browse the repository at this point in the history
  • Loading branch information
SMillerDev committed Jul 20, 2020
1 parent 0559910 commit a2a12da
Show file tree
Hide file tree
Showing 9 changed files with 186 additions and 30 deletions.
4 changes: 2 additions & 2 deletions docs/man1/phpdraft.1
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.15.
.TH PHPDRAFT: "1" "May 2020" "PHPDraft: 2.2-1-g5fc9180" "User Commands"
.TH PHPDRAFT: "1" "July 2020" "PHPDraft: 2.2.1-2-g0559910" "User Commands"
.SH NAME
PHPDraft: \- manual page for PHPDraft: 2.2-1-g5fc9180
PHPDraft: \- manual page for PHPDraft: 2.2.1-2-g0559910
.SH DESCRIPTION
usage: phpdraft [<options>]
.PP
Expand Down
4 changes: 4 additions & 0 deletions src/PHPDraft/Model/Elements/ElementStructureElement.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ public function __toString(): string

public function string_value($flat = false)
{
if ($flat === true) {
return $this->value;
}

return $this->__toString();
}

Expand Down
4 changes: 2 additions & 2 deletions src/PHPDraft/Model/HierarchyElement.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,8 @@ public function parse(stdClass $object)
*/
public function get_href(): string
{
$seperator = '-';
$prep = ($this->parent !== null) ? $this->parent->get_href() . $seperator : '';
$separator = '-';
$prep = ($this->parent !== null) ? $this->parent->get_href() . $separator : '';

return $prep . str_replace(' ', '-', strtolower($this->title));
}
Expand Down
6 changes: 2 additions & 4 deletions src/PHPDraft/Model/Transition.php
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,7 @@ public function build_url(string $base_url = '', bool $clean = false): string
continue;
}

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

$urlvalue = $item->string_value();
$vars[$item->key->value] = $urlvalue;
$vars[$item->key->value] = $item->string_value(true);
}
}
$url = $tpl->expand($vars);
Expand Down
62 changes: 48 additions & 14 deletions src/PHPDraft/Out/HTML/default.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,26 @@
$(function () {
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;
};

function trigger_popover() {
$('[data-toggle="popover"]').popover({
html: true,
sanitize: false,
});
}

function escapeRegExp(str) { return str.replace(/[-\[\]/{}()*+?.\\^$|]/g, "\\$&"); };

$(function () {
$('[data-toggle="tooltip"]').tooltip();
$('body').on('click', function (e) {
$('[data-toggle="popover"]').each(function () {
Expand All @@ -11,22 +29,38 @@ $(function () {
}
});
});
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();
let contentDom = $('body>div>div.row');

let formControlDom = $('h1.media-heading select.form-control');
let selectedhost = formControlDom.val();
formControlDom.on('change', function () {
let html = contentDom.html();
let re = new RegExp(escapeRegExp(selectedhost), 'g');
let new_html = html.replace(re, formControlDom.val());
selectedhost = formControlDom.val();
contentDom.html(new_html);
trigger_popover();
});

function escapeRegExp(str)
{
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
};
$('table:not(.table)').each(function () {
$(this).addClass('table');});
$(this).addClass('table');
});

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);
});
trigger_popover();
});

$('.collapse.request-card').on('shown.bs.collapse', function () {
Expand Down
2 changes: 1 addition & 1 deletion src/PHPDraft/Out/HTML/default.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,6 @@ if ($extras !== []):
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.2.2/anchor.min.js" integrity="sha256-E4RlfxwyJVmkkk0szw7LYJxuPlp6evtPSBDlWHsYYL8=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
<script><?= Minifier::minify_js(file_get_contents($this->find_include_file($this->template, 'js'), true)); ?></script>
<script><?= file_get_contents($this->find_include_file($this->template, 'js'), true); ?></script>
</body>
</html>
35 changes: 34 additions & 1 deletion src/PHPDraft/Out/HTML/material.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,41 @@
* Created by smillernl on 18-5-17.
*/

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');
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);
});
});
93 changes: 90 additions & 3 deletions tests/statics/drafter/html/basic.html
Original file line number Diff line number Diff line change
Expand Up @@ -3127,11 +3127,11 @@ <h5 class="card-title">
data-placement="left"
data-toggle="popover"
data-html="true"
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>">
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>">
<span class="fas fa-copy"></span>
</a>
<h5>Example URI</h5>
<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>
<span class="base-url">https://owner-api.teslamotors.com</span><em>/api/1/vehicles/1/command/sun_roof_control?state=open&percent=50</em>
<h5>Headers</h5>
<ul class="headers list-unstyled">
<li>
Expand Down Expand Up @@ -3459,6 +3459,93 @@ <h5>Headers</h5>
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.2.2/anchor.min.js" integrity="sha256-E4RlfxwyJVmkkk0szw7LYJxuPlp6evtPSBDlWHsYYL8=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
<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>
<script>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;
};

function trigger_popover() {
$('[data-toggle="popover"]').popover({
html: true,
sanitize: false,
});
}

function escapeRegExp(str) { return str.replace(/[-\[\]/{}()*+?.\\^$|]/g, "\\$&"); };

$(function () {
$('[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');
}
});
});
let contentDom = $('body>div>div.row');

let formControlDom = $('h1.media-heading select.form-control');
let selectedhost = formControlDom.val();
formControlDom.on('change', function () {
let html = contentDom.html();
let re = new RegExp(escapeRegExp(selectedhost), 'g');
let new_html = html.replace(re, formControlDom.val());
selectedhost = formControlDom.val();
contentDom.html(new_html);
trigger_popover();
});

$('table:not(.table)').each(function () {
$(this).addClass('table');
});

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);
});
trigger_popover();
});

$('.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>
</body>
</html>
6 changes: 3 additions & 3 deletions tests/statics/drafter/html/material.html
Original file line number Diff line number Diff line change
Expand Up @@ -2381,7 +2381,7 @@ <h4 class="mdl-dialog__title">CURL Command</h4>
<textarea class="mdl-textfield__input" rows="7"
title="CURL Command"
autofocus
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>
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>
</div>
</div>
<div class="mdl-dialog__actions">
Expand All @@ -2392,7 +2392,7 @@ <h4 class="mdl-dialog__title">CURL Command</h4>
id="request-panel-SOME_ID">
<h5>Example URI</h5>
<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>
<em>/api/1/vehicles/1/command/sun_roof_control?state=open&percent=50</em>
<h5>Headers</h5>
<ul class="headers mdl-list">
<li class="mdl-list__item">
Expand Down Expand Up @@ -2640,6 +2640,6 @@ <h5 class="response-body">application/json</h5>
<script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script>
<script>

anchors.options={placement:'left',visible:'touch'};anchors.add('.main-content h1, .main-content h2, .main-content h3, .main-content .card-header a');</script>
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>
</body>
</html>

0 comments on commit a2a12da

Please sign in to comment.