fix: Migrating project to the new Gitea Host.
10
.gitignore
vendored
Executable file
@ -0,0 +1,10 @@
|
||||
Data
|
||||
TMP
|
||||
PHP/WMarkDown.Secrets.php
|
||||
Public/data
|
||||
Public/es
|
||||
Public/index.html
|
||||
Public/dev
|
||||
JSON/html.files.json
|
||||
WMarkDown.apache2.conf
|
||||
|
152
ArtBook/capaswmarkdown.svg
Executable file
@ -0,0 +1,152 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="210mm"
|
||||
height="297mm"
|
||||
viewBox="0 0 210 297"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0.2-2 (e86c870879, 2021-01-15)"
|
||||
sodipodi:docname="dibujo-1.svg">
|
||||
<defs
|
||||
id="defs2" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.35"
|
||||
inkscape:cx="461.62639"
|
||||
inkscape:cy="560"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1298"
|
||||
inkscape:window-height="1040"
|
||||
inkscape:window-x="208"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="negro"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
style="display:none"
|
||||
sodipodi:insensitive="true">
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer5"
|
||||
inkscape:label="flecha">
|
||||
<path
|
||||
d="M 1790,1225 V 440 h -97 -98 l 223,-222 222,-223 222,223 223,222 h -93 -92 v 785 785 h -255 -255 z"
|
||||
id="path841"
|
||||
transform="matrix(0.03527778,0,0,-0.03527778,88.459024,169.9255)" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="diagonal abajo">
|
||||
<path
|
||||
d="M 510,1768 V 1526 L 700,780 C 805,370 893,27 896,18 901,2 916,0 1021,0 h 119 v 382 c 0,375 0,384 -25,473 -55,203 -295,1137 -295,1150 0,3 -70,5 -155,5 H 510 Z"
|
||||
id="path837"
|
||||
transform="matrix(0.03527778,0,0,-0.03527778,88.459024,169.9255)" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="diagonal arriba">
|
||||
<path
|
||||
d="m 1462,1968 c -13,-53 -69,-269 -162,-628 -39,-151 -89,-346 -111,-433 L 1150,749 V 374 0 h 119 119 l 21,88 c 13,48 101,393 197,766 l 174,680 v 238 238 h -154 -154 z"
|
||||
id="path839"
|
||||
transform="matrix(0.03527778,0,0,-0.03527778,88.459024,169.9255)" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="vertical"
|
||||
style="display:inline">
|
||||
<path
|
||||
d="M 0,1005 V 0 H 250 500 V 1005 2010 H 250 0 Z"
|
||||
id="path835"
|
||||
transform="matrix(0.03527778,0,0,-0.03527778,88.459024,169.9255)" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.03527778,0,0,-0.03527778,88.459025,169.9255)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g843" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="color"
|
||||
inkscape:groupmode="layer"
|
||||
id="g932"
|
||||
style="display:inline"
|
||||
sodipodi:insensitive="true">
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="g902"
|
||||
inkscape:label="flecha">
|
||||
<path
|
||||
d="M 1790,1225 V 440 h -97 -98 l 223,-222 222,-223 222,223 223,222 h -93 -92 v 785 785 h -255 -255 z"
|
||||
id="path900"
|
||||
transform="matrix(0.03527778,0,0,-0.03527778,88.459024,169.9255)"
|
||||
style="fill:#db4a3d;fill-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="g906"
|
||||
inkscape:label="diagonal abajo">
|
||||
<path
|
||||
d="M 510,1768 V 1526 L 700,780 C 805,370 893,27 896,18 901,2 916,0 1021,0 h 119 v 382 c 0,375 0,384 -25,473 -55,203 -295,1137 -295,1150 0,3 -70,5 -155,5 H 510 Z"
|
||||
id="path904"
|
||||
transform="matrix(0.03527778,0,0,-0.03527778,88.459024,169.9255)"
|
||||
style="fill:#db4a3d;fill-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="g910"
|
||||
inkscape:label="diagonal arriba">
|
||||
<path
|
||||
d="m 1462,1968 c -13,-53 -69,-269 -162,-628 -39,-151 -89,-346 -111,-433 L 1150,749 V 374 0 h 119 119 l 21,88 c 13,48 101,393 197,766 l 174,680 v 238 238 h -154 -154 z"
|
||||
id="path908"
|
||||
transform="matrix(0.03527778,0,0,-0.03527778,88.459024,169.9255)"
|
||||
style="fill:#269b57;fill-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="g914"
|
||||
inkscape:label="vertical"
|
||||
style="display:inline">
|
||||
<path
|
||||
d="M 0,1005 V 0 H 250 500 V 1005 2010 H 250 0 Z"
|
||||
id="path912"
|
||||
transform="matrix(0.03527778,0,0,-0.03527778,88.459024,169.9255)"
|
||||
style="fill:#269b57;fill-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.03527778,0,0,-0.03527778,88.459025,169.9255)"
|
||||
fill="#000000"
|
||||
stroke="none"
|
||||
id="g916" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.1 KiB |
BIN
ArtBook/wmarkdown.png
Executable file
After Width: | Height: | Size: 6.8 KiB |
22
ArtBook/wmarkdown.svg
Executable file
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="248.494382pt" height="201.494382pt" viewBox="0 0 248.494382 201.494382"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.12, written by Peter Selinger 2001-2015
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,201.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M0 1005 l0 -1005 250 0 250 0 0 1005 0 1005 -250 0 -250 0 0 -1005z"/>
|
||||
<path d="M510 1768 l0 -242 190 -746 c105 -410 193 -753 196 -762 5 -16 20
|
||||
-18 125 -18 l119 0 0 382 c0 375 0 384 -25 473 -55 203 -295 1137 -295 1150 0
|
||||
3 -70 5 -155 5 l-155 0 0 -242z"/>
|
||||
<path d="M1462 1968 c-13 -53 -69 -269 -162 -628 -39 -151 -89 -346 -111 -433
|
||||
l-39 -158 0 -375 0 -374 119 0 119 0 21 88 c13 48 101 393 197 766 l174 680 0
|
||||
238 0 238 -154 0 -154 0 -10 -42z"/>
|
||||
<path d="M1790 1225 l0 -785 -97 0 -98 0 223 -222 222 -223 222 223 223 222
|
||||
-93 0 -92 0 0 785 0 785 -255 0 -255 0 0 -785z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
BIN
ArtBook/wmarkdown.xcf
Executable file
BIN
ArtBook/wmarkdown180.png
Executable file
After Width: | Height: | Size: 6.6 KiB |
BIN
ArtBook/wmarkdown192.png
Executable file
After Width: | Height: | Size: 7.0 KiB |
BIN
ArtBook/wmarkdown270.png
Executable file
After Width: | Height: | Size: 12 KiB |
BIN
ArtBook/wmarkdown32.png
Executable file
After Width: | Height: | Size: 770 B |
BIN
ArtBook/wmarkdown512.png
Executable file
After Width: | Height: | Size: 9.2 KiB |
12
ArtBook/wmarkdown_color.svg
Executable file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="248px" height="201px" viewBox="0 0 248 201" preserveAspectRatio="xMidYMid meet">
|
||||
<g fill="#269b57">
|
||||
<path d="M0 100.5 l0 -100.5 25 0 25 0 0 100.5 0 100.5 -25 0 -25 0 0 -100.5z"/>
|
||||
<path d="M115 163.6 l0 -37.5 3.9 -15.8 c2.2 -8.7 7.2 -28.2 11.1 -43.3 9.3 -35.9 14.9 -57.5 16.2 -62.8 l1 -4.2 15.4 0 15.4 0 0 23.8 0 23.8 -17.4 68 c-9.6 37.3 -18.4 71.8 -19.7 76.7 l-2.1 8.7 -11.9 0 -11.9 0 0 -37.4z"/>
|
||||
</g>
|
||||
<g fill="#db4a3d">
|
||||
<path d="M89.6 199.3 c-0.3 -1 -9.1 -35.3 -19.6 -76.3 l-19 -74.6 0 -24.2 0 -24.2 15.5 0 c8.5 0 15.5 0.2 15.5 0.5 0 1.3 24 94.7 29.5 115 2.5 8.9 2.5 9.8 2.5 47.3 l0 38.2 -11.9 0 c-10.5 0 -12 -0.2 -12.5 -1.7z"/>
|
||||
<path d="M181.5 179 l-22 -22 9.8 0 9.7 0 0 -78.5 0 -78.5 25.5 0 25.5 0 0 78.5 0 78.5 9.2 0 9.3 0 -22 22 c-12.1 12.1 -22.2 22 -22.5 22 -0.3 0 -10.4 -9.9 -22.5 -22z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.0 KiB |
BIN
ArtBook/wmarkdown_color.xcf
Executable file
BIN
ArtBook/wmarkdown_color180.png
Executable file
After Width: | Height: | Size: 10 KiB |
BIN
ArtBook/wmarkdown_color192.png
Executable file
After Width: | Height: | Size: 11 KiB |
BIN
ArtBook/wmarkdown_color270.png
Executable file
After Width: | Height: | Size: 20 KiB |
BIN
ArtBook/wmarkdown_color32.png
Executable file
After Width: | Height: | Size: 1.1 KiB |
BIN
ArtBook/wmarkdown_color512.png
Executable file
After Width: | Height: | Size: 14 KiB |
185
HTML/base.wmarkdown.html
Executable file
@ -0,0 +1,185 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{language}" dir="ltr">
|
||||
<head>
|
||||
<title>{title}</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
||||
<link rel="icon" href="images/wmarkdown.png" sizes="368x369" />
|
||||
<!--<link rel="icon" href="images/favicon-32x32.png" sizes="32x32" />
|
||||
<link rel="icon" href="images/favicon-192x192.png" sizes="192x192" />
|
||||
<link rel="icon" href="images/favicon-512x512.png" sizes="512x512" />
|
||||
<link rel="apple-touch-icon-precomposed" href="images/favicon-180x180.png" />
|
||||
<meta name="msapplication-TileImage" content="images/favicon-270x270.png" />-->
|
||||
|
||||
<meta name="licence:text" content="© 2020-2021 CopyLeft. GPLv3" />
|
||||
<meta name="licence:link" content="https://www.gnu.org/licenses/gpl-3.0.txt" />
|
||||
<meta name="licence:icon" content="https://www.gnu.org/graphics/gplv3-88x31.png" />
|
||||
|
||||
<meta name="xdoc:link" content="{url}" />
|
||||
<meta name="xdoc:author" content="{author}" />
|
||||
<meta name="xdoc:since" content="{since}" />
|
||||
<meta name="xdoc:version" content="{version}" />
|
||||
<meta name="xdoc:access" content="public" />
|
||||
|
||||
<meta name="description" data-i18n="wmarkdown_description" content="{description}" />
|
||||
<meta name="keywords" data-i18n="wmarkdown_keywords" content="{key_words}" />
|
||||
<meta name="author" content="{author}" />
|
||||
<meta name="copyright" content="© 2020-2021 CopyLeft" />
|
||||
<meta name="robots" content="index,follow" />
|
||||
<meta name="googlebot" content="index,follow,max-snippet:-1,max-image-preview:large,max-video-preview:-1" />
|
||||
<meta name="bingbot" content="index,follow,max-snippet:-1,max-image-preview:large,max-video-preview:-1" />
|
||||
<!--<meta http-equiv="refresh" content="30" />-->
|
||||
<!--<meta http-equiv="cache-control" content="no-cache" />-->
|
||||
<!--<meta http-equiv="expires" content="0" />-->
|
||||
<link rel="canonical" href="{url}" />
|
||||
<link rel="alternate" href="{url}" hreflang="es" />
|
||||
<meta property="og:locale:alternate" content="es_ES" />
|
||||
<meta name="referrer" content="origin" />
|
||||
<meta name="fragment" content="!" /><!-- Para uso AJAX -->
|
||||
<meta name="language" content="es" />
|
||||
<meta name="revisit-after" content="7 days" /><!-- Regreso de las arañas. Información Crawl. -->
|
||||
<meta name="rating" content="general" /><!-- Tipo de contenido: general, mature, restricted, adult, 14 years, safe for kids. -->
|
||||
<meta name="author" content="{author}" />
|
||||
<meta name="owner" content="{author}" />
|
||||
|
||||
<meta property="og:locale" content="es_ES" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" data-i18n="wmarkdown_title" content="{title}" />
|
||||
<meta property="og:description" data-i18n="wmarkdown_description" content="{description}" />
|
||||
<meta property="og:url" content="{url}" />
|
||||
<meta property="og:site_name" content="{project}" />
|
||||
<meta property="og:image" content="{logo}" />
|
||||
<!--<meta property="fb:admins" content="FB-AppID" />-->
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:description" data-i18n="wmarkdown_description" content="{description}" />
|
||||
<meta name="twitter:title" data-i18n="wmarkdown_title" content="{title}" />
|
||||
<!--<meta name="twitter:site" content="@WMarkDown" />-->
|
||||
<!--<meta name="twitter:creator" content="@Whalers" />-->
|
||||
|
||||
<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />
|
||||
<!--<meta name="google-site-verification" content="123456789" />--><!-- Verificación en el Google Search Console. -->
|
||||
<meta name="google" content="nositelinkssearchbox" />
|
||||
<link rel="dns-prefetch" href="{url}" />
|
||||
<!--<link rel="amphtml" href="{url}index.amp.html" />--><!-- Indica si tiene página para móviles. Tecnología AMP. -->
|
||||
|
||||
<link type="text/css" rel="stylesheet" data-language="CSS3" href="https://cdn.k3y.pw/css/fonts/local/Roboto.css" data-crossorigin="anonymous" charset="utf-8" />
|
||||
<link type="text/css" rel="stylesheet" data-language="CSS3" href="https://cdn.k3y.pw/css/fonts/local/RobotoMono.css" data-crossorigin="anonymous" charset="utf-8" />
|
||||
<link type="text/css" rel="stylesheet" data-language="CSS3" href="https://cdn.k3y.pw/css/fonts/local/FontAwesome5Free.css" data-crossorigin="anonymous" charset="utf-8" />
|
||||
<link type="text/css" rel="stylesheet" data-language="CSS3" href="https://unpkg.com/@highlightjs/cdn-assets@10.7.2/styles/default.min.css" data-crossorigin="anonymous" charset="utf-8" />
|
||||
|
||||
<script data-type="test/javascript" data-language="JavaScript 1.8.5" src="https://unpkg.com/mermaid@8.9.3/dist/mermaid.min.js" data-js-map="https://unpkg.com/mermaid@8.9.3/dist/mermaid.min.js.map" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="test/javascript" data-language="JavaScript 1.8.5" src="https://unpkg.com/@highlightjs/cdn-assets@10.7.2/highlight.min.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<!--<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>-->
|
||||
<script data-type="test/javascript" data-language="ECMAScript 2015" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="https://kstats.k3y.pw/ecma/KStats.ecma.js"></script>
|
||||
|
||||
<script>
|
||||
|
||||
kstats = new KStats({url : "https://kstats.k3y.pw/api/LfJWdcC83r6xVca5dwoDdVcZyByLje5QonWCVtusfgSAUrrj8QcsY6rzM/{session}/json/set"});
|
||||
|
||||
</script>
|
||||
|
||||
<link type="text/css" rel="stylesheet" data-language="SASS/CSS3" href="/scss/WMarkDown.css" data-scss="/scss/WMarkDown.scss" data-css-map="/scss/WMarkDown.css.map" data-crossorigin="anonymous" charset="utf-8" />
|
||||
<link type="text/css" rel="stylesheet" data-language="CSS3" href="/css/WMarkDown.icons.css" data-crossorigin="anonymous" charset="utf-8" />
|
||||
|
||||
<style data-type="text/css" data-rel="stylesheet" data-language="CSS3" charset="utf-8">
|
||||
|
||||
html,body{
|
||||
height : 100%;
|
||||
margin : 0px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/WMarkDown.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/WMarkDown.Dictionary.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/WMarkDown.Multimedia.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/WMarkDown.WMonitor.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" charset="utf-8">
|
||||
|
||||
wmarkdown = new WMarkDown({
|
||||
dictionary_links : "https://wdictionaries.k3y.pw/?es/values,own_projects,projects,digital,common,files,kyman",
|
||||
dictionary_title : "Diccionario"
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="wmarkdown">
|
||||
<header>
|
||||
<h1 class="logo">
|
||||
<a href="https://kmarkdown.k3y.pw#">
|
||||
<span class="image" data-status="loading">
|
||||
<img src="/images/wmarkdown.png" alt="WMarkDown" onerror="this.parentNode.setAttribute('data-status', 'error')" onload="this.parentNode.setAttribute('data-status', 'ok')" />
|
||||
<span style="background-image:url('/images/wmarkdown.png');"></span>
|
||||
</span>
|
||||
<span class="text">WMarkDown</span>
|
||||
</a>
|
||||
</h1>
|
||||
<nav class="main-menu">
|
||||
<ul>
|
||||
<li><a href="/" data-i18n="home" data-i18n-without="true" title="Home" target="_self">
|
||||
<span data-icon="home"></span>
|
||||
<span data-i18n="home">Home</span>
|
||||
</a></li>
|
||||
<li><a href="/dev" data-i18n="developt" data-i18n-without="true" title="Desarrollo" target="_self">
|
||||
<span data-icon="developt"></span>
|
||||
<span data-i18n="developt">Desarrollo</span>
|
||||
</a></li>
|
||||
<li><a href="https://git.k3y.pw/Whalers/WMarkDown" data-i18n="git" data-i18n-without="true" title="Git" target="_blank">
|
||||
<span data-icon="git"></span>
|
||||
<span data-i18n="git">Git</span>
|
||||
</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<div class="body" data-headers-menu-deployed="true" data-files-menu-deployed="true">
|
||||
<fieldset class="headers-menu">
|
||||
<legend data-i18n="headers_menu" title="Menu">Menu</legend>
|
||||
<nav>
|
||||
<ul>{menu}</ul>
|
||||
</nav>
|
||||
<div class="menu-buttons">
|
||||
<button type="button" data-i18n="hide" data-i18n-without="true" title="Hide" onclick="wmarkdown.hide_menu(this, event);" data-visible="true">
|
||||
<span data-icon="hide"></span>
|
||||
<span data-i18n="hide">Hide</span>
|
||||
</button>
|
||||
<button type="button" data-i18n="show" data-i18n-without="true" title="Show" onclick="wmarkdown.show_menu(this, event);" data-visible="false">
|
||||
<span data-icon="show"></span>
|
||||
<span data-i18n="show">Show</span>
|
||||
</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="content">
|
||||
<legend data-i18n="content" title="Content">Content</legend>
|
||||
<div class="content-box">{content}</div>
|
||||
</fieldset>
|
||||
<fieldset class="files">
|
||||
<legend data-i18n="files" title="Files">Files</legend>
|
||||
<nav>
|
||||
<ul>{files}</ul>
|
||||
</nav>
|
||||
<div class="menu-buttons">
|
||||
<button type="button" data-i18n="hide" data-i18n-without="true" title="Hide" onclick="wmarkdown.hide_menu(this, event);" data-visible="true">
|
||||
<span data-icon="hide"></span>
|
||||
<span data-i18n="hide">Hide</span>
|
||||
</button>
|
||||
<button type="button" data-i18n="show" data-i18n-without="true" title="Show" onclick="wmarkdown.show_menu(this, event);" data-visible="false">
|
||||
<span data-icon="show"></span>
|
||||
<span data-i18n="show">Show</span>
|
||||
</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<footer>
|
||||
<a href="https://www.gnu.org/licenses/gpl-3.0.txt" target="_blank" title="GPLv3" class="license">
|
||||
<span data-i18n="license_text">© 2021-2022 CopyLeft.</span>
|
||||
<img src="https://www.gnu.org/graphics/gplv3-127x51.png" alt="GPLv3" />
|
||||
</a>
|
||||
<div data-preload="wmarkdown-preloader"></div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
19
HTML/file.w.md
Executable file
@ -0,0 +1,19 @@
|
||||
[[post_data {
|
||||
"author" : "{author}",
|
||||
"since" : {since},
|
||||
"version" : {version}
|
||||
}]]
|
||||
{content}
|
||||
|
||||
[[html_data {
|
||||
"title" : "{title} - {project}",
|
||||
"url" : "{url}{subpath}.html",
|
||||
"author" : "{project_author}",
|
||||
"since" : {since},
|
||||
"version" : {version},
|
||||
"key_words" : "{key_words},developt,desarrollo,programación,{languages}",
|
||||
"description" : "Parte {language_name} del {project}.",
|
||||
"project" : "{project}",
|
||||
"logo" : "{logo}",
|
||||
"language" : "{language}"
|
||||
}]]
|
23
HTML/script.w.md
Executable file
@ -0,0 +1,23 @@
|
||||
[[post_data {
|
||||
"author" : "{author}",
|
||||
"since" : {since},
|
||||
"version" : {version}
|
||||
}]]
|
||||
# {file}
|
||||
|
||||
```txt
|
||||
{subpath}
|
||||
```
|
||||
|
||||
[[html_data {
|
||||
"title" : "{file} - {project}",
|
||||
"url" : "{url}{subpath}.html",
|
||||
"author" : "{project_author}",
|
||||
"since" : {since},
|
||||
"version" : {version},
|
||||
"key_words" : "{key_words},developt,desarrollo,programación,{subkey_words}",
|
||||
"description" : "{file} del {project}.",
|
||||
"project" : "{project}",
|
||||
"logo" : "{logo}",
|
||||
"language" : "{language}"
|
||||
}]]
|
46
JSON/WMarkDown.settings.json
Executable file
@ -0,0 +1,46 @@
|
||||
{
|
||||
"default_value" : null,
|
||||
"nulls" : true,
|
||||
"wmarkdown_root" : "/mnt/d/git/WMarkDown",
|
||||
"root" : "/mnt/d/git/WMarkDown",
|
||||
"documentation_path" : "/WMD",
|
||||
"html_files" : "/JSON/html.files.json",
|
||||
"public_path" : "/Public",
|
||||
"html_base" : "/HTML/WMarkDown.base.html",
|
||||
"default_modules" : {
|
||||
"code_blocks" : "\\WMarkDown\\Modules\\CodeBlocks",
|
||||
"lists" : "\\WMarkDown\\Modules\\Lists",
|
||||
"headers" : "\\WMarkDown\\Modules\\Headers",
|
||||
"includes" : "\\WMarkDown\\Modules\\Includes",
|
||||
"multimedia" : "\\WMarkDown\\Modules\\Multimedia",
|
||||
"custom_parameters" : "\\WMarkDown\\Modules\\CustomParameters",
|
||||
"quotes" : "\\WMarkDown\\Modules\\Quotes",
|
||||
"paragraphs" : "\\WMarkDown\\Modules\\Paragraphs",
|
||||
"checks" : "\\WMarkDown\\Modules\\Checks",
|
||||
"tables" : "\\WMarkDown\\Modules\\Tables",
|
||||
"links" : "\\WMarkDown\\Modules\\Links",
|
||||
"font_formats" : "\\WMarkDown\\Modules\\FontFormats",
|
||||
"escapes" : "\\WMarkDown\\Modules\\Escapes"
|
||||
},
|
||||
"hash_alphabet" : "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",
|
||||
"hash_length" : 11,
|
||||
"special_code_blocks" : ["mermaid", "maths"],
|
||||
"default_title" : "Unknown",
|
||||
"title" : "WMarkDown",
|
||||
"mime_extension_file" : "/Public/json/mime_to_extension.json",
|
||||
"extension_mime_file" : "/Public/json/extension_to_mime.json",
|
||||
"default_extension" : "dat",
|
||||
"default_mime" : "application/octet-stream",
|
||||
"db_user" : null,
|
||||
"db_password" : null,
|
||||
"db_autoconnect" : false,
|
||||
"db_secrets_class" : "\\Secrets",
|
||||
"db_secrets_settings" : "urfree_sqlite",
|
||||
"db_engine" : "sqlite",
|
||||
"db_charset" : "utf8",
|
||||
"db_connection_string" : "{engine}:{memory}?cache={file}",
|
||||
"db_parameters" : null,
|
||||
"db_memory" : false,
|
||||
"db_file" : "/mnt/d/git/Data/wmarkdown.sqlite",
|
||||
"variable_name" : "wmd"
|
||||
}
|
51
PHP/Abstracts/WMarkDown.Abstracts.Modules.php
Executable file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Abstracts;
|
||||
|
||||
abstract class Modules implements \WMarkDown\Interfaces\Modules{
|
||||
|
||||
protected $wmarkdown;
|
||||
protected $more = true;
|
||||
protected $from = -1;
|
||||
protected $length = 0;
|
||||
protected $to = 0;
|
||||
protected $content = '';
|
||||
protected $html = '';
|
||||
protected $matches = null;
|
||||
|
||||
public function __construct($wmarkdown){
|
||||
|
||||
$this->wmarkdown = $wmarkdown;
|
||||
|
||||
}
|
||||
|
||||
public function reset(){
|
||||
|
||||
$this->more = true;
|
||||
$this->from = -1;
|
||||
|
||||
}
|
||||
|
||||
public function set_position($new_position){
|
||||
|
||||
$this->from -= $new_position;
|
||||
$this->to -= $new_position;
|
||||
|
||||
}
|
||||
|
||||
public function get_position($string){
|
||||
|
||||
if($this->from < 0 && $this->more)
|
||||
$this->get_next_position($string);
|
||||
|
||||
return $this->more ? $this->from : null;
|
||||
}
|
||||
|
||||
public function has_more(){return !!$this->more;}
|
||||
public function get_from(){return 0 | $this->from;}
|
||||
public function get_length(){return 0 | $this->length;}
|
||||
public function get_to(){return 0 | $this->to;}
|
||||
public function get_content(){return "" . $this->content;}
|
||||
public function get_html(){return "" . $this->html;}
|
||||
|
||||
}
|
42
PHP/Abstracts/WMarkDown.Abstracts.ScriptsAnalyzer.php
Executable file
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Abstracts;
|
||||
|
||||
abstract class ScriptsAnalyzer implements \WMarkDown\Interfaces\ScriptsAnalyzer{
|
||||
|
||||
protected $wmarkdown = null;
|
||||
protected $parent = null;
|
||||
protected $common = null;
|
||||
protected $original_wmd = null;
|
||||
protected $root = null;
|
||||
protected $root_l = null;
|
||||
protected $class = null;
|
||||
protected $object = null;
|
||||
|
||||
public function __construct($wmarkdown, $parent, $input = null){
|
||||
|
||||
$this->wmarkdown = $wmarkdown;
|
||||
$this->parent = $parent;
|
||||
$this->common = $input["common"];
|
||||
$this->original_wmd = $input["original_wmd"];
|
||||
$this->root = $input["root"];
|
||||
$this->root_l = $input["root_l"];
|
||||
$this->class = $input["class"];
|
||||
$this->object = $input["object"];
|
||||
|
||||
}
|
||||
|
||||
protected function get_data($extension, $wmd_path){
|
||||
return \WMarkDown::string_variables(file_exists($wmd_path) ? file_get_contents($wmd_path) : $this->original_wmd, array_merge([
|
||||
"subkey_words" => preg_match('/^.+' . $this->common["project"] . '\.([^\/]+)\.' . $extension . '\.w\.md$/', $wmd_path) ? preg_replace_callback('/^.+' . $this->common["project"] . '\.([^\/]+)\.php\.w\.md$/', function($values){
|
||||
return substr(preg_replace('/[,\.]+/', ",", preg_replace_callback('/([A-Z]+)?([A-Z][a-z0-9]+)/', function($subvalues){
|
||||
return ($subvalues[1] ? "," . $subvalues[1] : "") . "," . strtolower($subvalues[2]);
|
||||
}, $values[1])), 1);
|
||||
}, $wmd_path) : "main",
|
||||
"path" => substr($wmd_path, $this->root_l + 8),
|
||||
"subpath" => substr($wmd_path, $this->root_l + 8, -5),
|
||||
"file" => preg_replace('/^.+\/([^\/]+)\.w\.md$/', "$1", $wmd_path)
|
||||
], $this->common));
|
||||
}
|
||||
|
||||
};
|
155
PHP/Drivers/WMarkDown.PDO.SQLite.php
Executable file
@ -0,0 +1,155 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\PDO;
|
||||
|
||||
class SQLite{
|
||||
|
||||
private $wmarkdown = null;
|
||||
private $input = null;
|
||||
private $connection = null;
|
||||
private $error = 0;
|
||||
public $type = "mysql";
|
||||
|
||||
private function close(){
|
||||
|
||||
if($this->connection){
|
||||
try{
|
||||
$this->connection->commit();
|
||||
}catch(\Exception $exception){
|
||||
try{
|
||||
$this->connection->rollback();
|
||||
}catch(\Exception $exception){
|
||||
$this->error |= 1 << 3;
|
||||
};
|
||||
$this->error |= 1 << 0;
|
||||
};
|
||||
}else
|
||||
$this->error |= 1 << 6;
|
||||
|
||||
$this->connection = null;
|
||||
|
||||
}
|
||||
|
||||
private function connect(){
|
||||
if($this->connection)
|
||||
return;
|
||||
|
||||
try{
|
||||
$this->connection = new \PDO(\WMarkDown::string_variables($this->wmarkdown->settings(["db_connection_string", "connection_string"], $this->input), [
|
||||
"engine" => $this->wmarkdown->settings(["db_engine", "engine"], $this->input),
|
||||
"file" => $this->wmarkdown->settings(["db_file", "file"], $this->input),
|
||||
"memory" => $this->wmarkdown->settings(["db_memory", "memory"], $this->input) ? ":memory:" : ""
|
||||
]), $this->wmarkdown->settings(["db_user", "user"], $this->input), $this->wmarkdown->settings(["db_password", "password"], $this->input), $this->wmarkdown->settings(["db_parameters", "parameters"], $this->input));
|
||||
}catch(\Exception $exception){
|
||||
$this->error |= 1 << 2;
|
||||
$this->close();
|
||||
return;
|
||||
};
|
||||
|
||||
$this->connection->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
|
||||
|
||||
$this->connection->beginTransaction();
|
||||
|
||||
}
|
||||
|
||||
public function __construct($wmarkdown, $input = null){
|
||||
|
||||
$this->wmarkdown = $wmarkdown;
|
||||
$this->input = $input;
|
||||
|
||||
$secrets_class = $this->wmarkdown->settings(["db_secrets_class", "secrets_class"], $this->input);
|
||||
$secrets_settings = $this->wmarkdown->settings(["db_secrets_settings", "secrets_settings"], $this->input);
|
||||
|
||||
foreach(class_exists($secrets_class) && property_exists($secrets_class, $secrets_settings) ? $secrets_class::$$secrets_settings : [] as $key => $value)
|
||||
if(!isset($this->input[$key]))
|
||||
$this->input[$key] = $value;
|
||||
|
||||
if($this->wmarkdown->settings(["db_autoconnect", "autoconnect"], $this->input))
|
||||
$this->connect();
|
||||
|
||||
}
|
||||
|
||||
public function __destruct(){
|
||||
|
||||
if($this->connection)
|
||||
try{
|
||||
$this->close();
|
||||
}catch(\Exception $exception){};
|
||||
|
||||
}
|
||||
|
||||
public static function query_variables($query, $variables){
|
||||
return preg_replace_callback('/{([^\{\}]+)}/', function($values) use($variables){
|
||||
if($variables && isset($variables[$values[1]])){
|
||||
if($variables[$values[1]] === null)
|
||||
return "null";
|
||||
if(is_string($variables[$values[1]]))
|
||||
return "'" . preg_replace('/\'/', '\\\'', $variables[$values[1]]) . "'";
|
||||
if(is_bool($variables[$values[1]]))
|
||||
return $variables[$values[1]] ? "true" : "false";
|
||||
return $variables[$values[1]];
|
||||
};
|
||||
return "null";
|
||||
}, $query);
|
||||
}
|
||||
|
||||
public function query($query, $input = null){
|
||||
|
||||
$results = [
|
||||
"tables" => [],
|
||||
"variables" => [],
|
||||
"error" => $this->error | 0
|
||||
];
|
||||
|
||||
if($results["error"])
|
||||
return $results;
|
||||
|
||||
if(!$query){
|
||||
$results["error"] |= 1 << 4;
|
||||
return $results;
|
||||
};
|
||||
|
||||
if(!$this->connection){
|
||||
$this->connect();
|
||||
$results["error"] = $this->error;
|
||||
if(!$this->connection)
|
||||
$results["error"] |= 1 << 5;
|
||||
if($results["error"])
|
||||
return $results;
|
||||
};
|
||||
|
||||
$query_completed = self::query_variables($query, $input);
|
||||
|
||||
print_r(["query_completed" => $query_completed]);
|
||||
|
||||
$statement = $this->connection->prepare($query_completed);
|
||||
$statement->execute();
|
||||
|
||||
try{
|
||||
$table = [];
|
||||
foreach($statement->fetchAll(\PDO::FETCH_ASSOC) as $new_row){
|
||||
$row = [];
|
||||
foreach($new_row as $key => $value){
|
||||
if(is_string($value)){
|
||||
if($value[0] == "[" || $value[0] == "{"){
|
||||
try{
|
||||
$row[$key] = json_decode(utf8_encode($value), true);
|
||||
if(!$row[$key])
|
||||
$row[$key] = utf8_encode($value);
|
||||
}catch(\Exception $exception){
|
||||
$row[$key] = utf8_encode($value);
|
||||
};
|
||||
}else
|
||||
$row[$key] = utf8_encode($value);
|
||||
}else
|
||||
$row[$key] = $value;
|
||||
};
|
||||
$table[] = $row;
|
||||
};
|
||||
$results["tables"][] = $table;
|
||||
}catch(\Exception $exception){};
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
};
|
10
PHP/Interfaces/WMarkDown.Interfaces.Modules.php
Executable file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Interfaces;
|
||||
|
||||
interface Modules{
|
||||
|
||||
public function get_next_position($string);
|
||||
public function process($string, $modules, $level);
|
||||
|
||||
};
|
9
PHP/Interfaces/WMarkDown.Interfaces.ScriptsAnalyzer.php
Executable file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Interfaces;
|
||||
|
||||
interface ScriptsAnalyzer{
|
||||
|
||||
public function analyze($file, $path = null, &$languages = [], $level = 0);
|
||||
|
||||
};
|
79
PHP/Modules/WMarkDown.Modules.Checks.php
Executable file
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Modules;
|
||||
|
||||
class Checks extends \WMarkDown\Abstracts\Modules{
|
||||
|
||||
public function get_next_position($string){
|
||||
if(!$this->more || $this->from >= 0)
|
||||
return;
|
||||
|
||||
$pattern = '/';
|
||||
|
||||
foreach([
|
||||
["(", ")"],
|
||||
["[", "]"],
|
||||
["{", "}"],
|
||||
["<", ">"]
|
||||
] as $delimiter)
|
||||
$pattern .= ($pattern != '/' ? '|' : '') . '(\\' . $delimiter[0] . ')([\-\*\+x\\\\\/\=\#\|· v\?,yn])\\' . $delimiter[1];
|
||||
$pattern .= '/i';
|
||||
|
||||
if($this->more = preg_match($pattern, $string, $this->matches, PREG_OFFSET_CAPTURE))
|
||||
$this->from = $this->matches[0][1];
|
||||
|
||||
}
|
||||
|
||||
public function process($string, $modules, $level){
|
||||
|
||||
$character;
|
||||
$value;
|
||||
$hash = $this->wmarkdown->get_hash();
|
||||
$type = "checkbox";
|
||||
$icon = "checkbox";
|
||||
$checked = false;
|
||||
$disabled = false;
|
||||
|
||||
for($i = 1; $i < 8; $i += 2)
|
||||
if(isset($this->matches[$i])){
|
||||
$value = strtolower($this->content = $this->matches[$i + 1][0]);
|
||||
$character = $this->matches[$i][0];
|
||||
};
|
||||
|
||||
switch($value){
|
||||
case "v":
|
||||
$icon = "tick";
|
||||
$checked = true;
|
||||
break;
|
||||
default:
|
||||
$checked = strpos("x*#·vy", $value) !== false;
|
||||
$disabled = strpos("-=?\\/|", $value) !== false;
|
||||
switch($character){
|
||||
case "(":
|
||||
$type = "radio";
|
||||
$icon = "radio";
|
||||
break;
|
||||
case "[":
|
||||
$type = "checkbox";
|
||||
$icon = "checkbox";
|
||||
break;
|
||||
case "{":
|
||||
case "<":
|
||||
$type = "checkbox";
|
||||
$icon = "tick";
|
||||
break;
|
||||
};
|
||||
break;
|
||||
};
|
||||
|
||||
$this->length = strlen($this->matches[0][0]);
|
||||
$this->to = $this->from + $this->length;
|
||||
$this->html = ('
|
||||
<label class="' . $icon . '" for="' . $hash . '">
|
||||
<input type="' . $type . '" id="' . $hash . '" readonly onclick="return false;"' . ($checked ? ' checked' : '') . ($disabled ? ' disabled' : '') . ' />
|
||||
<span data-icon="' . $icon . '"></span>
|
||||
</label>
|
||||
');
|
||||
}
|
||||
|
||||
};
|
98
PHP/Modules/WMarkDown.Modules.CodeBlocks.php
Executable file
@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Modules;
|
||||
|
||||
class CodeBlocks extends \WMarkDown\Abstracts\Modules{
|
||||
|
||||
private $matches_start = null;
|
||||
private $matches_end = null;
|
||||
private $delimiter = null;
|
||||
private $start_characters = null;
|
||||
private static $ampersand_code = [
|
||||
"<" => "lt",
|
||||
">" => "gt",
|
||||
"&" => "emp"
|
||||
];
|
||||
|
||||
public function get_next_position($string){
|
||||
if(!$this->more || $this->from >= 0)
|
||||
return;
|
||||
$this->more = false;
|
||||
|
||||
$lower = null;
|
||||
|
||||
foreach(["```", "'''", '"""', "---"] as $base)
|
||||
foreach([$base, preg_replace('/(.)/', "$1 ", $base)] as $delimiter){
|
||||
if(
|
||||
preg_match('/^' . $delimiter . '([^\n\r]+)?/m', $string, $matches_start, PREG_OFFSET_CAPTURE) &&
|
||||
preg_match('/^' . $delimiter . '/m', substr($string, $matches_start[0][1] + ($start_characters = strlen($matches_start[0][0]))), $matches_end, PREG_OFFSET_CAPTURE) &&
|
||||
($lower === null || $lower > $matches_start[0][1])
|
||||
){
|
||||
$lower = $matches_start[0][1];
|
||||
$this->more = true;
|
||||
$this->from = $matches_start[0][1];
|
||||
$this->matches_start = $matches_start;
|
||||
$this->matches_end = $matches_end;
|
||||
$this->delimiter = $delimiter;
|
||||
$this->start_characters = $start_characters;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
public function process($string, $modules, $level){
|
||||
|
||||
$lines = '';
|
||||
$data_html = '';
|
||||
|
||||
$this->more = true;
|
||||
$this->length = $this->matches_end[0][1] + strlen($this->delimiter) + $this->start_characters;
|
||||
$this->to = $this->from + $this->length;
|
||||
$this->content = preg_replace_callback('/[<>&]/', function($values){
|
||||
if(isset(\WMarkDown\Modules\CodeBlocks::$ampersand_code[$values[0]]))
|
||||
return "&" . \WMarkDown\Modules\CodeBlocks::$ampersand_code[$values[0]] . ";";
|
||||
return $values[0];
|
||||
}, preg_replace('/^(\r\n|[\r\n])|(\r\n|[\r\n])$/', "", substr($string, $this->from + $this->start_characters, $this->matches_end[0][1])));
|
||||
|
||||
$language = isset($this->matches_start[1]) ? $this->matches_start[1][0] : "text";
|
||||
$is_special = in_array($language, $this->wmarkdown->settings("special_code_blocks"));
|
||||
|
||||
foreach(($lines_splitted = preg_split('/\r\n|[\r\n]/', $this->content)) as $line)
|
||||
$lines .= '<li></li>';
|
||||
|
||||
foreach([[
|
||||
"name" => "language",
|
||||
"text" => "Language",
|
||||
"data" => $language
|
||||
], [
|
||||
"name" => "lines",
|
||||
"text" => "Lines",
|
||||
"data" => count($lines_splitted)
|
||||
], [
|
||||
"name" => "characters",
|
||||
"text" => "Characters",
|
||||
"data" => strlen($this->content)
|
||||
]] as $data)
|
||||
$data_html .= $this->wmarkdown->string_variables(('
|
||||
<li class="{name}" data-i18n="{name}" data-i18n-without="true" title="{text}">
|
||||
<span data-icon="{name}"></span>
|
||||
<span data-i18n="{name}">{text}</span>
|
||||
<span class="data">{data}</span>
|
||||
</li>
|
||||
'), $data);
|
||||
|
||||
$this->html = ('
|
||||
<pre class="code-block" data-lang="' . $language . '" data-special="' . ($is_special ? "true" : "false") . '">
|
||||
<ul class="data">' . $data_html . '</ul>
|
||||
' . ($is_special ? ('
|
||||
<div class="' . $language . '">' . $this->content . '</div>
|
||||
') : ('
|
||||
<div class="lines"><ol>' . $lines . '</ol></div>
|
||||
<div class="code-box" onscroll="wmarkdown.block_code_scroll(this, event);">' . $this->content . '</div>
|
||||
')) . '
|
||||
</pre>
|
||||
');
|
||||
|
||||
}
|
||||
|
||||
};
|
298
PHP/Modules/WMarkDown.Modules.CustomParameters.php
Executable file
@ -0,0 +1,298 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Modules;
|
||||
|
||||
class CustomParameters extends \WMarkDown\Abstracts\Modules{
|
||||
|
||||
private $menu = '';
|
||||
private $title = '';
|
||||
private $order = "";
|
||||
|
||||
public function get_next_position($string){
|
||||
|
||||
if(
|
||||
$this->more &&
|
||||
$this->from < 0 &&
|
||||
$this->more = preg_match('/\[\[(header_level|html_data|post_data|data_dictionary|wdictionaries|wmonitor|ignore|links_groups?|i|icon|\!|wdoc|plain) ?(([^\]"\']+|[\r\n]+|"(([^\\\\"]+|\\\\(.|[\r\n]))*)"|\'(([^\\\\\']+|\\\\(.|[\r\n]))*)\'|\]([^\]]))+)\]\]/', $string, $this->matches, PREG_OFFSET_CAPTURE)
|
||||
)
|
||||
$this->from = $this->matches[0][1];
|
||||
|
||||
}
|
||||
|
||||
public function process($string, $modules, $level){
|
||||
|
||||
$this->order = $this->matches[1][0];
|
||||
|
||||
switch($key = strtolower($this->matches[1][0])){
|
||||
case "header_level":
|
||||
try{
|
||||
$symbol = $this->matches[2][0][0];
|
||||
$level = $this->matches[2][0];
|
||||
if($string == "[[header_level 2]]")
|
||||
print_r([$symbol, $level]);
|
||||
$modules->menu_level = strpos("+-", $symbol) !== false ? $modules->menu_level + intval(substr($level, 1)) * ($symbol == "-" ? -1 : 1) : intval($level);
|
||||
}catch(\Exception $exception){};
|
||||
$this->html = '';
|
||||
break;
|
||||
case "html_data":
|
||||
try{
|
||||
$modules->html_data = json_decode(\WMarkDown::string_variables($this->matches[2][0], [
|
||||
"now" => (new \DateTime())->format('Ymd')
|
||||
]), true);
|
||||
}catch(\Exception $exception){};
|
||||
$this->html = '';
|
||||
break;
|
||||
case "post_data":
|
||||
|
||||
$this->html = '';
|
||||
|
||||
try{
|
||||
|
||||
$data = json_decode(\WMarkDown::string_variables($this->matches[2][0], [
|
||||
"now" => (new \DateTime())->format('Ymd')
|
||||
]), true);
|
||||
if(!isset($data["since"]))
|
||||
$data["since"] = (new \DateTime())->format('Ymd');
|
||||
foreach(["since", "version"] as $key)
|
||||
if(isset($data[$key]))
|
||||
$data[$key] = preg_replace('/^(\d{4})(\d{2})(\d{2})$/', "$1/$2/$3", $data[$key]);
|
||||
if(!isset($data["version"]))
|
||||
$data["version"] = $data["since"];
|
||||
if(!isset($data["author"]))
|
||||
$data["author"] = "Anonymous";
|
||||
$i18n_data = base64_encode(json_encode($data));
|
||||
|
||||
$this->html = \WMarkDown::string_variables(('
|
||||
<div class="header-file-note" data-i18n="post_created_by" data-i18n-variables="' . $i18n_data . '">
|
||||
Por {author}. Creado a fecha {since}. Última modificación a fecha {version}.
|
||||
</div>
|
||||
'), $data);
|
||||
|
||||
}catch(\Exception $exception){};
|
||||
break;
|
||||
case "data_dictionary":
|
||||
try{
|
||||
$this->html = json_decode($this->matches[2][0], true);
|
||||
}catch(\Exception $exception){};
|
||||
$this->html = $this->html ? '<input type="hidden" class="data-dictionary" data-json="' . base64_encode(preg_replace('/[\s\t]+|[\r\n]+|("(([^\\\\"]+|\\\\(.|[\r\n]))*)"|\'(([^\\\\\']+|\\\\(.|[\r\n]))*)\')/', "$1", $this->matches[2][0])) . '" />' : '';
|
||||
break;
|
||||
case "wdictionaries":
|
||||
|
||||
$this->html = '';
|
||||
|
||||
if(
|
||||
$this->matches[2][0] &&
|
||||
preg_match('/^([^"\' ]+|"(([^\\\\"]+|\\\\.)*)"|\'(([^\\\\\']+|\\\\.)*)\')((.+|[\r\n]+)+)?$/', $this->matches[2][0], $matches) &&
|
||||
count($matches) >= 6 &&
|
||||
!empty($files = preg_split('/([\s\t]+|[\r\n]+)+/', trim($matches[6])))
|
||||
)
|
||||
$this->html = $files ? ('
|
||||
' . \WMarkDown\Modules::format($this->wmarkdown, '# ' . $matches[$matches[4] ? 4 : ($matches[2] ? 2 : 1)], ["wdictionaries", "paragraph"], $modules)["content"] . '
|
||||
<input type="hidden" class="wdictionary" data-json="' . base64_encode(json_encode($files)) . '" data-status="unloaded" />
|
||||
') : '';
|
||||
|
||||
break;
|
||||
case "wmonitor":
|
||||
$this->html = $this->matches[2][0] ? '<span data-wmonitor="' . $this->matches[2][0] . '" data-status="unloaded">WMonitor</span>' : '';
|
||||
break;
|
||||
case "ignore":
|
||||
$this->html = '<span data-ignore="true">' . $this->matches[2][0] . '</span>';
|
||||
break;
|
||||
case "links_group":
|
||||
case "links_groups":
|
||||
|
||||
$html = '<div class="links-group">';
|
||||
|
||||
try{
|
||||
if($json = json_decode($this->matches[2][0], true)){
|
||||
foreach($json as $link)
|
||||
$html .= ('
|
||||
<a href="' . $link["link"] . '" class="multimedia-box links-group" target="_' . (isset($link["self"]) && $link["self"] ? "self" : "blank") . '" class="links-group-item" title="' . ($text = isset($link["text"]) ? $link["text"] : "") . '">
|
||||
<span data-status="unloaded">
|
||||
<img data-src="' . base64_encode(json_encode($link["images"])) . '" data-i="0" onerror="wmarkdown.multimedia.image_try_next(this, event);" />
|
||||
<span class="image-style"></span>
|
||||
</span>
|
||||
<span class="text">' . $text . '</span>
|
||||
</a>
|
||||
');
|
||||
};
|
||||
}catch(\Exception $exception){};
|
||||
|
||||
$this->html = $html . '</div>';
|
||||
|
||||
break;
|
||||
case "i":
|
||||
case "!":
|
||||
case "icon":
|
||||
$this->html = preg_match('/^([^ ]+)( ((.+|[\r\n]+)+)?)?/', $this->matches[2][0], $matches) ? (
|
||||
'<span class="special-text-i" data-i18n="' . $matches[1] . '" data-i18n-without="true" title="' . $matches[1] . '">' .
|
||||
'<span data-icon="' . $matches[1] . '"></span>' .
|
||||
(empty($matches[3]) ? '' : '<span class="text">' . $matches[3] . '</span>') .
|
||||
'</span>'
|
||||
) : $this->matches[0][0];
|
||||
break;
|
||||
case "wdoc":
|
||||
|
||||
$html = '';
|
||||
$name = 'UNKNOWN';
|
||||
$description = '';
|
||||
$attributes = [[]];
|
||||
$return = [null];
|
||||
$data = [];
|
||||
$language = "unknown";
|
||||
$deprecated = false;
|
||||
|
||||
preg_replace_callback('/([\@\#]([^\s\t\r\n]+)([ \t]+([^\s\t\r\n]+)([ \t]+([^\s\t\r\n]+)([ \t]+([^\r\n]*))?)?)?|[^\@\r\n][^\r\n]+)/', function($values) use(
|
||||
&$name,
|
||||
&$description,
|
||||
&$attributes,
|
||||
&$return,
|
||||
&$language,
|
||||
&$deprecated,
|
||||
&$data
|
||||
){
|
||||
switch($values[0][0]){
|
||||
case "@":
|
||||
switch(strtolower($values[2])){
|
||||
case "lang":
|
||||
$language = $values[4];
|
||||
$data[] = ["language", $values[4]];
|
||||
break;
|
||||
case "deprecated":
|
||||
$deprecated = true;
|
||||
$data[] = ["deprecated", true];
|
||||
break;
|
||||
case "name":
|
||||
$name = $values[4];
|
||||
$data[] = ["name", $values[4]];
|
||||
break;
|
||||
case "overload":
|
||||
$attributes[] = [];
|
||||
$return[] = null;
|
||||
break;
|
||||
case "see":
|
||||
// Mirar porque algunos SEE salen mal.
|
||||
count($values) >= 5 && ($data[] = [$values[2], '<a href="#' . $values[4] . '">' . $values[4] . '</a>']);
|
||||
break;
|
||||
default:
|
||||
$data[] = [$values[2], count($values) > 3 ? $values[4] : null];
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case "#":
|
||||
switch(strtolower($values[2])){
|
||||
case "return":
|
||||
$return[count($attributes) - 1] = [$values[4], count($values) > 8 && $values[8] ? $values[8] : ''];
|
||||
break;
|
||||
default:
|
||||
|
||||
$l = count($values);
|
||||
|
||||
if($l > 5)
|
||||
$attributes[count($attributes) - 1][] = [
|
||||
$values[2],
|
||||
$values[4],
|
||||
$values[6],
|
||||
$l > 8 && $values[8] ? $values[8] : ''
|
||||
];
|
||||
else
|
||||
$data[] = [$values[2], $l > 3 ? $values[4] : null];
|
||||
break;
|
||||
};
|
||||
break;
|
||||
default:
|
||||
$description .= $values[0] . " ";
|
||||
break;
|
||||
};
|
||||
}, $this->matches[2][0]);
|
||||
|
||||
$l = count($attributes);
|
||||
$data_html = '';
|
||||
|
||||
foreach($data as $value){
|
||||
$is_bool = is_bool($value[1]) || $value[1] === null;
|
||||
if(is_string($value[1]))
|
||||
$value[1] = explode(",", $value[1]);
|
||||
$data_html .= (
|
||||
'<li data-name="' . $value[0] . '" data-hide="' . (!$is_bool || $value[1] ? "true" : "false") . '" data-ignore="true">' .
|
||||
'<span class="name">' . $value[0] . '</span>' .
|
||||
'<span class="value" data-with-value="' . ($is_bool ? "false" : "true") . '">' . (is_array($value[1]) ? '<span>' . implode('</span><span>', $value[1]) . '</span>' : $value[1]) . '</span>' .
|
||||
'</li>'
|
||||
);
|
||||
};
|
||||
|
||||
for($i = 0; $i < $l; $i ++){
|
||||
|
||||
$overload = $attributes[$i];
|
||||
$attributes_html = '';
|
||||
$return_type = $return[$i] ? $return[$i][0] : 'void';
|
||||
|
||||
foreach($attributes[$i] as $attribute)
|
||||
$attributes_html .= (
|
||||
'<span class="attribute" data-status="' . strtolower($attribute[2]) . '">' .
|
||||
'<span class="attribute-name" data-ignore="true">' . $attribute[0] . '</span>' .
|
||||
'<span class="attribute-type"><span>' . preg_replace('/,/', '</span><span>', $attribute[1] == "-" ? "ANY" : $attribute[1]) . '</span></span>' .
|
||||
'<span class="attribute-status">' . $attribute[2] . '</span>' .
|
||||
'<span class="attribute-description">' . ($attribute[3] ? $attribute[3] : '') . '</span>' .
|
||||
'</span>'
|
||||
);
|
||||
$attributes_html .= (
|
||||
'<span class="return">' .
|
||||
'<span class="return-text">return</span>' .
|
||||
'<span class="return-type">' . ($return_type == "-" ? "ANY" : $return_type) . '</span>' .
|
||||
'<span></span>' .
|
||||
'<span class="return-description">' . ($return[$i] && $return[$i][1] ? $return[$i][1] : '') . '</span>' .
|
||||
'</span>'
|
||||
);
|
||||
|
||||
$html .= (
|
||||
'<div class="overload">' .
|
||||
'<div class="structure">' .
|
||||
'<span class="return-type">' . ($return_type == "-" ? "ANY" : $return_type) . '</span>' .
|
||||
'<span class="name" data-ignore="true">' . $name . '</span>' .
|
||||
'<span class="attributes">' . $attributes_html . '</span>' .
|
||||
'</div>' .
|
||||
'<div class="attributes-data">' . $attributes_html . '</div>' .
|
||||
'</div>'
|
||||
);
|
||||
|
||||
};
|
||||
|
||||
$this->html = (
|
||||
'<fieldset id="' . $name . '" class="wdoc" data-language="' . strtolower($language) . '" data-deprecated="' . ($deprecated ? 'true' : 'false') . '">' .
|
||||
'<legend>' .
|
||||
($deprecated ? (
|
||||
'<span class="deprecated">' .
|
||||
'<span data-icon="deprecated"></span>' .
|
||||
'<span data-i18n="deprecated">Deprecated</span>' .
|
||||
'</span>'
|
||||
) : '') .
|
||||
'<span class="name" data-ignore="true">' . $name . '</span>' .
|
||||
'<span class="language">' . $language . '</span>' .
|
||||
'</legend>' .
|
||||
'<p class="description">' . $description . '</p>' .
|
||||
$html .
|
||||
'<ul class="data">' . $data_html . '</ul>' .
|
||||
'</fieldset>'
|
||||
);
|
||||
|
||||
break;
|
||||
case "plain":
|
||||
$this->html = $this->matches[2][0];
|
||||
break;
|
||||
default:
|
||||
$this->html = $this->matches[0][0];
|
||||
break;
|
||||
};
|
||||
|
||||
$this->length = strlen($this->matches[0][0]);
|
||||
$this->to = $this->from + $this->length;
|
||||
$this->content = $this->matches[2][0];
|
||||
|
||||
}
|
||||
|
||||
public function get_menu(){return "" . $this->menu;}
|
||||
public function get_title(){return "" . $this->title;}
|
||||
public function get_order(){return "" . $this->order;}
|
||||
|
||||
};
|
27
PHP/Modules/WMarkDown.Modules.Escapes.php
Executable file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Modules;
|
||||
|
||||
class Escapes extends \WMarkDown\Abstracts\Modules{
|
||||
|
||||
public function get_next_position($string){
|
||||
|
||||
if(
|
||||
$this->more &&
|
||||
$this->from < 0 &&
|
||||
$this->more = preg_match('/\\\\(.)/m', $string, $this->matches, PREG_OFFSET_CAPTURE)
|
||||
)
|
||||
$this->from = $this->matches[0][1];
|
||||
|
||||
}
|
||||
|
||||
public function process($string, $modules, $level){
|
||||
|
||||
$this->length = strlen($this->matches[0][0]);
|
||||
$this->to = $this->from + $this->length;
|
||||
$this->content = $this->matches[1][0];
|
||||
$this->html = $this->matches[1][0];
|
||||
|
||||
}
|
||||
|
||||
};
|
52
PHP/Modules/WMarkDown.Modules.FontFormats.php
Executable file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Modules;
|
||||
|
||||
class FontFormats extends \WMarkDown\Abstracts\Modules{
|
||||
|
||||
private $scape = false;
|
||||
|
||||
public function get_next_position($string){
|
||||
if(!$this->more || $this->from >= 0)
|
||||
return;
|
||||
$this->more = false;
|
||||
|
||||
$last = null;
|
||||
$item = null;
|
||||
|
||||
if(preg_match('/\\\\([_\*\'"\\\\])/', $string, $matches, PREG_OFFSET_CAPTURE)){
|
||||
$this->more = true;
|
||||
$this->scape = true;
|
||||
$this->from = $matches[0][1];
|
||||
$this->matches = $matches;
|
||||
};
|
||||
|
||||
foreach([
|
||||
'/(\*)([^\*\\\\]+|\\\\.)\*/', '/(_)([^_\\\\]+|\\\\.)_/',
|
||||
'/(\*{2})(([^\*\\\\]+|\*[^\*]|\\\\.)+)\*{2}(\*)?/', '/(__)(([^_\\\\]+|_[^_]|\\\\.)+)__(_)?/',
|
||||
'/(\'{3})(([^\'\\\\]+|\'{1,2}[^\']|\\\\.)+)\'{3}(\'{2})?/', '/(""")(([^"\\\\]+|"{1,2}[^"]|\\\\.)+)"""("")?/',
|
||||
'/(\'{2})(([^\'\\\\]+|\'[^\']|\\\\.)+)\'{2}/', '/("")(([^"\\\\]+|"[^"]|\\\\.)+)""/'
|
||||
] as $pattern)
|
||||
if(preg_match($pattern, $string, $matches, PREG_OFFSET_CAPTURE) && ($last === null || $last > $matches[0][1])){
|
||||
$this->more = true;
|
||||
$this->scape = false;
|
||||
$this->from = $matches[0][1];
|
||||
$this->matches = $matches;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
public function process($string, $modules, $level){
|
||||
|
||||
$this->length = strlen($this->matches[0][0]);
|
||||
$this->to = $this->from + $this->length;
|
||||
$this->content = $this->matches[$this->scape ? 1 : 2][0];
|
||||
$this->html = $this->scape ? $this->matches[1][0] : (
|
||||
'<' . ($tag = strlen($this->matches[1][0]) == 2 ? "b" : "i") . '>' .
|
||||
\WMarkDown\Modules::format($this->wmarkdown, $this->matches[2][0] . (isset($this->matches[4]) ? $this->matches[4][0] : ''), ["paragraphs"], $modules)["content"] .
|
||||
'</' . $tag . '>'
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
};
|
56
PHP/Modules/WMarkDown.Modules.Headers.php
Executable file
@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Modules;
|
||||
|
||||
class Headers extends \WMarkDown\Abstracts\Modules{
|
||||
|
||||
private static $ids = [];
|
||||
private $id;
|
||||
private $level;
|
||||
|
||||
public static function id($text){
|
||||
|
||||
$id = preg_replace('/[^a-z\d\-]+/i', "-", trim($text));
|
||||
$test = "" . $id;
|
||||
$i = 0;
|
||||
|
||||
while(in_array($test, self::$ids))
|
||||
$test = $id . (++ $i == 1 ? "" : "-" . $i);
|
||||
|
||||
self::$ids[] = $id = preg_replace('/\-{2,}/', "-", $test);
|
||||
|
||||
return $id;
|
||||
}
|
||||
|
||||
public function get_next_position($string){
|
||||
if(!$this->more || $this->from >= 0)
|
||||
return;
|
||||
|
||||
$last = null;
|
||||
|
||||
foreach(['/^(\={1,6})(.+)\={1,6}?$/m', '/^(\#{1,6})(.+)$/m'] as $pattern)
|
||||
if(preg_match($pattern, $string, $matches, PREG_OFFSET_CAPTURE) && ($last === null || $last > $matches[0][1])){
|
||||
$this->from = $matches[0][1];
|
||||
$this->matches = $matches;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
public function process($string, $modules, $level){
|
||||
|
||||
$html = trim(\WMarkDown\Modules::format($this->wmarkdown, $this->matches[2][0], ["paragraphs"], $modules)["content"]);
|
||||
$i = $this->level + 1;
|
||||
|
||||
$this->length = strlen($this->matches[0][0]);
|
||||
$this->to = $this->from + $this->length;
|
||||
$this->content = $html;
|
||||
$modules->menu_level = $this->level = strlen($this->matches[1][0]) + $level;
|
||||
$this->id = self::id($html);
|
||||
$this->html = '<h' . $i . ' id="' . $this->id . '">' . $html . '</h' . $i . '>';
|
||||
|
||||
}
|
||||
|
||||
public function get_id(){return "" . $this->id;}
|
||||
public function get_level(){return 0 | $this->level;}
|
||||
|
||||
}
|
42
PHP/Modules/WMarkDown.Modules.Includes.php
Executable file
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Modules;
|
||||
|
||||
class Includes extends \WMarkDown\Abstracts\Modules{
|
||||
|
||||
private $menu = '';
|
||||
private $title = '';
|
||||
|
||||
public function get_next_position($string){
|
||||
|
||||
if(
|
||||
$this->more &&
|
||||
$this->from < 0 &&
|
||||
$this->more = preg_match('/\[\[include ([^\[\]]+)\]\]/', $string, $this->matches, PREG_OFFSET_CAPTURE)
|
||||
)
|
||||
$this->from = $this->matches[0][1];
|
||||
|
||||
}
|
||||
|
||||
public function process($string, $modules, $level){
|
||||
|
||||
$formatted = \WMarkDown\Modules::format($this->wmarkdown, $data = $this->wmarkdown->load_file($this->matches[1][0]), [], $modules, $modules->menu_level);
|
||||
|
||||
$this->html = (
|
||||
'<article class="included" data-file="' . $this->matches[1][0] . '">' .
|
||||
'<a name="' . preg_replace('/[^a-z\d]+/', "-", strtolower(substr($this->matches[1][0], 1))) . '"></a>' .
|
||||
$formatted["content"] .
|
||||
'</article>'
|
||||
);
|
||||
$this->menu = $formatted["menu"];
|
||||
$this->title = $formatted["title"];
|
||||
$this->length = strlen($this->matches[0][0]);
|
||||
$this->to = $this->from + $this->length;
|
||||
$this->content = $this->matches[1][0];
|
||||
|
||||
}
|
||||
|
||||
public function get_menu(){return "" . $this->menu;}
|
||||
public function get_title(){return "" . $this->title;}
|
||||
|
||||
};
|
75
PHP/Modules/WMarkDown.Modules.Links.php
Executable file
@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Modules;
|
||||
|
||||
class Links extends \WMarkDown\Abstracts\Modules{
|
||||
|
||||
public function get_next_position($string){
|
||||
|
||||
if(
|
||||
$this->more &&
|
||||
$this->from < 0 &&
|
||||
$this->more = preg_match('/' .
|
||||
'\\\\([\[\]])|' .
|
||||
'(^|\\b)([a-z][a-z\d]{1,8}\:\/\/[^\/<\r\n]+(\/([^ <\r\n]+)?)?)|' . // 1, 2, 3, 4, 5
|
||||
'\[(([^ \[\]]+)( (([^\[\]\r\n]+(\r\n|[\r\n])?)+))?)\](' . // 6, 7, 8, 9, 10, 11, 12
|
||||
'\: ?([^\r\n]+)|' . // 13
|
||||
'\((([^ \(\)]+)( (([^\'"\(\)]+)|\'(([^\'\\\\]+|\\\\.)*)\'|"(([^"\\\\]+|\\\\.)*)"))?)\)|' . // 14, 15, 16, 17, 18, 19, 20, 21, 22
|
||||
'\[(([^ \[\]]+)( (([^\'"\(\)]+)|\'(([^\'\\\\]+|\\\\.)*)\'|"(([^"\\\\]+|\\\\.)*)"))?)\]' . // 23, 24, 25, 26, 27, 28, 29, 30, 31
|
||||
')?' .
|
||||
'/m', $string, $this->matches, PREG_OFFSET_CAPTURE)
|
||||
)
|
||||
$this->from = $this->matches[0][1];
|
||||
|
||||
}
|
||||
|
||||
public function process($string, $modules, $level){
|
||||
|
||||
$this->length = strlen($this->matches[0][0]);
|
||||
$this->to = $this->from + $this->length;
|
||||
$this->content = $this->matches[0][0];
|
||||
|
||||
if($this->matches[1][1] != -1){
|
||||
$this->html = $this->matches[1][0];
|
||||
return;
|
||||
};
|
||||
|
||||
$link = null;
|
||||
$text = null;
|
||||
$title = null;
|
||||
$index = null;
|
||||
$reference = null;
|
||||
|
||||
|
||||
if($this->matches[3][1] != -1)
|
||||
$link = $text = $title = $this->matches[3][0];
|
||||
elseif($this->matches[6][1] != -1){
|
||||
$link = $this->matches[7][0];
|
||||
$text = $this->matches[isset($this->matches[9]) && $this->matches[9][1] != -1 ? 9 : 7][0];
|
||||
if(isset($this->matches[12])){
|
||||
if(isset($this->matches[13]) && $this->matches[13][1] != -1){
|
||||
$reference = base64_encode($this->matches[6][0]);
|
||||
$link = $this->matches[13][0];
|
||||
}else{
|
||||
$text = $this->matches[6][0];
|
||||
if($i = isset($this->matches[15]) && $this->matches[15][1] != -1 ? 15 : (isset($this->matches[24]) ? 24 : 0)){
|
||||
$link = $this->matches[$i][0];
|
||||
$index = base64_encode($this->matches[$i - 1][0]);
|
||||
if(isset($this->matches[$i + 2]))
|
||||
$title = $this->matches[isset($this->matches[$i + 3]) ? $i + 3 : (isset($this->matches[$i + 4]) ? $i + 4 : (isset($this->matches[$i + 6]) ? $i + 6 : 0))][0];
|
||||
};
|
||||
};
|
||||
}else
|
||||
$title = $text;
|
||||
};
|
||||
|
||||
$this->html = $reference !== null ? '<input type="hidden" data-index="' . $reference . '" data-link="' . $link . '" />' : '<a ' .
|
||||
'href="' . $link . '" ' .
|
||||
'target="' . ($link && $link[0] == "#" ? "_self" : "_blank") . '"' .
|
||||
($title ? ' title="' . $title . '"' : '') .
|
||||
($index ? ' data-index="' . $index . '"' : '') .
|
||||
'>' . ($text && $text != $link ? \WMarkDown\Modules::format($this->wmarkdown, $text, ["paragraphs", "links"], $modules)["content"] : $link) . '</a>';
|
||||
|
||||
}
|
||||
|
||||
};
|
133
PHP/Modules/WMarkDown.Modules.Lists.php
Executable file
@ -0,0 +1,133 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Modules;
|
||||
|
||||
class Lists extends \WMarkDown\Abstracts\Modules{
|
||||
|
||||
private static function close(&$html, &$levels, &$l, $level){
|
||||
|
||||
$closed = false;
|
||||
|
||||
while($l && $levels[$l - 1]["level"] > $level){
|
||||
$closed = true;
|
||||
$l --;
|
||||
for($i = 0; !$i || $i < $levels[$l]["levels"]; $i ++)
|
||||
$html .= '</' . $levels[$l]["tag"] . '>';
|
||||
if($levels[$l]["close"])
|
||||
$html .= '</li>';
|
||||
array_pop($levels);
|
||||
};
|
||||
|
||||
return $closed;
|
||||
}
|
||||
|
||||
private static function open(&$html, &$levels, &$l, $level, $header){
|
||||
|
||||
if(!$l || $levels[$l - 1]["level"] < $level){
|
||||
|
||||
$start = $header[empty($header[2]) ? 3 : 2];
|
||||
$type = null;
|
||||
$tag = "ul";
|
||||
|
||||
switch($start[0]){
|
||||
case "a":
|
||||
case "i":
|
||||
case "A":
|
||||
case "I":
|
||||
case "1":
|
||||
$type = $start;
|
||||
$tag = "ol";
|
||||
break;
|
||||
case "#":
|
||||
$type = "1";
|
||||
$tag = "ol";
|
||||
$start = "1";
|
||||
break;
|
||||
default:
|
||||
$tag = "ol";
|
||||
if(preg_match('/^[a-z]+$/', $start))
|
||||
$type = "a";
|
||||
elseif(preg_match('/^[A-Z]+$/', $start))
|
||||
$type = "A";
|
||||
elseif(preg_match('/^[0-9]+$/', $start))
|
||||
$type = "1";
|
||||
else
|
||||
$tag = "ul";
|
||||
break;
|
||||
};
|
||||
|
||||
$levels[] = [
|
||||
"levels" => $level - ($l ? $levels[$l - 1]["level"] : 0),
|
||||
"level" => $level,
|
||||
"tag" => $tag,
|
||||
"start" => $start,
|
||||
"type" => $type,
|
||||
"close" => !!$l
|
||||
];
|
||||
for($i = 0; (!$l && !$i) || $i < $levels[$l]["levels"]; $i ++)
|
||||
$html .= ('<' . $levels[$l]["tag"] .
|
||||
($levels[$l]["type"] ? ' type="' . $levels[$l]["type"] . '"' : '') .
|
||||
($levels[$l]["tag"] == "ol" ? ' start="' . $levels[$l]["start"] . '"' : '') .
|
||||
'>');
|
||||
$l ++;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
public function get_next_position($string){
|
||||
|
||||
if(
|
||||
$this->more &&
|
||||
$this->from < 0 &&
|
||||
$this->more = preg_match('/^(([ \t]*(\-+|\#+|\++|\*+|(\d+|[ia])\.) *[^\r\n]+(\r\n|[\r\n])([ \t]*([^\-\+\#\r\n\s\t]|(?!(\d+|[ia])\.).)[^\r\n]+(\r\n|[\r\n]))*){2,})/mi', $string, $this->matches, PREG_OFFSET_CAPTURE)
|
||||
)
|
||||
$this->from = $this->matches[0][1];
|
||||
|
||||
}
|
||||
|
||||
public function process($string, $modules, $level){
|
||||
|
||||
$html = '';
|
||||
$content = '';
|
||||
$levels = [];
|
||||
$l = 0;
|
||||
$first = true;
|
||||
|
||||
foreach(preg_split('/\r\n|[\r\n]/', preg_replace('/\t/', " ", $this->matches[0][0])) as $line){
|
||||
preg_match('/^ +/', $line, $spaces);
|
||||
$level = isset($spaces[0]) ? strlen($spaces[0]) / 4 >> 0 : 0;
|
||||
if(($line = trim($line)) && preg_match('/^(([\-\+\#\+])|(\d+|[ai])\.) *(.+)/', $line, $header)){
|
||||
|
||||
if($started = !!$content){
|
||||
if(!$l)
|
||||
self::open($html, $levels, $l, 0, $header);
|
||||
$html .= '<li>' . \WMarkDown\Modules::format($this->wmarkdown, $content, ["paragraphs"], $modules)["content"];
|
||||
$content = "";
|
||||
};
|
||||
|
||||
$level += strlen(preg_replace('/\.?$/', "", $header[1])) - 1;
|
||||
|
||||
self::close($html, $levels, $l, $level);
|
||||
|
||||
self::open($html, $levels, $l, $level, $header);
|
||||
|
||||
$content = $header[4];
|
||||
|
||||
}else
|
||||
$content .= " " . $line;
|
||||
};
|
||||
if($content)
|
||||
$html .= '<li>' . \WMarkDown\Modules::format($this->wmarkdown, $content, ["paragraphs"], $modules)["content"];
|
||||
self::close($html, $levels, $l, 0);
|
||||
preg_match('/^<([ou]l)(.+|[\r\n])+$/', $html, $tag);
|
||||
$html .= '</' . $tag[1] . '>';
|
||||
|
||||
$this->length = strlen($this->matches[0][0]);
|
||||
$this->to = $this->from + $this->length;
|
||||
$this->content = $this->matches[1][0];
|
||||
$this->html = $html;
|
||||
|
||||
}
|
||||
|
||||
};
|
292
PHP/Modules/WMarkDown.Modules.Multimedia.php
Executable file
@ -0,0 +1,292 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Modules;
|
||||
|
||||
class Multimedia extends \WMarkDown\Abstracts\Modules{
|
||||
|
||||
public function get_next_position($string){
|
||||
|
||||
if(
|
||||
$this->more &&
|
||||
$this->from < 0 &&
|
||||
$this->more = preg_match('/^\[\[(images?|slider|videos?|audios?|embed|thumbnails?) ?(([^\]"\'\n\r]+|[\r\n]+|"(([^\\\\"]+|\\\\(.|[\r\n]))*)"|\'(([^\\\\\']+|\\\\(.|[\r\n]))*)\'|\][^\]])+)\]\]/m', $string, $this->matches, PREG_OFFSET_CAPTURE)
|
||||
)
|
||||
$this->from = $this->matches[0][1];
|
||||
|
||||
}
|
||||
|
||||
private static function multimedia_box($html, $multiple){
|
||||
return '<div class="multimedia-box" data-multiple="' . ($multiple ? "true" : "false") . '">' . $html . '</div>';
|
||||
}
|
||||
|
||||
public function image($data){
|
||||
if(!$data)
|
||||
return '';
|
||||
|
||||
$images;
|
||||
$text;
|
||||
|
||||
if(is_string($data)){
|
||||
if(!preg_match('/^(\[(([^\\\\\]]+|\\\\(.|[\r\n]))*)\]|[^ ]+)( (.+))?$/', trim($data), $matches))
|
||||
return '';
|
||||
$images = $matches[1][0] == "[" ? json_decode($matches[1], true) : [$matches[1]];
|
||||
$text = isset($matches[6]) ? $matches[6] : null;
|
||||
}else{
|
||||
if(isset($data[0]))
|
||||
$data = ["images" => $data];
|
||||
$images = $data["images"];
|
||||
$text = isset($data["text"]) && $data["text"] ? $data["text"] : null;
|
||||
};
|
||||
|
||||
$html = '';
|
||||
$image_text = $text ? $text : "image";
|
||||
|
||||
foreach($images as $image)
|
||||
$html .= '<img src="' . $image . '" alt="' . $image_text . '" />';
|
||||
|
||||
return ('
|
||||
<span data-type="image"' . ($text !== null ? ' title="' . $text . '"' : '') . ' data-status="unloaded" data-error-type="ok" onclick="wmarkdown.multimedia.go(this, event);">
|
||||
<img data-src="' . base64_encode(json_encode($images)) . '" data-i="0"' . ($text !== null ? ' alt="' . $text . '"' : '') . ' onerror="wmarkdown.multimedia.image_try_next(this, event);" />
|
||||
<span class="image-style"></span>
|
||||
<noscript>' . $html . '</noscript>
|
||||
<a href="#" target="_blank"></a>
|
||||
' . ($text !== null ? '<span class="text">' . $text . '</span>' : '') . '
|
||||
</span>
|
||||
');
|
||||
}
|
||||
|
||||
public function images($data){
|
||||
return preg_replace_callback('/^([\s\t]+)?(\[(([^\\\\\[\]"\'\r\n]+|"(([^\\\\"\r\n]+|\\\\(.|[\r\n]))*)"|\'(([^\\\\\'\r\n]+|\\\\(.|[\r\n]))*)\'|\\\\(.|[\n\r])|[\r\n])*)\]|[^\r\n]+)( ([^\r\n]+)?)?[\r\n]?$/m', function($values){
|
||||
return ($string = trim($values[0])) ? $this->image($string) : "";
|
||||
}, $data);
|
||||
}
|
||||
|
||||
public function video($data){
|
||||
if(!$data)
|
||||
return '';
|
||||
|
||||
$videos;
|
||||
$posters;
|
||||
$text;
|
||||
|
||||
if(is_string($data)){
|
||||
if(!preg_match('/^(\[(([^\\\\\]]+|\\\\(.|[\r\n]))*)\]|[^ ]+)( (\[(([^\\\\\[]+|\\\\(.|[\r\n]))*)\]|[a-z][a-z\d]{2,}\:\/{2}[^ ]+))?( (.+))?$/im', trim($data), $matches))
|
||||
return '';
|
||||
$videos = $matches[1][0] == "[" ? json_decode($matches[1], true) : [$matches[1]];
|
||||
$posters = isset($matches[6]) && $matches[6] ? ($matches[6][0] == "[" ? json_decode($matches[6], true) : [$matches[6]]) : null;
|
||||
$text = isset($matches[11]) && $matches[11] ? $matches[11] : null;
|
||||
}else{
|
||||
if(isset($data[0]))
|
||||
$data = ["videos" => $data];
|
||||
$videos = $data["videos"];
|
||||
$posters = isset($data["posters"]) ? $data["posters"] : null;
|
||||
$text = isset($data["text"]) ? $data["text"] : null;
|
||||
};
|
||||
|
||||
$html = '';
|
||||
$video_text = $text ? $text : "video";
|
||||
|
||||
foreach($videos as $video)
|
||||
$html .= ('
|
||||
<video title="' . $video_text . '">
|
||||
<source src="' . $video . '" type="' . $this->wmarkdown->get_mime($video) . '" />
|
||||
<span data-i18n="multimedia_no_recognized">Formato no reconocido por el navegador.</span>
|
||||
</video>
|
||||
');
|
||||
|
||||
return ('
|
||||
<span data-type="video" data-status="unloaded" data-error-type="ok" onclick="wmarkdown.multimedia.go(this, event);">
|
||||
<video controls data-src="' . base64_encode(json_encode($videos)) . '" data-i="0"' . ($posters ? ' data-posters="' . base64_encode(json_encode($posters)) . '" data-posters-i="0"' : '') . ' onerror="wmarkdown.multimedia.video_try_next(this, event);">
|
||||
<span data-i18n="multimedia_no_recognized">Formato no reconocido por el navegador.</span>
|
||||
</video>
|
||||
<noscript>' . $html . '</noscript>
|
||||
<a href="#" target="_blank"></a>
|
||||
' . ($text !== null ? '<span class="text">' . $text . '</span>' : null) . '
|
||||
</span>
|
||||
');
|
||||
}
|
||||
|
||||
public function videos($data){
|
||||
return preg_replace_callback('/^([\s\t]+)?(\[(([^\\\\\[]+|\\\\(.|[\n\r]))*)\]|[^ ]+)( (\[(([^\\\\\[]+|\\\\(.|[\n\r]))*)\]|[a-z][a-z\d]{2,}\:\/{2}[^ ]+))?( (.+)?)?/im', function($values){
|
||||
return $this->video($values[0]);
|
||||
}, $data);
|
||||
}
|
||||
|
||||
private function audio_poster($data){
|
||||
return self::multimedia_box($this->image($data), false);
|
||||
}
|
||||
|
||||
public function audio($data, $multiple = null){
|
||||
if(!$data)
|
||||
return '';
|
||||
|
||||
$audios;
|
||||
$posters;
|
||||
$text;
|
||||
|
||||
if(is_string($data)){
|
||||
if(!preg_match('/^(\[(([^\\\\\]]+|\\\\(.|[\r\n]))*)\]|[^ ]+)( (\[(([^\\\\\[]+|\\\\(.|[\r\n]))*)\]|[a-z][a-z\d]{2,}\:\/{2}[^ ]+))?( (.+))?$/im', trim($data), $matches))
|
||||
return '';
|
||||
$audios = $matches[1][0] == "[" ? json_decode($matches[1], true) : [$matches[1]];
|
||||
$posters = isset($matches[6]) && $matches[6] ? ($matches[6][0] == "[" ? json_decode($matches[6], true) : [$matches[6]]) : null;
|
||||
$text = isset($matches[11]) && $matches[11] ? $matches[11] : null;
|
||||
}else{
|
||||
if(isset($data[0]))
|
||||
$data = ["audios" => $data];
|
||||
$audios = $data["audios"];
|
||||
$posters = isset($data["posters"]) ? $data["posters"] : null;
|
||||
$text = isset($data["text"]) ? $data["text"] : null;
|
||||
};
|
||||
|
||||
$html = '';
|
||||
$audio_text = $text ? $text : "audio";
|
||||
|
||||
foreach($audios as $audio)
|
||||
$html .= ('
|
||||
<audio title="' . $audio_text . '">
|
||||
<source src="' . $audio . '" type="' . $this->wmarkdown->get_mime($audio) . '" />
|
||||
<span data-i18n="multimedia_no_recognized">Formato no reconocido por el navegador.</span>
|
||||
</audio>
|
||||
');
|
||||
|
||||
return ('
|
||||
<span data-type="audio" data-status="unloaded" data-error-type="ok" onclick="wmarkdown.multimedia.go(this, event);">
|
||||
<audio controls data-src="' . base64_encode(json_encode($audios)) . '" data-i="0" onerror="wmarkdown.multimedia.audio_try_next(this, event);">
|
||||
<span data-i18n="multimedia_no_recognized">Formato no reconocido por el navegador.</span>
|
||||
</audio>
|
||||
<noscript>' . $html . '</noscript>
|
||||
<a href="#" target="_blank"></a>
|
||||
' . (!empty($posters) ? $this->audio_poster([
|
||||
"images" => $posters,
|
||||
"text" => $text
|
||||
], $multiple) : ($text !== null ? '<span class="text">' . $text . '</span>' : null)) . '
|
||||
</span>
|
||||
');
|
||||
}
|
||||
|
||||
public function audios($data){
|
||||
return preg_replace_callback('/^([\s\t]+)?(\[(([^\\\\\[]+|\\\\(.|[\n\r]))*)\]|[^ ]+)( (\[(([^\\\\\[]+|\\\\(.|[\n\r]))*)\]|[a-z][a-z\d]{2,}\:\/{2}[^ ]+))?( (.+)?)?/im', function($values){
|
||||
return $this->audio($values[0], true);
|
||||
}, $data);
|
||||
}
|
||||
|
||||
private static function check($matches, $is){
|
||||
if(!$matches || count($matches) < 2)
|
||||
return null;
|
||||
foreach(is_array($is) ? $is : [$is] as $i)
|
||||
if(isset($matches[$i]) && $matches[$i])
|
||||
return $i;
|
||||
return null;
|
||||
}
|
||||
|
||||
public function embed($links){
|
||||
if(!$links)
|
||||
return '';
|
||||
|
||||
if(!is_array($links))
|
||||
$links = preg_split('/[\r\n]+/', "" . $links);
|
||||
|
||||
$html = '';
|
||||
$j = 0;
|
||||
|
||||
foreach($links as $link){
|
||||
if(!($link = trim($link)))
|
||||
continue;
|
||||
$j ++;
|
||||
if(preg_match('/^https?\:\/{2}(www\.)?(youtube\.com\/(embed\/|(((?![\?\&]v\=).)+)?[\?\&]v\=)([^\/\&]+)|youtu\.be\/([^\/\&\?]+))/', $link, $matches) && ($i = self::check($matches, [6, 7])))
|
||||
$html .= ('
|
||||
<span data-platform="youtube" data-id="' . $matches[$i] . '" data-status="unmounted">
|
||||
<noscript>
|
||||
<iframe
|
||||
src="https://www.youtube.com/embed/' . $matches[$i] . '"
|
||||
style="position:absolute;top:0em;left:0em;width:100%;height:100%;"
|
||||
title="YouTube video player"
|
||||
frameborder="0"
|
||||
allow="fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowfullscreen="allowfullscreen"
|
||||
mozallowfullscreen="mozallowfullscreen"
|
||||
msallowfullscreen="msallowfullscreen"
|
||||
oallowfullscreen="oallowfullscreen"
|
||||
webkitallowfullscreen="webkitallowfullscreen"
|
||||
allowfullscreen></iframe>
|
||||
</noscript>
|
||||
</span>
|
||||
');
|
||||
elseif(preg_match('/^https?\:\/{2}((www|player)\.)?vimeo\.com\/(video\/)?(\d+)/', $link, $matches) && ($i = self::check($matches, [4])))
|
||||
$html .= ('
|
||||
<span data-platform="vimeo" data-id="' . $matches[$i] . '" data-status="unmounted">
|
||||
<noscript>
|
||||
<iframe
|
||||
src="https://player.vimeo.com/video/' . $matches[$i] . '"
|
||||
style="position:absolute;top:0em;left:0em;width:100%;height:100%;"
|
||||
frameborder="0"
|
||||
allow="fullscreen; picture-in-picture"
|
||||
allowfullscreen></iframe>
|
||||
</noscript>
|
||||
</span>
|
||||
');
|
||||
elseif(preg_match('/^https?\:\/{2}(www\.)?facebook\.com\/((?!\/videos\/).)+\/videos\/(\d+)/', $link, $matches) && ($i = self::check($matches, [3])))
|
||||
$html .= ('
|
||||
<span data-platform="facebook" data-id="' . $matches[$i] . '" data-status="unmounted">
|
||||
<noscript>
|
||||
<iframe
|
||||
src="https://www.facebook.com/video.php?v=' . $matches[$i] . '"
|
||||
style="position:absolute;top:0em;left:0em;width:100%;height:100%;border:none;overflow:hidden;"
|
||||
scrolling="no"
|
||||
frameborder="0"
|
||||
allow="autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share"
|
||||
allowfullscreen></iframe>
|
||||
</noscript>
|
||||
</span>
|
||||
');
|
||||
elseif(preg_match('/^https?\:\/{2}((www|player)\.)?twitch\.(com|tv)\/(videos\/|\?video\=)(\d+)/', $link, $matches) && ($i = self::check($matches, [5])))
|
||||
$html .= ('
|
||||
<span data-platform="twitch" data-id="' . $matches[$i] . '" data-status="unmounted">
|
||||
<noscript>
|
||||
<iframe
|
||||
src="https://player.twitch.tv/?video=' . $matches[$i] . '&parent=wmarkdown.k3y.pw"
|
||||
style="position:absolute;top:0em;left:0em;width:100%;height:100%;"
|
||||
scrolling="no"
|
||||
frameborder="0"
|
||||
allow="autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share"
|
||||
allowfullscreen></iframe>
|
||||
</noscript>
|
||||
</span>
|
||||
');
|
||||
else
|
||||
$j --;
|
||||
};
|
||||
|
||||
return '<span data-type="embed" data-links-count="' . count($links) . '">' . $html . '</span>';
|
||||
}
|
||||
|
||||
/*public static function process($wmarkdown, $key, $data, $multiple = null){
|
||||
return '<div class="multimedia-box" data-multiple="' . (($multiple !== null ? $multiple : $key[strlen($key) - 1] == "s") ? "true" : "false") . '">' . (
|
||||
$data && method_exists('\WMarkDown\Modules\Multimedia', $key) ?
|
||||
\call_user_func('\WMarkDown\Modules\Multimedia::' . $key, $wmarkdown, $data) :
|
||||
''
|
||||
) . '</div>';
|
||||
}*/
|
||||
|
||||
public function thumbnails($data){
|
||||
// print_r($data);
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public function process($string, $modules, $level){
|
||||
|
||||
$method = $this->matches[1][0];
|
||||
|
||||
// if($method == "images")
|
||||
// print_r($this->matches);
|
||||
|
||||
// $this->html = self::process($this->wmarkdown, $this->matches[1][0], $this->matches[2][0]);
|
||||
$this->html = self::multimedia_box($this->matches[2][0] && method_exists($this, $method) ? $this->$method($this->matches[2][0]) : '', $method[strlen($method) - 1] == "s");
|
||||
$this->length = strlen($this->matches[0][0]);
|
||||
$this->to = $this->from + $this->length;
|
||||
$this->content = $this->matches[2][0];
|
||||
|
||||
}
|
||||
|
||||
};
|
27
PHP/Modules/WMarkDown.Modules.Paragraphs.php
Executable file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Modules;
|
||||
|
||||
class Paragraphs extends \WMarkDown\Abstracts\Modules{
|
||||
|
||||
public function get_next_position($string){
|
||||
|
||||
if(
|
||||
$this->more &&
|
||||
$this->from < 0 &&
|
||||
$this->more = preg_match('/^((([^\r\n]+)(\r\n|[\r\n])?)+)/m', $string, $this->matches, PREG_OFFSET_CAPTURE)
|
||||
)
|
||||
$this->from = $this->matches[0][1];
|
||||
|
||||
}
|
||||
|
||||
public function process($string, $modules, $level){
|
||||
|
||||
$this->length = strlen($this->matches[0][0]);
|
||||
$this->to = $this->from + $this->length;
|
||||
$this->content = $this->matches[1][0];
|
||||
$this->html = '<p>' . \WMarkDown\Modules::format($this->wmarkdown, $this->matches[1][0], ["paragraphs"], $modules)["content"] . '</p>';
|
||||
|
||||
}
|
||||
|
||||
};
|
27
PHP/Modules/WMarkDown.Modules.Quotes.php
Executable file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Modules;
|
||||
|
||||
class Quotes extends \WMarkDown\Abstracts\Modules{
|
||||
|
||||
public function get_next_position($string){
|
||||
|
||||
if(
|
||||
$this->more &&
|
||||
$this->from < 0 &&
|
||||
$this->more = preg_match('/^((^>+ ?)(([^\r\n]+)(\r\n|[\r\n])?)+)/m', $string, $this->matches, PREG_OFFSET_CAPTURE)
|
||||
)
|
||||
$this->from = $this->matches[0][1];
|
||||
|
||||
}
|
||||
|
||||
public function process($string, $modules, $level){
|
||||
|
||||
$this->length = strlen($this->matches[0][0]);
|
||||
$this->to = $this->from + $this->length;
|
||||
$this->content = $this->matches[1][0];
|
||||
$this->html = '<blockquote class="quote">' . \WMarkDown\Modules::format($this->wmarkdown, substr($this->matches[1][0], 1), ["paragraphs"], $modules)["content"] . '</blockquote>';
|
||||
|
||||
}
|
||||
|
||||
};
|
61
PHP/Modules/WMarkDown.Modules.Tables.php
Executable file
@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\Modules;
|
||||
|
||||
class Tables extends \WMarkDown\Abstracts\Modules{
|
||||
|
||||
public function get_next_position($string){
|
||||
|
||||
if(
|
||||
$this->more &&
|
||||
$this->from < 0 &&
|
||||
$this->more = preg_match('/\[\!([^\r\n]+)?(([\r\n]+([^\!\n\r]+|\![^\]])*?)*)[\r\n]+\!\]/', $string, $this->matches, PREG_OFFSET_CAPTURE)
|
||||
)
|
||||
$this->from = $this->matches[0][1];
|
||||
|
||||
}
|
||||
|
||||
public function process($string, $modules, $level){
|
||||
|
||||
$formatted = \WMarkDown\Modules::format($this->wmarkdown, $data = $this->wmarkdown->load_file($this->matches[1][0]), [], $modules, $modules->menu_level);
|
||||
|
||||
$head = '';
|
||||
$body = '';
|
||||
$foot = '';
|
||||
$wmarkdown = $this->wmarkdown;
|
||||
|
||||
preg_replace_callback('/^\|([\^_\-\#])?([^\r\n]+)/m', function($values) use(&$head, &$body, &$foot, $wmarkdown, $modules){
|
||||
|
||||
$html = '';
|
||||
$block = in_array($values[1], ["^", "-"]) ? "head" : (in_array($values[1], ["_"]) ? "foot" : (in_array($values[1], ["#"]) ? "both" : "body"));
|
||||
$tag = $block == "body" ? "d" : "h";
|
||||
|
||||
preg_replace_callback('/(\|(\|+)?)?([^\|]+)/', function($cell) use(&$html, $tag, $wmarkdown, $modules){
|
||||
$html .= '<t' . $tag . ($cell[2] ? ' colspan="' . strlen($cell[1]) . '"' : '') . '>' . \WMarkDown\Modules::format($wmarkdown, trim($cell[3]), ["paragraphs"], $modules)["content"] . '</t' . $tag . '>';
|
||||
}, $values[2]);
|
||||
$html = '<tr>' . $html . '</tr>';
|
||||
|
||||
if($block == "head")
|
||||
$head .= $html;
|
||||
elseif($block == "foot")
|
||||
$foot .= $html;
|
||||
elseif($block == "both"){
|
||||
$head .= $html;
|
||||
$foot .= $html;
|
||||
}else
|
||||
$body .= $html;
|
||||
|
||||
}, trim($this->matches[2][0]));
|
||||
|
||||
$this->html = '<table' . (strpos($attributes = $this->matches[1][0] ?? '', " class=\"") !== false ? preg_replace('/( class=\"[^"]+)/', "$1 wmd-table", $attributes) : $attributes . ' class="wmd-table"') . '>' . (
|
||||
($head ? '<thead>' . $head . '</thead>' : '') .
|
||||
($body ? '<tbody>' . $body . '</tbody>' : '') .
|
||||
($foot ? '<tfoot>' . $foot . '</tfoot>' : '')
|
||||
) . '</table>';
|
||||
$this->length = strlen($this->matches[0][0]);
|
||||
$this->to = $this->from + $this->length;
|
||||
$this->content = $this->matches[1][0];
|
||||
|
||||
}
|
||||
|
||||
};
|
229
PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.CSharp.php
Executable file
@ -0,0 +1,229 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\ScriptsAnalyzer;
|
||||
|
||||
class CSharp extends \WMarkDown\Abstracts\ScriptsAnalyzer{
|
||||
|
||||
private static function get_parameter(&$parameter, $value){
|
||||
|
||||
if(preg_match('/^(.+) ([^ ]+)$/', trim($value), $submatches, PREG_OFFSET_CAPTURE)){
|
||||
$parameter["name"] = $submatches[2][0];
|
||||
$parameter["type"] = $submatches[1][0];
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
private static function get_parameters(&$content, $i = 0){
|
||||
|
||||
$parameters = [];
|
||||
$secure = true;
|
||||
$security = 0;
|
||||
$value = "";
|
||||
$parameter = [];
|
||||
$ended = false;
|
||||
|
||||
while(!$ended && ($secure && $security ++ < 100) && preg_match('/[=,\(\[\{\<>\}\]\)]|("([^\\\\"]+|\\\\.)*"|\'([^\\\\\']+|\\\\.)*\')/', $content, $matches, PREG_OFFSET_CAPTURE)){
|
||||
switch($matches[0][0]){
|
||||
case "{":
|
||||
case "[":
|
||||
case "(":
|
||||
case "<":
|
||||
$value .= substr($content, 0, $matches[0][1] + 1);
|
||||
$i ++;
|
||||
break;
|
||||
case ">":
|
||||
case ")":
|
||||
case "]":
|
||||
case "}":
|
||||
$value .= substr($content, 0, $matches[0][1]);
|
||||
if(-- $i < 1){
|
||||
$ended = true;
|
||||
if(trim($value)){
|
||||
if(isset($parameter["name"]))
|
||||
$parameter["default"] = $value;
|
||||
else
|
||||
self::get_parameter($parameter, $value);
|
||||
$parameters[] = $parameter;
|
||||
$parameter = [];
|
||||
$value = "";
|
||||
};
|
||||
}else
|
||||
$value .= $matches[0][0];
|
||||
break;
|
||||
case ",":
|
||||
$value .= substr($content, 0, $matches[0][1]);
|
||||
if($i > 1)
|
||||
$value .= ",";
|
||||
else{
|
||||
if(isset($parameter["name"]))
|
||||
$parameter["default"] = $value;
|
||||
else
|
||||
self::get_parameter($parameter, $value);
|
||||
$parameters[] = $parameter;
|
||||
$parameter = [];
|
||||
$value = "";
|
||||
};
|
||||
break;
|
||||
case "=":
|
||||
$value .= substr($content, 0, $matches[0][1]);
|
||||
if($i > 1)
|
||||
$value .= "=";
|
||||
else{
|
||||
self::get_parameter($parameter, $value);
|
||||
$value = "";
|
||||
};
|
||||
break;
|
||||
default:
|
||||
$value .= substr($content, 0, $matches[0][1]) . $matches[1][0];
|
||||
break;
|
||||
};
|
||||
$content = substr($content, $matches[0][1] + strlen($matches[0][0]));
|
||||
};
|
||||
|
||||
return $parameters;
|
||||
}
|
||||
|
||||
private static function get_body(&$content){
|
||||
|
||||
$i = 0;
|
||||
$secure = true;
|
||||
$security = 0;
|
||||
$has_body = trim($content)[0] == "{";
|
||||
$body = "";
|
||||
$ended = false;
|
||||
|
||||
while(!$ended && ($secure && $security ++ < 100) && preg_match('/[\{\}]|("([^\\\\"]+|\\\\.)*"|\'([^\\\\\']+|\\\\.)*\')/', $content, $matches, PREG_OFFSET_CAPTURE)){
|
||||
switch($matches[0][0]){
|
||||
case "{":
|
||||
$i ++;
|
||||
break;
|
||||
case "}":
|
||||
-- $i < 1 && ($ended = true);
|
||||
break;
|
||||
};
|
||||
$body .= substr($content, 0, $matches[0][1]) . $matches[0][0];
|
||||
$content = substr($content, $matches[0][1] + strlen($matches[0][0]));
|
||||
};
|
||||
|
||||
return $body;
|
||||
}
|
||||
|
||||
private static function remove_blocks(&$content, $i = 0){
|
||||
while(preg_match('/[\(\[\{<>\}\]\)]/', $content, $matches, PREG_OFFSET_CAPTURE)){
|
||||
$content = substr($content, $matches[0][1] + strlen($matches[0][0]));
|
||||
if(in_array($matches[0][0], ["]", "}", ">", ")"])){
|
||||
if(!-- $i)
|
||||
break;
|
||||
}else
|
||||
$i ++;
|
||||
};
|
||||
}
|
||||
|
||||
public function analyze($file, $path = null, &$languages = [], $level = 0){
|
||||
|
||||
if(!($content = \WMarkDown\ScriptsAnalyzer::get_content($file, $path)))
|
||||
return;
|
||||
|
||||
$wmd_path = $this->parent->get_wmd_path($file, $path);
|
||||
|
||||
!isset($languages["c_sharp"]) && ($languages["c_sharp"] = []);
|
||||
$namespace = "";
|
||||
$class_name = "";
|
||||
$secure = true;
|
||||
$security = [0];
|
||||
$y = [2, 3, 8, 12];
|
||||
$data = $this->get_data("cs", $wmd_path = $this->parent->get_wmd_path($file, $path));
|
||||
$languages["c_sharp"][$i = count($languages["c_sharp"])] = ["path" => $wmd_path, "level" => $level, "methods" => []];
|
||||
$last_method = null;
|
||||
|
||||
$content = preg_replace_callback('/("([^\\\\"]+|\\\\.)*"|\'([^\\\\\']+|\\\\.)*\')|(\/{2}[^\r\n]*|\/\*([^\*]+|[\r\n]+|\*[^\/])*\*\/)|([\r\n]|[\s\t])+/', function($values){
|
||||
return $values[1] ? $values[1] : ($values[4] ? "" : " ");
|
||||
}, $content);
|
||||
|
||||
while((!$secure || $security[0] ++ < 100) && preg_match('/\b(' .
|
||||
'namespace ([a-zA-Z\d_]+) ?\{' .
|
||||
'|((abstract|internal) ){0,2}class ([a-zA-Z0-9_]+)( ?\: ?([a-zA-Z\d_]+, ?)+)? ?[<\{]' .
|
||||
'|((private|public|protected) )?(~)?([a-zA-Z0-9_]+ ?)\(' .
|
||||
'|((private|public|protected) )?(static )?((?!(using|static|public|private|protected))[a-zA-Z\d_]+)( ?<|(\[[0-9]*\])? ([a-zA-Z0-9_]+) ?[<\(])' .
|
||||
')/', $content, $matches, PREG_OFFSET_CAPTURE)){
|
||||
|
||||
$content = substr($content, $matches[0][1] + strlen($matches[0][0]));
|
||||
$parameters = null;
|
||||
$body = null;
|
||||
$method = null;
|
||||
$type = null;
|
||||
$return = null;
|
||||
$access = null;
|
||||
|
||||
if($matches[$y[0] + 0][0])
|
||||
$class_name = $namespace = $matches[$y[0] + 0][0];
|
||||
elseif($matches[$y[1] + 2][0])
|
||||
$class_name = $namespace . "." . $matches[$y[1] + 2][0];
|
||||
elseif($matches[$y[2] + 3][0]){
|
||||
|
||||
$parameters = self::get_parameters($content, 1);
|
||||
$body = self::get_body($content);
|
||||
$method = $class_name . "." . $matches[$y[2] + 3][0];
|
||||
$access = $matches[$y[2] + 0][0] ? $matches[$y[2] + 0][0] : "public";
|
||||
$type = $matches[$y[2] + 2][0] ? "destructor" : "constructor";
|
||||
|
||||
}elseif($matches[$y[3] + 3][0]){
|
||||
|
||||
$diamonds = false;
|
||||
$return = $matches[$y[3] + 3][0];
|
||||
$type = $matches[$y[3] + 2][0] ? "estático" : "objeto";
|
||||
$method = $class_name . ".";
|
||||
$access = $matches[$y[3] + 1][0] ? $matches[$y[3] + 1][0] : "public";
|
||||
|
||||
if(trim($matches[$y[3] + 5][0])[0] == "<"){ // Aún está terminando de procesar el tipado por diamantes.
|
||||
self::remove_blocks($content, 1);
|
||||
if(preg_match('/^(\[[0-9]*\])? ([a-zA-Z0-9_]+) ?[<\(]/', $content, $submatches, PREG_OFFSET_CAPTURE)){
|
||||
$content = substr($content, $submatches[0][1] + strlen($submatches[0][0]));
|
||||
$diamonds = substr($submatches[0][0], -1) == "<";
|
||||
$submatches[1][0] && ($return .= $submatches[1][0]);
|
||||
$method .= $submatches[2][0];
|
||||
}else{ // Es una variable Ojeto o de clase u otro tipo de elemento no computable.
|
||||
$content = preg_replace('/^ ?;/', "", $content);
|
||||
continue; // Rompemos para buscar métodos, clases o constructores.
|
||||
};
|
||||
|
||||
}else{
|
||||
$diamonds = substr($matches[0][0], -1) == "<";
|
||||
$matches[$y[3] + 6][0] && ($return .= $matches[$y[3] + 6][0]);
|
||||
$method .= $matches[$y[3] + 7][0];
|
||||
};
|
||||
|
||||
$diamonds && self::remove_blocks($content, 1);
|
||||
|
||||
$parameters = self::get_parameters($content, 1);
|
||||
$body = self::get_body($content);
|
||||
|
||||
};
|
||||
|
||||
if($body){
|
||||
|
||||
$see = [];
|
||||
|
||||
!in_array($method, $languages["c_sharp"][$i]["methods"]) && ($languages["c_sharp"][$i]["methods"][] = $method);
|
||||
|
||||
$data = $this->parent->add_method($data, $last_method, [
|
||||
"access" => $access,
|
||||
"language_script" => "C#",
|
||||
"name" => $method,
|
||||
"type" => $type,
|
||||
"see" => $see,
|
||||
"parameters" => $parameters,
|
||||
"return" => $return,
|
||||
"hash" => md5($body)
|
||||
]);
|
||||
$last_method = $method;
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
\WMarkDown::save_file($wmd_path, $data);
|
||||
|
||||
}
|
||||
|
||||
};
|
142
PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.JS.php
Executable file
@ -0,0 +1,142 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\ScriptsAnalyzer;
|
||||
|
||||
class JS extends \WMarkDown\Abstracts\ScriptsAnalyzer{
|
||||
|
||||
private static $language_name = [
|
||||
"js" => "JavaScript",
|
||||
"ecma" => "ECMAScript"
|
||||
];
|
||||
|
||||
private static function get_parameters($block){
|
||||
|
||||
$parameters = [];
|
||||
|
||||
foreach(explode(",", $block) as $parameter)
|
||||
($parameter = trim($parameter)) && ($parameters[] = ["name" => $parameter]);
|
||||
|
||||
return $parameters;
|
||||
}
|
||||
|
||||
public function analyze($file, $path = null, &$languages = [], $level = 0){
|
||||
|
||||
if(!($content = \WMarkDown\ScriptsAnalyzer::get_content($file, $path)))
|
||||
return;
|
||||
|
||||
$security = [0];
|
||||
$class_name = "";
|
||||
$construct_parameters = [];
|
||||
$last_method = null;
|
||||
$class = $this->class;
|
||||
$data = \WMarkDown::string_variables(file_exists($wmd_path = $this->parent->get_wmd_path($file, $path)) ? file_get_contents($wmd_path) : $this->original_wmd, array_merge([
|
||||
"subkey_words" => preg_match('/^.+' . $this->common["project"] . '\.([^\/]+)\.(ecma\.)?js\.w\.md$/', $wmd_path) ? preg_replace_callback('/^.+' . $this->common["project"] . '\.([^\/]+)\.(ecma\.)?js\.w\.md$/', function($values){
|
||||
return substr(preg_replace('/[,\.]+/', ",", preg_replace_callback('/([A-Z]+)?([A-Z][a-z0-9]+)/', function($subvalues){
|
||||
return ($subvalues[1] ? "," . $subvalues[1] : "") . "," . strtolower($subvalues[2]);
|
||||
}, $values[1])), 1);
|
||||
}, $wmd_path) : "main",
|
||||
"path" => substr($wmd_path, $this->root_l + 8),
|
||||
"subpath" => substr($wmd_path, $this->root_l + 8, -5),
|
||||
"file" => preg_replace('/^.+\/([^\/]+)\.w\.md$/', "$1", $wmd_path)
|
||||
], $this->common));
|
||||
$language = strpos($wmd_path, ".ecma.") !== false ? "ecma" : "js";
|
||||
$private_methods = [];
|
||||
$methods = [];
|
||||
|
||||
!isset($languages[$language]) && ($languages[$language] = []);
|
||||
$languages[$language][$j = count($languages[$language])] = ["path" => $wmd_path, "level" => $level, "methods" => []];
|
||||
|
||||
// print_r([$file]);
|
||||
|
||||
$content = preg_replace_callback('/("(([^\\\\"]+|\\\\.)*)"|\'(([^\\\\\']+|\\\\.)*)\'|`(([^\\\\`]+|\\\\.)*)`)|([\r\n]|[\s\t]|\/\/[^\r\n]*|\/\*(([\r\n]+|[^\*]+|\*[^\/])*)\*\/)+/', function($values) use($file){
|
||||
$file == "AnP.Components.Tables.ecma.js" && print_r($values);
|
||||
return count($values) == 1 || $values[1] ? $values[0] : " ";
|
||||
}, $content);
|
||||
|
||||
while((false || $security[0] ++ < 200) && preg_match('/^([a-zA-Z0-9_\.]+)\s*=\s*function\s*\(([^\(\)]*)\)|\b(this\.|(const|let|var)\s+)([a-zA-Z0-9_]+)\s*=\s*((\(([^\(\)]*)\)|[a-zA-Z0-9_]+)\s*=>|function\(([^\(\)]*)\))/', $content, $matches, PREG_OFFSET_CAPTURE)){
|
||||
|
||||
$content = substr($content, $matches[0][1] + strlen($matches[0][0]));
|
||||
|
||||
if($matches[1][0]){
|
||||
$class_name = $matches[1][0];
|
||||
$construct_parameters = self::get_parameters($matches[2][0]);
|
||||
}else{
|
||||
|
||||
$l = count($matches);
|
||||
$security[1] = 0;
|
||||
$i = 0;
|
||||
|
||||
$method_access = $matches[4][0] ? "private" : "public";
|
||||
$method_name = $class_name . "." . $matches[5][0];
|
||||
$parameters = self::get_parameters($matches[$l > 8 ? 8 : ($l > 7 ? 7 : 6)][0]);
|
||||
$method_content = "";
|
||||
$return = null;
|
||||
$see = [];
|
||||
|
||||
$matches[4][0] && ($private_methods[] = $matches[5][0]);
|
||||
|
||||
while((false || $security[1] ++ < 100) && preg_match('/("(([^\\\\"]+|\\\\.)*)"|\'(([^\\\\\']+|\\\\.)*)\'|`(([^\\\\`]+|\\\\.)*)`|\/[^\s]([^\\\\\n\r\/]+|\\\\[^\r\n])*\/[igm]{0,3})|[\[\]\{\}\(\),;]/', $content, $submatches, PREG_OFFSET_CAPTURE)){
|
||||
|
||||
$ended = false;
|
||||
|
||||
switch($submatches[0][0]){
|
||||
case "(":
|
||||
case "[":
|
||||
case "{":
|
||||
$i ++;
|
||||
break;
|
||||
case ")":
|
||||
case "]":
|
||||
case "}":
|
||||
$ended = -- $i < 1;
|
||||
break;
|
||||
case ",":
|
||||
case ";":
|
||||
$ended = !$i;
|
||||
break;
|
||||
};
|
||||
|
||||
if($i >= 0){
|
||||
$method_content .= substr($content, 0, $submatches[0][1]) . $submatches[0][0];
|
||||
$content = substr($content, $submatches[0][1] + strlen($submatches[0][0]));
|
||||
};
|
||||
|
||||
if($ended)
|
||||
break;
|
||||
|
||||
};
|
||||
|
||||
$return = trim($method_content)[0] != "{" ? true : preg_match('/\breturn [^;]+[ ;]*[\};]$/', $method_content);
|
||||
$methods[] = $method_name;
|
||||
|
||||
// Implementamos los métodos dependientes.
|
||||
preg_replace_callback('/\b((this|' . $this->object . ')\.)?([a-zA-Z0-9_]+)\(/', function($values) use(&$see, $class, $class_name, $methods){
|
||||
$method = (!$values[2] || $values[2] == "this" ? $class_name : $class) . "." . $values[3];
|
||||
($values[2] || in_array($method, $methods)) && !in_array($method, $see) && ($see[] = $method);
|
||||
}, $method_content);
|
||||
// Métodos privados dependientes.
|
||||
foreach($private_methods as $method)
|
||||
preg_match('/\b' . $method . '\b/', $method_content) && !in_array($method = $class_name . "." . $method, $see) && ($see[] = $method);
|
||||
|
||||
$languages[$language][$j]["methods"][] = $method_name;
|
||||
$data = $this->parent->add_method($data, $last_method, [
|
||||
"access" => $method_access,
|
||||
"language_script" => self::$language_name[$language],
|
||||
"name" => $method_name,
|
||||
"type" => "object",
|
||||
"see" => $see,
|
||||
"parameters" => $parameters,
|
||||
"return" => $return,
|
||||
"hash" => md5($method_content)
|
||||
]);
|
||||
$last_method = $method_name;
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
\WMarkDown::save_file($wmd_path, $data);
|
||||
|
||||
}
|
||||
|
||||
};
|
186
PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.PHP.php
Executable file
@ -0,0 +1,186 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\ScriptsAnalyzer;
|
||||
|
||||
class PHP extends \WMarkDown\Abstracts\ScriptsAnalyzer{
|
||||
|
||||
private static $custom_types = [
|
||||
"__construct" => "constructor",
|
||||
"__destruct" => "destructor",
|
||||
"__call" => "mágico"
|
||||
];
|
||||
|
||||
public function analyze($file, $path = null, &$languages = [], $level = 0){
|
||||
|
||||
if(!($content = \WMarkDown\ScriptsAnalyzer::get_content($file, $path)))
|
||||
return;
|
||||
|
||||
$namespace = "";
|
||||
$class_name = "";
|
||||
$class_type = "default";
|
||||
$security = [0];
|
||||
$p = [1, 2, 4]; // Cursor position.
|
||||
$data = \WMarkDown::string_variables(file_exists($wmd_path = $this->parent->get_wmd_path($file, $path)) ? file_get_contents($wmd_path) : $this->original_wmd, array_merge([
|
||||
"subkey_words" => preg_match('/^.+' . $this->common["project"] . '\.([^\/]+)\.php\.w\.md$/', $wmd_path) ? preg_replace_callback('/^.+' . $this->common["project"] . '\.([^\/]+)\.php\.w\.md$/', function($values){
|
||||
return substr(preg_replace('/[,\.]+/', ",", preg_replace_callback('/([A-Z]+)?([A-Z][a-z0-9]+)/', function($subvalues){
|
||||
return ($subvalues[1] ? "," . $subvalues[1] : "") . "," . strtolower($subvalues[2]);
|
||||
}, $values[1])), 1);
|
||||
}, $wmd_path) : "main",
|
||||
"path" => substr($wmd_path, $this->root_l + 8),
|
||||
"subpath" => substr($wmd_path, $this->root_l + 8, -5),
|
||||
"file" => preg_replace('/^.+\/([^\/]+)\.w\.md$/', "$1", $wmd_path)
|
||||
], $this->common));
|
||||
$last_method = null;
|
||||
|
||||
!isset($languages["php"]) && ($languages["php"] = []);
|
||||
$languages["php"][$x = count($languages["php"])] = ["path" => $wmd_path, "level" => $level, "methods" => []];
|
||||
|
||||
// Limpiamos el Script de saltos de línea y comentarios y unificamos los espaciados.
|
||||
$content = preg_replace_callback('/("(([^\\\\"]+|\\\\.)*)"|\'(([^\\\\\']+|\\\\.)*)\')|([\t\s]|[\r\n]|\/\/[^\r\n]*|\/\*(([\r\n]+|[^\*]+|\*[^\/])*)\*\/)+/', function($values){
|
||||
return $values[1] ? $values[0] : " ";
|
||||
}, $content);
|
||||
|
||||
// Buscamos espacios de nombres, clases, interfaces, abstracciones y métodos.
|
||||
while((true || $security[0] ++ < 100) && preg_match('/\b(' .
|
||||
'namespace ([^; ]+);|' .
|
||||
'(class|interface) ([a-zA-Z0-9_]+)|' .
|
||||
'((public|protected|private) )?(static )?function ([a-zA-Z0-9_]+) ?\(' .
|
||||
')/', $content, $matches, PREG_OFFSET_CAPTURE)){
|
||||
|
||||
$l = count($matches);
|
||||
|
||||
$content = substr($content, $matches[0][1] + strlen($matches[0][0]));
|
||||
|
||||
if($l > $p[2] + 1){ // Método.
|
||||
|
||||
$method_access = trim($matches[$p[2] + 1][0]);
|
||||
$method_name = $matches[$p[2] + 4][0];
|
||||
$languages["php"][$x]["methods"][] = $method_full_name = $class_name . ($matches[$p[2] + 3][0] ? "::" : "->") . $method_name;
|
||||
$method_type = isset(self::$custom_types[$method_name]) ? self::$custom_types[$method_name] : ($matches[$p[2] + 3][0] ? "static" : "object");
|
||||
$parameters = [];
|
||||
$see = [];
|
||||
$return = null;
|
||||
$security[1] = 0;
|
||||
$security[2] = 0;
|
||||
|
||||
if(trim($content)[0] != ")"){ // Verificamos que tiene parámetros.
|
||||
|
||||
$i = 1; // Si llega a 0 es que se cerró el bloque de los parámetros.
|
||||
$default_value = "";
|
||||
$parameter_name = null;
|
||||
$parameter_type = null;
|
||||
$parameter_reference = false;
|
||||
|
||||
// Analizamos los parámetros.
|
||||
while((true || $security[1] ++ < 20) && preg_match('/' .
|
||||
'(((?![\$\&])[a-zA-Z0-9_])+ )?(\&)?\$([a-zA-Z0-9_]+)|' .
|
||||
' ?(=) ?(null|true|false|\d+|"(([\\\\"]+|\\\\.)*)"|\'(([\\\\\']+|\\\\.)*)\')?|' .
|
||||
' ?(,) ?|' .
|
||||
'([^,\(\)\[\]\{\}"\']+|"(([\\\\"]+|\\\\.)*)"|\'(([\\\\\']+|\\\\.)*)\')|' .
|
||||
'([\(\[\{])|([\}\]\)])' .
|
||||
'/', $content, $submatches, PREG_OFFSET_CAPTURE)){
|
||||
|
||||
$m = count($submatches);
|
||||
|
||||
$content = substr($content, $submatches[0][1] + strlen($submatches[0][0]));
|
||||
|
||||
if($m > 17 && $submatches[17][0]) // Apertura de bloque.
|
||||
$i ++;
|
||||
else if($m > 18 && $submatches[18][0]){ // Cierre de bloque.
|
||||
if(!-- $i){
|
||||
$parameters[] = [
|
||||
"name" => $parameter_name,
|
||||
"type" => $parameter_type,
|
||||
"reference" => $parameter_reference,
|
||||
"default" => $default_value
|
||||
];
|
||||
break;
|
||||
};
|
||||
}elseif($m > 11 && $submatches[11][0]){ // Se cierra un parámetro.
|
||||
if($i > 1)
|
||||
$default_value = $default_value . $submatches[0][0];
|
||||
else{
|
||||
$parameters[] = [
|
||||
"name" => $parameter_name,
|
||||
"type" => $parameter_type,
|
||||
"reference" => $parameter_reference,
|
||||
"default" => $default_value
|
||||
];
|
||||
$default_value = "";
|
||||
$parameter_name = null;
|
||||
$parameter_type = null;
|
||||
$parameter_reference = false;
|
||||
};
|
||||
}elseif($submatches[4][0]){ // Se crea un nuevo parámetro.
|
||||
$parameter_name = ($submatches[3][0] ? "&" : "") . "$" . $submatches[4][0];
|
||||
$parameter_type = $submatches[1][0] ? $submatches : null;
|
||||
$parameter_reference = !!$submatches[3][0];
|
||||
}elseif($m > 6 && $submatches[6][0]) // Valor por defecto.
|
||||
$default_value = $submatches[6][0];
|
||||
|
||||
};
|
||||
}else // No tiene párametros de entrada.
|
||||
$content = substr($content, 1);
|
||||
|
||||
$i = 0;
|
||||
$body = "";
|
||||
|
||||
// Analizamos bloques de sentencias para analizar inicio y fin del método.
|
||||
while((true || $security[2] ++ < 40) && preg_match('/[\{\}]/', $content, $submatches, PREG_OFFSET_CAPTURE)){
|
||||
|
||||
$end = false;
|
||||
|
||||
$body .= substr($content, 0, $submatches[0][1]) . $submatches[0][0];
|
||||
$content = substr($content, $submatches[0][1] + strlen($submatches[0][0]));
|
||||
|
||||
switch($submatches[0][0]){
|
||||
case "{":
|
||||
$i ++;
|
||||
break;
|
||||
case "}":
|
||||
$end = !-- $i;
|
||||
break;
|
||||
};
|
||||
|
||||
if($end)
|
||||
break;
|
||||
|
||||
};
|
||||
|
||||
// Analizamos retorno.
|
||||
$return = preg_match('/\breturn[^;]+[; ]*}$/', $body) ? true : null;
|
||||
|
||||
// Buscamos dependencias de sí mismo.
|
||||
preg_replace_callback('/"(([^\\\\"]+|\\\\.)*)"|\'(([^\\\\\']+|\\\\.)*)\'|(\$this\->([a-zA-Z0-9_]+|\->)+|\\\\?([a-zA-Z0-9_\\\\]+|\\\\)::[a-zA-Z0-9_]+)\(/', function($values) use(&$see, $class_name){
|
||||
if(count($values) < 6 || ($values[6] && !preg_match('/\$this\->([^\-\(]+\(|wmarkdown\->)/', $values[0])))
|
||||
return;
|
||||
!in_array($method = ($method = preg_replace('/^(\$this(\->)|self(\:{2}))/', $class_name . "$2$3", preg_replace('/^\$this\->wmarkdown/', "\\WMarkDown", substr($values[0], 0, -1))))[0] == '\\' ? substr($method, 1) : $method, $see) && ($see[] = $method);
|
||||
}, $body);
|
||||
|
||||
// Añadimos el método al código WMD almacenado en $data tras el último método registrado.
|
||||
$data = $this->parent->add_method($data, $last_method, [
|
||||
"access" => $method_access,
|
||||
"language_script" => "PHP",
|
||||
"name" => $method_full_name,
|
||||
"type" => $method_type,
|
||||
"see" => $see,
|
||||
"parameters" => $parameters,
|
||||
"return" => $return,
|
||||
"hash" => md5($content)
|
||||
]);
|
||||
$last_method = $method_full_name;
|
||||
|
||||
}elseif($l > $p[1] + 1){ // Clase
|
||||
$class_type = $matches[$p[1] + 1][0];
|
||||
$class_name = $namespace . '\\' . $matches[$p[1] + 2][0];
|
||||
}else // Espacio de nombres.
|
||||
$class_name = $namespace = $matches[$p[0] + 1][0];
|
||||
|
||||
};
|
||||
|
||||
// Creamos el fichero WMD del fichero PHP.
|
||||
\WMarkDown::save_file($wmd_path, $data);
|
||||
|
||||
}
|
||||
|
||||
};
|
19
PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.Python.php
Executable file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\ScriptsAnalyzer;
|
||||
|
||||
class Python extends \WMarkDown\Abstracts\ScriptsAnalyzer{
|
||||
|
||||
public function analyze($file, $path = null, &$languages = [], $level = 0){
|
||||
|
||||
if(!($content = \WMarkDown\ScriptsAnalyzer::get_content($file, $path)))
|
||||
return;
|
||||
|
||||
$wmd_path = $this->parent->get_wmd_path($file, $path);
|
||||
|
||||
!isset($languages["python"]) && ($languages["python"] = []);
|
||||
$languages["python"][$i = count($languages["python"])] = ["path" => $wmd_path, "level" => $level, "methods" => []];
|
||||
|
||||
}
|
||||
|
||||
};
|
17
PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.SQL.php
Executable file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown\ScriptsAnalyzer;
|
||||
|
||||
class SQL extends \WMarkDown\Abstracts\ScriptsAnalyzer{
|
||||
|
||||
public function analyze($file, $path = null, &$languages = [], $level = 0){
|
||||
|
||||
$wmd_path = $this->parent->get_wmd_path($file, $path);
|
||||
$language = strpos($wmd_path, ".transact.") ? "transact_sql" : (strpos($wmd_path, ".lite.") ? "sql_lite" : "mariadb");
|
||||
|
||||
!isset($languages[$language]) && ($languages[$language] = []);
|
||||
$languages[$language][$i = count($languages[$language])] = ["path" => $wmd_path, "level" => $level, "methods" => []];
|
||||
|
||||
}
|
||||
|
||||
};
|
137
PHP/WMarkDown.Modules.php
Executable file
@ -0,0 +1,137 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown;
|
||||
|
||||
class Modules{
|
||||
|
||||
private $wmarkdown;
|
||||
private $modules = [];
|
||||
private $excludes = [];
|
||||
public $menu_level = 0;
|
||||
public $html_data = [];
|
||||
private $documentation_root_length = 0;
|
||||
|
||||
public function add($modules, $overwrite = null){
|
||||
if(!$modules)
|
||||
return;
|
||||
|
||||
if(!is_bool($overwrite))
|
||||
$overwrite = $this->wmarkdown->settings(["modules_overwrite", "module_overwrite", "overwrite"]);
|
||||
|
||||
foreach(is_string($modules) || (is_array($modules) && !isset($modules[0])) ? [$modules] : $modules as $items){
|
||||
if(!$items)
|
||||
continue;
|
||||
if(is_string($items)){
|
||||
$json = null;
|
||||
try{
|
||||
$json = @json_decode($items, true);
|
||||
}catch(\Exception $exception){};
|
||||
if(!$json && !($json = @json_decode(file_get_contents($this->wmarkdown->get_root() . $items))))
|
||||
continue;
|
||||
$items = $json;
|
||||
};
|
||||
if(is_array($items)){
|
||||
if(isset($items[0]))
|
||||
$this->add($items);
|
||||
else
|
||||
foreach($items as $name => $module)
|
||||
if(!in_array($name, $this->excludes) && class_exists($module) && ($overwrite || !$this->modules[$name]))
|
||||
$this->modules[$name] = new $module($this->wmarkdown);
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
private function __construct($wmarkdown, $excludes){
|
||||
|
||||
$this->wmarkdown = $wmarkdown;
|
||||
$this->excludes = is_array($excludes) ? $excludes : [];
|
||||
|
||||
foreach(["default_modules", "modules"] as $modules)
|
||||
$this->add($this->wmarkdown->settings($modules), true);
|
||||
|
||||
}
|
||||
|
||||
public function create_menu_item($level, $id, $content){
|
||||
return ('
|
||||
<li data-level="' . $level . '" data-deployed="false" data-levels="0" data-parent-deployed="' . ($level == 1 ? "true" : "false") . '" data-id="' . $this->wmarkdown->get_hash() . '">
|
||||
<span data-icon="deploy" onclick="wmarkdown.deploy(this, event);"></span>
|
||||
<a href="#' . $id . '" title="' . ($content = preg_replace('/\\\\(.)/', "$1", $content)) . '" target="_self" onclick="wmarkdown.deploy(this, event, true);">' . $content . '</a>
|
||||
</li>
|
||||
');
|
||||
}
|
||||
|
||||
private static function create_file_item($url, $title, $file){
|
||||
return ('
|
||||
<li>
|
||||
<a href="' . $url . '" data-icon="link"></a>
|
||||
<a href="#' . preg_replace('/[^a-z\d]+/', "-", strtolower(substr($file, 1))) . '" title="' . $title . '" target="_self">' . $title . '</a>
|
||||
</li>
|
||||
');
|
||||
}
|
||||
|
||||
private function prepare($string, $master, $level){
|
||||
|
||||
$results = '';
|
||||
$menu = '';
|
||||
$files = '';
|
||||
$title = $this->wmarkdown->settings("default_title");
|
||||
$title_root = $this->wmarkdown->settings("title");
|
||||
|
||||
if($master === null)
|
||||
$master = $this;
|
||||
|
||||
if(preg_match('/^#+ ?([^\r\n]+)/m', $string, $matches))
|
||||
$title = $matches[1];
|
||||
if($title_root)
|
||||
$title = $title_root . " - " . $title;
|
||||
|
||||
while(true && $string){
|
||||
|
||||
$first = null;
|
||||
|
||||
foreach($this->modules as $name => $module)
|
||||
if(($position = $module->get_position($string)) !== null && $position >= 0 && ($first === null || $first["position"] > $position))
|
||||
$first = [
|
||||
"position" => $position,
|
||||
"module" => $name
|
||||
];
|
||||
|
||||
if(!$first)
|
||||
break;
|
||||
|
||||
$module = $this->modules[$first["module"]];
|
||||
$module->process($string, $master, $level);
|
||||
|
||||
if($first["module"] == "headers")
|
||||
$menu .= $this->create_menu_item($this->menu_level = $module->get_level(), $module->get_id(), $module->get_content());
|
||||
elseif($first["module"] == "includes"){
|
||||
$menu .= $module->get_menu();
|
||||
if(!$this->documentation_root_length)
|
||||
$this->documentation_root_length = strlen($this->wmarkdown->get_documentation_path());
|
||||
$files .= self::create_file_item(preg_replace('/(\.w)?\.md/', ".html", substr($module->get_content(), $this->documentation_root_length)), trim(preg_replace('/^([^\-]+\-)?(.+)$/', "$2", $module->get_title())), $module->get_content());
|
||||
};
|
||||
|
||||
$results .= substr($string, 0, $module->get_from()) . $module->get_html();
|
||||
$string = substr($string, $to = $module->get_to());
|
||||
|
||||
foreach($this->modules as $name => $block)
|
||||
if($block->has_more())
|
||||
$block->set_position($to);
|
||||
|
||||
};
|
||||
$results .= $string;
|
||||
|
||||
return array_merge([
|
||||
"menu" => $menu,
|
||||
"content" => $results,
|
||||
"files" => $files,
|
||||
"title" => $title
|
||||
], is_array($this->html_data) ? $this->html_data : []);
|
||||
}
|
||||
|
||||
public static function format($wmarkdown, $string, $excludes = [], $master = null, $level = 0){
|
||||
return (new \WMarkDown\Modules($wmarkdown, $excludes))->prepare($string, $master, $level);
|
||||
}
|
||||
|
||||
};
|
127
PHP/WMarkDown.SQLite.php
Executable file
@ -0,0 +1,127 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown;
|
||||
|
||||
class SQLite{
|
||||
|
||||
private $kmardown;
|
||||
private $connection = null;
|
||||
private $connected = false;
|
||||
private $error = 0;
|
||||
|
||||
private function connect(){
|
||||
if($this->connection)
|
||||
return;
|
||||
|
||||
try{
|
||||
$this->connection = new \PDO("sqlite:" . $this->wmarkdown->settings("database_file"));
|
||||
$this->connected = true;
|
||||
}catch(\Exception $exception){
|
||||
$this->error |= 1 << 0;
|
||||
$this->close();
|
||||
return;
|
||||
};
|
||||
|
||||
$this->connection->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
|
||||
|
||||
$this->connection->beginTransaction();
|
||||
|
||||
if(!$this->query("select * from sqlite_master")["tables"][0]){
|
||||
$this->query(file_get_contents($this->wmarkdown->settings("sql_generator")));
|
||||
$this->query(file_get_contents($this->wmarkdown->settings("sql_views")));
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
public function __construct($wmarkdown){
|
||||
|
||||
$this->wmarkdown = $wmarkdown;
|
||||
$this->connect();
|
||||
|
||||
}
|
||||
|
||||
private function close(){
|
||||
|
||||
if($this->connection){
|
||||
try{
|
||||
$this->connection->commit();
|
||||
}catch(\Exception $exception){
|
||||
try{
|
||||
$this->connection->rollback();
|
||||
}catch(\Exception $exception){
|
||||
$this->error |= 1 << 3;
|
||||
};
|
||||
$this->error |= 1 << 2;
|
||||
};
|
||||
}else
|
||||
$this->error |= 1 << 1;
|
||||
|
||||
$this->connection = null;
|
||||
|
||||
}
|
||||
|
||||
public function __destruct(){
|
||||
|
||||
$this->close();
|
||||
|
||||
}
|
||||
|
||||
public function is_connected(){
|
||||
return !!$this->connected;
|
||||
}
|
||||
|
||||
public function reconnect(){
|
||||
|
||||
$this->close();
|
||||
$this->connect();
|
||||
|
||||
}
|
||||
|
||||
public function query($query){
|
||||
|
||||
$results = [
|
||||
"connection_error" => $this->error,
|
||||
"tables" => [],
|
||||
"query_error" => 0
|
||||
];
|
||||
|
||||
if(!$this->is_connected()){
|
||||
$results["query_error"] |= 1 << 1;
|
||||
return $results;
|
||||
};
|
||||
|
||||
preg_replace_callback('/(([^\;\'"]+|\'(([^\'\\\\]+|\\\\(.|[\r\n]))*)\'|"(([^"\\\\]+|\\\\(.|[\r\n]))*)")+);?/', function($values) use(&$results){
|
||||
|
||||
$statement = $this->connection->prepare($values[1]);
|
||||
$statement->execute();
|
||||
|
||||
try{
|
||||
$table = [];
|
||||
foreach($statement->fetchAll(\PDO::FETCH_ASSOC) as $new_row){
|
||||
$row = [];
|
||||
foreach($new_row as $key => $value){
|
||||
if(is_string($value)){
|
||||
if($value[0] == "[" || $value[0] == "{"){
|
||||
try{
|
||||
$row[$key] = $this->ur3->json_decode(utf8_encode($value), true);
|
||||
if(!$row[$key])
|
||||
$row[$key] = utf8_encode($value);
|
||||
}catch(\Exception $exception){
|
||||
$row[$key] = utf8_encode($value);
|
||||
};
|
||||
}else
|
||||
$row[$key] = utf8_encode($value);
|
||||
}else
|
||||
$row[$key] = $value;
|
||||
};
|
||||
$table[] = $row;
|
||||
};
|
||||
$results["tables"][] = $table;
|
||||
}catch(\Exception $exception){};
|
||||
|
||||
}, $query);
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
};
|
401
PHP/WMarkDown.ScriptsAnalyzer.php
Executable file
@ -0,0 +1,401 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown;
|
||||
|
||||
class ScriptsAnalyzer{
|
||||
|
||||
private $wmarkdown = null;
|
||||
private $ignore = [];
|
||||
private $root = null;
|
||||
private $root_l = 0;
|
||||
private $original_wmd = null;
|
||||
private $file_wmd = null;
|
||||
private $common = [];
|
||||
private $class = null;
|
||||
private $object = null;
|
||||
private $only = null;
|
||||
private static $types = [
|
||||
"__construct" => "constructor",
|
||||
"__init__" => "constructor",
|
||||
"__destruct" => "destructor",
|
||||
"__del__" => "destructor",
|
||||
"object" => "objeto",
|
||||
"static" => "estático",
|
||||
"classmethod" => "de clase",
|
||||
"staticmethod" => "estático"
|
||||
];
|
||||
private static $languages = [
|
||||
"php" => "PHP",
|
||||
"python" => "Python",
|
||||
"js" => "JavaScript",
|
||||
"ecma" => "ECMAScript",
|
||||
"mariadb" => "MariaDB",
|
||||
"transact_sql" => "Transact SQL",
|
||||
"sql_lite" => "SQLite",
|
||||
"c_sharp" => "C#"
|
||||
];
|
||||
private static $classes = [
|
||||
"php" => "PHP",
|
||||
"js" => "JS",
|
||||
"cs" => "CSharp",
|
||||
"py" => "Python",
|
||||
"sql" => "SQL"
|
||||
];
|
||||
private static $languages_with_overloads = ["C#"];
|
||||
private static $languages_typed = ["SQLite", "Transact SQL", "MariaDB", "C#"];
|
||||
private static $languages_with_status = ["PHP", "Python", "SQLite", "Transact SQL", "MariaDB", "C#"];
|
||||
public $php;
|
||||
public $js;
|
||||
public $sql;
|
||||
public $py;
|
||||
public $cs;
|
||||
|
||||
public function __construct($wmarkdown, $input = []){
|
||||
|
||||
$date = date("Ymd");
|
||||
|
||||
$this->wmarkdown = $wmarkdown;
|
||||
$this->ignore = $this->wmarkdown->get_ignore_file_paths();
|
||||
$this->root_l = strlen($this->root = $this->wmarkdown->get_root());
|
||||
$this->original_wmd = file_exists($path = $this->wmarkdown->settings("wmd_file")) ? file_get_contents($path) : null;
|
||||
$this->file_wmd = file_exists($path = $this->wmarkdown->settings("wmd_file_empty")) ? file_get_contents($path) : null;
|
||||
$this->class = $this->wmarkdown->settings("class");
|
||||
$this->object = $this->wmarkdown->settings("object");
|
||||
$this->common = [
|
||||
"author" => $this->wmarkdown->settings("author"),
|
||||
"project" => $this->wmarkdown->settings("project"),
|
||||
"url" => $this->wmarkdown->settings("url"),
|
||||
"project_author" => $this->wmarkdown->settings("project_author"),
|
||||
"key_words" => $this->wmarkdown->settings("key_words"),
|
||||
"language" => $this->wmarkdown->settings("language"),
|
||||
"logo" => $this->wmarkdown->settings("logo"),
|
||||
"since" => $date,
|
||||
"version" => $date
|
||||
];
|
||||
$this->only = $this->wmarkdown->settings("only");
|
||||
|
||||
}
|
||||
|
||||
public static function get_content($file, $path){
|
||||
return file_exists($subpath = $path . "/" . $file) ? file_get_contents($subpath) : null;
|
||||
}
|
||||
|
||||
public function get_wmd_path($file, $path){
|
||||
return $this->root . "/WMD/dev" . substr($path . "/" . $file, $this->root_l) . ".w.md";
|
||||
}
|
||||
|
||||
private function write($file, $path, $content){
|
||||
file_put_contents($content, $this->get_wmd_path($file, $path));
|
||||
}
|
||||
|
||||
private static function get_properties($value){
|
||||
|
||||
preg_match('/^\#([^\s\t\\\\]+)((\\\\t)+|[\s\t]+)+([^\s\t\\\\]+)((\\\\t)+|[\s\t]+)+([^\s\t\\\\]+)/', $value, $matches, PREG_OFFSET_CAPTURE);
|
||||
|
||||
return [$matches[1][0], $matches[4][0], $matches[7][0]];
|
||||
}
|
||||
|
||||
private static function get_attributes($wdoc){
|
||||
|
||||
$see = [];
|
||||
$language = null;
|
||||
$access = null;
|
||||
$parameters = [];
|
||||
$return = null;
|
||||
$parameters_full = [];
|
||||
$hash = null;
|
||||
|
||||
preg_replace_callback('/^([\#\@])([^\s]+)\s+([^\r\n]+)/m', function($values) use(&$see, &$language, &$access, &$parameters, &$return, &$parameters_full, &$hash){
|
||||
if($values[1] == "#"){
|
||||
if($values[2] == "return")
|
||||
$return = true;
|
||||
else{
|
||||
$parameters[] = $values[2];
|
||||
$parameters_full[] = $values[0];
|
||||
};
|
||||
}else{
|
||||
switch($values[2]){
|
||||
case "lang":
|
||||
$language = $values[3];
|
||||
break;
|
||||
case "see":
|
||||
$see[] = $values[3];
|
||||
break;
|
||||
case "access":
|
||||
$access = $values[3];
|
||||
break;
|
||||
case "hash":
|
||||
$hash = $values[3];
|
||||
break;
|
||||
};
|
||||
};
|
||||
}, $wdoc);
|
||||
|
||||
return [
|
||||
"see" => $see,
|
||||
"language" => $language,
|
||||
"access" => $access,
|
||||
"parameters" => $parameters,
|
||||
"return" => $return,
|
||||
"parameters_full" => $parameters_full,
|
||||
"hash" => $hash
|
||||
];
|
||||
}
|
||||
|
||||
private static function set_parameter($parameter){
|
||||
return "#" . (is_string($parameter) ? $parameter = ["name" => $parameter] : $parameter)["name"] . "\t" . (empty($parameter["type"]) ? "-" : $parameter["type"]) . " " . (empty($parameter["default"]) ? "optional" : "required") . " Parámetro " . $parameter["name"] . "\n";
|
||||
}
|
||||
|
||||
private static function set_return($return){
|
||||
if(is_bool($return) || is_integer($return))
|
||||
return $return ? "#return\t- - Retorno.\n" : "";
|
||||
if(is_string($return))
|
||||
return $return ? "#return\t" . $return . " - Retorno.\n" : "";
|
||||
return "";
|
||||
}
|
||||
|
||||
private function update_wdoc(&$wdoc, $current, $new){
|
||||
|
||||
$parameters = [];
|
||||
$l = 0;
|
||||
$last_parameter = null;
|
||||
$return = null;
|
||||
$parameters_final = [];
|
||||
$m = count($current["parameters"]);
|
||||
|
||||
if(preg_match('/^(\#([^\r\n]+)[\r\n]+)+/m', $wdoc, $parameters, PREG_OFFSET_CAPTURE)){
|
||||
$wdoc = substr($wdoc, 0, $parameters[0][1]) . substr($wdoc, $parameters[0][1] + strlen($parameters[0][0]), -3);
|
||||
$parameters = preg_split('/(\r\n|[\r\n])/', trim($parameters[0][0]));
|
||||
$l = count($parameters);
|
||||
$last_parameter = $parameters[$l - 1];
|
||||
}else
|
||||
$wdoc = substr($wdoc, 0, -3);
|
||||
|
||||
if($last_parameter && preg_match('/^\#return[\\\\\s\t]/', $last_parameter, $matches, PREG_OFFSET_CAPTURE)){
|
||||
$return = $last_parameter . "\n";
|
||||
array_pop($parameters);
|
||||
$l --;
|
||||
}else if(isset($new["return"]))
|
||||
$return = self::set_return($new["return"]);
|
||||
|
||||
$wdoc = preg_replace('/^(@see[^\r\n]+[\r\n]+)+/m', "@see\t" . implode("\n@see\t", $new["see"]) . "\n", $wdoc);
|
||||
$wdoc = preg_replace('/^@access[^\r\n]+/m', "@access\t" . $new["access"], $wdoc);
|
||||
$wdoc = preg_replace('/^@version[^\r\n]+/m', "@version\t" . $this->common["version"], $wdoc);
|
||||
if($new["hash"])
|
||||
$wdoc = preg_match('/^@hash/m', $wdoc) ? preg_replace('/^@hash[^\r\n]+/m', "@hash\t" . $new["hash"], $wdoc) : $wdoc . "\n@hash\t" . $new["hash"];
|
||||
|
||||
foreach($new["parameters"] as $i => $parameter)
|
||||
$parameters_final[$i] = (
|
||||
$i < $m && $current["parameters"][$i] == $parameter ? $parameters[$i] : (
|
||||
($j = array_search($parameter, $current["parameters"])) !== false ? $current["parameters"][$j] :
|
||||
$new["parameters_full"][$i]
|
||||
));
|
||||
|
||||
$wdoc .= (substr($wdoc, -1) == "\n" ? "" : "\n") . (($parameters = implode("\n", $parameters_final)) ? $parameters . "\n" : "") . ($return ? $return : "") . "]]";
|
||||
|
||||
return $wdoc;
|
||||
}
|
||||
|
||||
public function add_method($wmd, $last, $variables){
|
||||
|
||||
if(isset($variables["see"])){
|
||||
if(is_array($variables["see"])){
|
||||
|
||||
$see = "";
|
||||
|
||||
foreach($variables["see"] as $item)
|
||||
$see .= "@see " . $item . "\n";
|
||||
$variables["see"] = $see;
|
||||
|
||||
};
|
||||
}else
|
||||
$variables["see"] = "";
|
||||
|
||||
if(isset($variables["parameters"])){
|
||||
if(is_array($variables["parameters"])){
|
||||
|
||||
$parameters = "";
|
||||
|
||||
foreach($variables["parameters"] as $parameter)
|
||||
$parameters .= self::set_parameter($parameter);
|
||||
$variables["parameters"] = $parameters;
|
||||
};
|
||||
}else
|
||||
$variables["parameters"] = $parameters;
|
||||
|
||||
$variables["return"] = isset($variables["return"]) ? self::set_return($variables["return"]) : "";
|
||||
|
||||
$method_variables = array_merge($variables, $this->common);
|
||||
$new_method = \WMarkDown::string_variables("[[wdoc\n" .
|
||||
"Método {type}.\n" .
|
||||
"@name {name}\n" .
|
||||
"{see}" .
|
||||
"@lang {language_script}\n" .
|
||||
"@author {author}\n" .
|
||||
"@since {since}\n" .
|
||||
"@version {version}\n" .
|
||||
"@access {access}\n" .
|
||||
"@hash {hash}\n" .
|
||||
"{parameters}" .
|
||||
"{return}" .
|
||||
"]]", $method_variables);
|
||||
$pattern = preg_replace('/\\\\{8}/', "\\\\\\\\\\\\\\\\", '/[\r\n]\#\# \[\[plain ' . preg_replace('/([\.\-\:\\\\])/', "\\\\$1", $variables["name"]) . '\]\]((?!(\#\# |\[\[html_data))(.|[\n\r]))+/');
|
||||
$new = self::get_attributes($new_method);
|
||||
$language = $new["language"];
|
||||
|
||||
if(preg_match($pattern, $wmd, $matches, PREG_OFFSET_CAPTURE)){
|
||||
|
||||
$content = "";
|
||||
$temporary = $matches[0][0];
|
||||
$done = false;
|
||||
$overload = in_array($language, self::$languages_with_overloads);
|
||||
|
||||
while(preg_match('/([\r\n]\[\[wdoc((?!([\r\n]\]\]))(.|[\r\n]))+[\r\n]\]\])/', $temporary, $submatches, PREG_OFFSET_CAPTURE)){
|
||||
|
||||
$current = self::get_attributes($submatches[0][0]);
|
||||
|
||||
$wdoc = $submatches[0][0];
|
||||
$content .= substr($temporary, 0, $submatches[0][1]);
|
||||
$temporary = substr($temporary, $submatches[0][1] + strlen($submatches[0][0]));
|
||||
|
||||
if($overload){
|
||||
|
||||
if($done){
|
||||
$content .= $wdoc;
|
||||
continue;
|
||||
};
|
||||
|
||||
$ok = true;
|
||||
|
||||
foreach($new as $key => $value)
|
||||
if(!in_array($key, ["parameters_full", "hash"]) && !($ok = $value == $current[$key]))
|
||||
break;
|
||||
$content .= ($done = $ok) && $new["hash"] != $current["hash"] ? $this->update_wdoc($wdoc, $current, $new) : $wdoc;
|
||||
|
||||
}else{
|
||||
$same = true;
|
||||
foreach($new as $key => $value)
|
||||
if(!in_array($key, ["parameters_full"]) && !($same = $value == $current[$key]))
|
||||
break;
|
||||
$content .= $same ? $wdoc : $this->update_wdoc($wdoc, $current, $new);
|
||||
break;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
$overload && !$done && ($content .= "\n\n" . $new_method);
|
||||
|
||||
return substr($wmd, 0, $matches[0][1]) . $content . "\n\n" . substr($wmd, $matches[0][1] + strlen($matches[0][0]));
|
||||
};
|
||||
|
||||
$fragments = $last ? explode("## " . $last . "\n", $wmd) : [$wmd];
|
||||
|
||||
$new_method = \WmarkDown::string_variables("## [[plain {name}]]\n\n", $method_variables) . $new_method;
|
||||
|
||||
$results = null;
|
||||
|
||||
if(count($fragments) > 1)
|
||||
$results = $fragments[0] . "## [[plain " . $last . "\n" . preg_replace('/^(\#{2} |\[{2}html_data)/m', $new_method . "]]\n\n$1", $fragments[1], 1);
|
||||
else
|
||||
$results = preg_replace('/^(\[{2}html_data)/m', $new_method . "\n\n$1", $fragments[0], 1);
|
||||
|
||||
return $results;
|
||||
|
||||
if(count($fragments) > 1)
|
||||
return $fragments[0] . "## [[plain " . $last . "\n" . preg_replace('/^(\#{2} |\[{2}html_data)/m', $new_method . "]]\n\n$1", $fragments[1], 1);
|
||||
return preg_replace('/^(\[{2}html_data)/m', $new_method . "\n\n$1", $fragments[0], 1);
|
||||
}
|
||||
|
||||
private function get_commons(){
|
||||
return [
|
||||
"common" => $this->common,
|
||||
"original_wmd" => $this->original_wmd,
|
||||
"root" => $this->root,
|
||||
"root_l" => $this->root_l,
|
||||
"class" => $this->class,
|
||||
"object" => $this->object
|
||||
];
|
||||
}
|
||||
|
||||
private function analyze($class, $object, $file, $path, &$languages, $i){
|
||||
|
||||
$class = '\WMarkDown\ScriptsAnalyzer\\' . $class;
|
||||
|
||||
!$this->$object && class_exists($class) && ($this->$object = new $class($this->wmarkdown, $this, $this->get_commons()));
|
||||
$this->$object && $this->$object->analyze($file, $path, $languages, $i);
|
||||
|
||||
}
|
||||
|
||||
private function build($path, &$languages, $i = 0){
|
||||
foreach(scandir($path) as $file){
|
||||
if(preg_match('/^\.{1,2}$/', $file))
|
||||
continue;
|
||||
|
||||
$subpath = $path . "/" . $file;
|
||||
|
||||
if(in_array(substr($subpath, $this->root_l), $this->ignore))
|
||||
continue;
|
||||
if(is_dir($subpath))
|
||||
$this->build($subpath, $languages, $i + 1);
|
||||
elseif(preg_match('/\.(py|php|js|sql|cs)$/', $file, $matches, PREG_OFFSET_CAPTURE) && isset(self::$classes[$matches[1][0]]))
|
||||
$this->analyze(self::$classes[$matches[1][0]], $matches[1][0], $file, $path, $languages, $i);
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
private function write_wmd($path, $content, $variables){
|
||||
\WMarkDown::save_file($path, \WMarkDown::string_variables($this->file_wmd, array_merge(["content" => $content], $this->common, $variables)));
|
||||
}
|
||||
|
||||
public function update_files(){
|
||||
|
||||
$languages = [];
|
||||
$wmd = "";
|
||||
|
||||
if($this->original_wmd){
|
||||
if($this->only){
|
||||
foreach(is_array($this->only) ? $this->only : [$this->only] as $path)
|
||||
$this->build($this->root . $path, $languages);
|
||||
}else
|
||||
$this->build($this->root, $languages);
|
||||
};
|
||||
|
||||
foreach($languages as $language => $files){
|
||||
|
||||
$index = "# " . self::$languages[$language] . "\n\n";
|
||||
|
||||
$wmd .= "\n# " . self::$languages[$language] . "\n";
|
||||
foreach($files as $file){
|
||||
|
||||
$path = substr($file["path"], $this->root_l + 8);
|
||||
|
||||
$wmd .= "\n- [" . ($link = ($sublink = "/dev/" . self::$languages[$language]) . "#" . preg_replace('/[^a-z\d]+/i', "-", preg_replace('/^(.+?\/)?([^\/]+)\.w\.md$/', "$2-2", $path))) . " " . preg_replace('/\.w\.md$/', "", $path) . "]";
|
||||
$index .= (
|
||||
"[[header_level 0]]\n" .
|
||||
"[[include /WMD/dev" . $path . "]]\n\n"
|
||||
);
|
||||
foreach($file["methods"] as $method)
|
||||
$wmd .= "\n - [" . $sublink . "#" . preg_replace('/[^a-z\d]+/i', "-", $method) . "-2 " . preg_replace('/([_\\\\])/', "\\\\$1", $method) . "]";
|
||||
|
||||
};
|
||||
$wmd .= "\n";
|
||||
|
||||
$this->write_wmd($this->root . "/WMD/dev/" . self::$languages[$language] . "/index.w.md", $index, [
|
||||
"title" => self::$languages[$language],
|
||||
"subpath" => "/dev/" . self::$languages[$language] . "/index",
|
||||
"languages" => strtolower(self::$languages[$language]),
|
||||
"language_name" => self::$languages[$language]
|
||||
]);
|
||||
|
||||
};
|
||||
|
||||
$this->write_wmd($this->root . "/WMD/dev/index.w.md", $wmd, [
|
||||
"title" => "Código",
|
||||
"subpath" => "/dev/index",
|
||||
"languages" => "todo,all",
|
||||
"language_name" => "Todo"
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
};
|
7
PHP/WMarkDown.Sessions.php
Executable file
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace WMarkDown;
|
||||
|
||||
class Sessions{
|
||||
|
||||
}
|
267
PHP/WMarkDown.php
Executable file
@ -0,0 +1,267 @@
|
||||
<?php
|
||||
|
||||
class WMarkDown{
|
||||
|
||||
private static $default_settings = [
|
||||
"default_value" => null,
|
||||
"nulls" => true,
|
||||
"default_settings_files" => __DIR__ . "/../JSON/WMarkDown.settings.json"
|
||||
];
|
||||
private static $extension_mime = [];
|
||||
private static $mime_extension = [];
|
||||
private $custom_settings = [];
|
||||
private $input;
|
||||
private $wmarkdown_root = __DIR__ . "/..";
|
||||
private $root = __DIR__ . "/..";
|
||||
private $documentation_path = null;
|
||||
private $html_files = [];
|
||||
private $html_base = '';
|
||||
private $public_path = __DIR__ . "/../Public";
|
||||
private $hashes = [];
|
||||
private $documentation_path_relative = null;
|
||||
private $hash_alphabet = null;
|
||||
private $data_created = [
|
||||
"files" => [],
|
||||
"directories" => []
|
||||
];
|
||||
private $ignore_script_paths = [];
|
||||
public static $string_to_pattern_special = [
|
||||
"\n" => "n",
|
||||
"\r" => "r",
|
||||
"\t" => "t"
|
||||
];
|
||||
|
||||
private function get_value($name, $nulls){
|
||||
foreach([$this->input, $this->custom_settings, self::$default_settings] as $input)
|
||||
if($input && isset($input[$name]) && ($nulls || $input[$name] !== null))
|
||||
return $input[$name];
|
||||
return $this->get_value("default_value");
|
||||
}
|
||||
|
||||
private function default_value($default, $nulls){
|
||||
if($nulls || $default !== null)
|
||||
return $default;
|
||||
return $this->get_value("default_value");
|
||||
}
|
||||
|
||||
public static function is_dictionary($value){
|
||||
return is_array($value) && array_values($value) != $value;
|
||||
}
|
||||
|
||||
public function settings($names = null, $inputs = null, $default = null, $nulls = null){
|
||||
|
||||
if(!is_bool($nulls))
|
||||
$nulls = $this->get_value("nulls", false);
|
||||
|
||||
if(!$names)
|
||||
return $this->default_value($default, $nulls);
|
||||
|
||||
if(!is_array($names))
|
||||
$names = [$names];
|
||||
|
||||
foreach(array_merge($inputs ? (is_dictionary($inputs) ? [$inputs] : (is_array($inputs) ? $inputs : [])) : [], [$this->input, $this->custom_settings, self::$default_settings]) as $input)
|
||||
if(self::is_dictionary($input))
|
||||
foreach($names as $name)
|
||||
if($name && isset($input[$name]) && ($nulls || $input[$name] !== null))
|
||||
return $input[$name];
|
||||
return $this->default_value($default, $nulls);
|
||||
}
|
||||
|
||||
public static function string_variables($string, $variables = null, $default = null){
|
||||
return preg_replace_callback('/\{([^\{\}]+)\}/', function($values) use($variables, $default){
|
||||
if(!isset($values[1]) || !$values[1])
|
||||
return $values[0];
|
||||
if($variables && is_array($variables) && isset($variables[$values[1]]))
|
||||
return $variables[$values[1]];
|
||||
if($default !== null)
|
||||
return $default;
|
||||
return $values[0];
|
||||
}, $string);
|
||||
}
|
||||
|
||||
private static function remove_directory($path){
|
||||
return;
|
||||
|
||||
if(file_exists($path)){
|
||||
if(is_dir($path)){
|
||||
foreach(scandir($path) as $item){
|
||||
if(is_dir($file = $path . "/" . $item))
|
||||
self::remove_directory($file);
|
||||
else
|
||||
unlink($file);
|
||||
};
|
||||
rmdir($path);
|
||||
}else
|
||||
unlink($path);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
private function remove_current_html_files(){
|
||||
|
||||
if(!file_exists($files = $this->root . $this->settings("html_files")))
|
||||
return;
|
||||
|
||||
$data = json_decode(file_get_contents($files), true);
|
||||
|
||||
foreach($data["files"] as $file)
|
||||
if(file_exists($file))
|
||||
unlink($file);
|
||||
foreach($data["directories"] as $directory)
|
||||
if(file_exists($directory))
|
||||
self::remove_directory($directory);
|
||||
|
||||
}
|
||||
|
||||
public static function save_file($path, $content){
|
||||
|
||||
$directory = preg_replace('/^(\/?(([^\/]+\/)*))?\/?[^\/]+$/', "$1", $path);
|
||||
|
||||
if(!file_exists($directory))
|
||||
mkdir($directory, 0777, true);
|
||||
file_put_contents($path, $content);
|
||||
|
||||
}
|
||||
|
||||
private function create_html_files($path = ""){
|
||||
|
||||
if(file_exists($absolute = $this->documentation_path . $path))
|
||||
foreach(scandir($absolute) as $file){
|
||||
if(in_array($file, [".", ".."]))
|
||||
continue;
|
||||
if(is_dir($directory = $absolute . "/" . $file))
|
||||
$this->create_html_files($this->data_created["directories"][] = $path . "/" . $file);
|
||||
elseif(preg_match('/^(((?!\.w).)+)(\.w)?\.md$/', $file, $matches))
|
||||
self::save_file(
|
||||
$this->data_created["files"][] = $this->public_path . $path . "/" . $matches[1] . ".html",
|
||||
self::string_variables($this->html_base, array_merge(WMarkDown\Modules::format($this, file_get_contents($absolute . "/" . $file))))
|
||||
);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
private function request($parameters){
|
||||
|
||||
header("content-type: application/json");
|
||||
echo json_encode([
|
||||
"ok" => true,
|
||||
"code" => 200,
|
||||
"content" => null
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
public function get_ignore_file_paths(){return array_merge([], $this->ignore_script_paths);}
|
||||
|
||||
public function __construct($input = null){
|
||||
|
||||
if(is_array($input))
|
||||
$this->input = $input;
|
||||
|
||||
foreach(["default_settings_files", "settings_files"] as $name)
|
||||
if($files = $this->settings($name))
|
||||
foreach(is_array($files) ? $files : [$files] as $path)
|
||||
if($path && file_exists($path) && ($data = file_get_contents($path)) && ($json = @json_decode($data, true)))
|
||||
foreach($json as $key => $value)
|
||||
$this->custom_settings[$key] = $value;
|
||||
|
||||
$post_key = $this->settings("variable_name");
|
||||
|
||||
if(isset($_POST[$post_key])){
|
||||
$this->request(json_decode(base64_decode($_POST[$post_key]), true));
|
||||
return;
|
||||
};
|
||||
|
||||
$this->wmarkdown_root = $this->settings("root");
|
||||
$this->root = $this->settings("root");
|
||||
$this->documentation_path_relative = $this->settings("documentation_path");
|
||||
$this->documentation_path = $this->root . $this->documentation_path_relative;
|
||||
$this->public_path = $this->root . $this->settings("public_path");
|
||||
$this->hash_alphabet = $this->settings("hash_alphabet");
|
||||
|
||||
foreach($this->settings("ignore_script_paths") ?? [] as $path)
|
||||
$this->ignore_script_paths[] = $path;
|
||||
|
||||
switch($this->settings("action")){
|
||||
case "update_scripts":
|
||||
(new \WMarkDown\ScriptsAnalyzer($this))->update_files();
|
||||
break;
|
||||
case "build_html":
|
||||
default:
|
||||
$this->hash_alphabet = str_split(preg_replace('/[^a-z\d_]/i', "", is_array($this->hash_alphabet) ? implode("", $this->hash_alphabet) : $this->hash_alphabet));
|
||||
|
||||
if(file_exists($html_base_path = $this->settings("html_base")))
|
||||
$this->html_base = file_get_contents($html_base_path);
|
||||
|
||||
// $this->remove_current_html_files();
|
||||
$this->create_html_files();
|
||||
// print_r([$this->root . $this->settings("html_files"), $this->data_created]);
|
||||
$this->save_file($this->root . $this->settings("html_files"), json_encode($this->data_created));
|
||||
break;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
public function get_root(){return "" . $this->root;}
|
||||
public function get_wmarkdown_root(){return "" . $this->wmarkdown_root;}
|
||||
|
||||
public function get_hash(){
|
||||
|
||||
$hash;
|
||||
$l = count($this->hash_alphabet) - 1;
|
||||
$length = $this->settings("hash_length");
|
||||
|
||||
do{
|
||||
$hash = "";
|
||||
while(strlen($hash .= $this->hash_alphabet[rand(0, $l)]) < $length);
|
||||
}while(
|
||||
in_array($hash, $this->hashes) ||
|
||||
preg_match('/^\d/', $hash)
|
||||
);
|
||||
$this->hashes[] = $hash;
|
||||
|
||||
return $hash;
|
||||
}
|
||||
|
||||
public function load_file($path){
|
||||
foreach(["", $this->root, $this->wmarkdown_root] as $root)
|
||||
if(file_exists($file = $root . $path) && !is_dir($file))
|
||||
return file_get_contents($file);
|
||||
return null;
|
||||
}
|
||||
|
||||
public function get_documentation_path(){return "" . $this->documentation_path_relative;}
|
||||
|
||||
public function get_mime($path){
|
||||
if(!$path || !preg_match('/^.+\.([^\.\/]+)$/', $path, $matches))
|
||||
return $this->settings("default_mime");
|
||||
|
||||
$extension = $matches[1];
|
||||
|
||||
if(empty(self::$extension_mime))
|
||||
self::$extension_mime = json_decode($this->load_file($this->settings("extension_mime_file")), true);
|
||||
|
||||
if(isset(self::$extension_mime[$extension]))
|
||||
return self::$extension_mime[$extension];
|
||||
return $this->settings("default_mime");
|
||||
}
|
||||
|
||||
public function get_extensions($mime){
|
||||
if(!$mime)
|
||||
return $this->settings("default_extension");
|
||||
|
||||
if(empty(self::$mime_extension))
|
||||
self::$mime_extension = json_decode($this->load($this->settings("mime_extension_file")), true);
|
||||
|
||||
if(isset(self::$mime_extension[$mime]))
|
||||
return self::$mime_extension[$mime];
|
||||
return $this->settings("default_extension");
|
||||
}
|
||||
|
||||
public static function string_to_pattern($string){
|
||||
return preg_replace_callback('/[\r\n\t\.\-\:\{\[\(\)\]\}\#\@\|\!\?\*\+\^\\\\\/\&\%\~]/', function($values){
|
||||
return "\\" . (isset(\WMarkDown::$string_to_pattern_special[$values[0]]) ? \WMarkDown::$string_to_pattern_special[$values[0]] : $values);
|
||||
});
|
||||
}
|
||||
|
||||
};
|
32
PHP/include.php
Executable file
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
foreach([
|
||||
"WMarkDown",
|
||||
"WMarkDown.Modules",
|
||||
"Interfaces/WMarkDown.Interfaces.Modules",
|
||||
"Interfaces/WMarkDown.Interfaces.ScriptsAnalyzer",
|
||||
"Abstracts/WMarkDown.Abstracts.Modules",
|
||||
"Abstracts/WMarkDown.Abstracts.ScriptsAnalyzer",
|
||||
"Modules/WMarkDown.Modules.Headers",
|
||||
"Modules/WMarkDown.Modules.Paragraphs",
|
||||
"Modules/WMarkDown.Modules.FontFormats",
|
||||
"Modules/WMarkDown.Modules.CodeBlocks",
|
||||
"Modules/WMarkDown.Modules.Checks",
|
||||
"Modules/WMarkDown.Modules.Lists",
|
||||
"Modules/WMarkDown.Modules.Includes",
|
||||
"Modules/WMarkDown.Modules.CustomParameters",
|
||||
"Modules/WMarkDown.Modules.Quotes",
|
||||
"Modules/WMarkDown.Modules.Links",
|
||||
"Modules/WMarkDown.Modules.Multimedia",
|
||||
"Modules/WMarkDown.Modules.Escapes",
|
||||
"Modules/WMarkDown.Modules.Tables",
|
||||
"WMarkDown.ScriptsAnalyzer",
|
||||
"ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.PHP",
|
||||
"ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.JS",
|
||||
"ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.CSharp",
|
||||
"ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.Python",
|
||||
"ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.SQL",
|
||||
"Drivers/WMarkDown.PDO.SQLite"
|
||||
] as $file)
|
||||
if(file_exists($path = __DIR__ . "/" . $file . ".php"))
|
||||
include $path;
|
1
Public/.htaccess
Executable file
@ -0,0 +1 @@
|
||||
Header set Access-Control-Allow-Origin "*"
|
35
Public/css/WMarkDown.icons.css
Executable file
@ -0,0 +1,35 @@
|
||||
.wmarkdown [data-icon=show]::before{content : "\f06e"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=hide]::before{content : "\f070"; font-family : "FA5FS";}
|
||||
.wmarkdown [type=checkbox]+[data-icon=checkbox]::before{content : "\f0c8";}
|
||||
.wmarkdown [type=checkbox]:checked+[data-icon=checkbox]::before{content : "\f14a";}
|
||||
.wmarkdown [type=checkbox]:disabled+[data-icon=checkbox]::before{content : "\f0c8"; font-family : "FA5FS"; opacity : .5;}
|
||||
.wmarkdown [type=radio]+[data-icon=radio]::before{content : "\f111";}
|
||||
.wmarkdown [type=radio]:checked+[data-icon=radio]::before{content : "\f192";}
|
||||
.wmarkdown [type=radio]:disabled+[data-icon=radio]::before{content : "\f111"; font-family : "FA5FS"; opacity : .5;}
|
||||
.wmarkdown [type=checkbox]+[data-icon=tick]::before{content : "\f00d"; font-family : "FA5FS";}
|
||||
.wmarkdown [type=checkbox]:checked+[data-icon=tick]::before{content : "\f00c"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=language]::before{content : "\f1c9";}
|
||||
.wmarkdown [data-icon=characters]::before{content : "\f031"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=lines]::before{content : "\f036"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=link]::before{content : "\f0c1"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-deployed=false]>[data-icon=deploy]::before{content : "\f054"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-deployed=true]>[data-icon=deploy]::before{content : "\f078"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-levels='0']>[data-icon=deploy]::before{content : " ";}
|
||||
.wmarkdown [data-icon=likes]::before{content : "\f164"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=dislikes]::before{content : "\f165"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=views]::before{content : "\f06e";}
|
||||
.wmarkdown [data-icon=comments]::before{content : "\f086";}
|
||||
.wmarkdown [data-icon=note]::before{content : "\f27a";}
|
||||
.wmarkdown [data-icon=alert]::before{content : "\f0f3";}
|
||||
.wmarkdown [data-icon=important]::before{content : "\f0a1"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=warning]::before,.wmarkdown [data-icon=warn]::before{content : "\f12a"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=danger]::before{content : "\f071"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=ask]::before{content : "\f128"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=home]::before{content : "\f015"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=developt]::before{content : "\f121"; font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=git]::before{content : "\f841"; font-family : "FA5FB";}
|
||||
.wmarkdown [data-icon=game]::before{content : "\f11b";font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=documentation]::before{content : "\f02d";font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=menu]::before{content : "\f0c9";font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=content]::before{content : "\f570";font-family : "FA5FS";}
|
||||
.wmarkdown [data-icon=files]::before{content : "\f0c5";font-family : "FA5FS";}
|
338
Public/ecma/WMarkDown.Dictionary.ecma.js
Executable file
@ -0,0 +1,338 @@
|
||||
WMarkDown.Dictionary = function(wmarkdown){
|
||||
|
||||
const self = this;
|
||||
let started = false,
|
||||
scroll_event = null,
|
||||
z_index = 5,
|
||||
thread = null,
|
||||
cache = "";
|
||||
|
||||
const construct = () => {};
|
||||
|
||||
const scroll_event_function = event => {
|
||||
|
||||
const content_box = wmarkdown.item_self.querySelector(".content"),
|
||||
half_width = content_box.offsetWidth / 2,
|
||||
half_height = content_box.offsetHeight / 2,
|
||||
font_size = window.getComputedStyle(wmarkdown.item_self, null).getPropertyValue("font-size");
|
||||
|
||||
content_box.querySelectorAll(".content .data-dictionary-item").forEach(item => {
|
||||
|
||||
const properties = item.getBoundingClientRect();
|
||||
|
||||
item.setAttribute("data-left", properties.x - content_box.offsetLeft > half_width);
|
||||
item.setAttribute("data-top", properties.y - content_box.offsetTop < half_height);
|
||||
item.querySelector(".box").style.fontSize = font_size;
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
const autosearch = () => wmarkdown.item_self.querySelectorAll(".data-dictionary-table").forEach(searcher => searcher.querySelector("[name=autosearch]").checked && self.search(searcher, null));
|
||||
|
||||
this.start = () => {
|
||||
|
||||
if(started)
|
||||
return;
|
||||
started = true;
|
||||
|
||||
const dictionary_links = wmarkdown.settings("dictionary_links");
|
||||
dictionary_title = wmarkdown.settings("dictionary_title") || "Dictionary";
|
||||
|
||||
scroll_event = wmarkdown.item_self.querySelector(".content").addEventListener("scroll", scroll_event_function);
|
||||
self.build();
|
||||
thread = wmarkdown.threads_add(autosearch);
|
||||
|
||||
if(dictionary_links)
|
||||
load_links(dictionary_links.push ? dictionary_links : [dictionary_links], dictionary => {
|
||||
|
||||
const content_box = wmarkdown.item_self.querySelector(".content-box");
|
||||
let hash = dictionary_title.toLowerCase().replace(/[^a-z\d]+/g, "-");
|
||||
|
||||
if(!/^(.+\-)(\d+)$/.test(hash))
|
||||
hash += "-0";
|
||||
while(document.getElementById(hash))
|
||||
hash = hash.replace(/^(.+\-)(\d+)$/, (...arguments) => arguments[1] + (Number(arguments[2]) + 1));
|
||||
|
||||
with(content_box.appendChild(document.createElement("h1"))){
|
||||
setAttribute("id", hash);
|
||||
innerText = dictionary_title;
|
||||
};
|
||||
with(wmarkdown.item_self.querySelector(".headers-menu>nav>ul").appendChild(document.createElement("li"))){
|
||||
setAttribute("data-level", 1);
|
||||
setAttribute("data-deployed", false);
|
||||
setAttribute("data-levels", 0);
|
||||
setAttribute("data-parent-deployed", true);
|
||||
setAttribute("data-id", wmarkdown.hash());
|
||||
innerHTML = (`
|
||||
<span data-icon="deploy" onlick="` + wmarkdown.object_name + `.deploy(this, event);"></span>
|
||||
<a href="#` + hash + `" title="` + dictionary_title + `" target="_self" onclick="` + wmarkdown.object_name + `.deploy(this, event);` + wmarkdown.object_name + `.go_to_item(this, event);">` + dictionary_title + `</a>
|
||||
`);
|
||||
};
|
||||
build(dictionary, content_box.appendChild(document.createElement("form")));
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
const process_description = description => {
|
||||
if(!description)
|
||||
return "";
|
||||
if(description.substr)
|
||||
return description;
|
||||
if(typeof description != "object")
|
||||
return "" + description;
|
||||
|
||||
let html = `<span class="paragraph">`;
|
||||
|
||||
description.forEach(line => html += " " + (line || `</span><span class="paragraph">`));
|
||||
html += `</span>`;
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
const mount = (dictionary, item) => item.childNodes.forEach(node => {
|
||||
if(node.hasAttribute && node.hasAttribute("data-ignore") && node.getAttribute("data-ignore") == "true")
|
||||
return;
|
||||
if(node.nodeType != Node.TEXT_NODE){
|
||||
!(node.tagName && ["noscript", "a"].includes(node.tagName.toLowerCase())) && !(node.classList && node.classList.contains("code-block")) && mount(dictionary, node);
|
||||
return;
|
||||
};
|
||||
|
||||
let html = node.textContent;
|
||||
|
||||
if(!node.textContent || !/[^\r\n\s\t]/.test(html))
|
||||
return;
|
||||
|
||||
const nodes = [];
|
||||
|
||||
dictionary.forEach(item => item.patterns.forEach((pattern, i) => pattern && (html = html.replace(pattern, (...values) => {
|
||||
|
||||
let html = ``;
|
||||
const result = (item.results[i] || item.results[0]).replace(/\$(\d)/g, (all, i) => values[Number(i)] || "");
|
||||
|
||||
(item.links ? item.links.push ? item.links : [item.links] : []).forEach(link => html += `<a href="` + link + `" title="` + link + `" target="_blank" data-site="` + link.replace(/^[^\:]+\:\/{2}([^\/]+)(\/(.+)?)?$/, "$1").replace(/[^a-z\d]+/g, "_") + `"></a>`);
|
||||
nodes.push((`
|
||||
<span
|
||||
class="data-dictionary-item"
|
||||
onmouseover="` + wmarkdown.object_name + `.dictionary.show(this, event);"
|
||||
onmouseout="` + wmarkdown.object_name + `.dictionary.hide(this, event);"
|
||||
data-show="false"
|
||||
><span class="box">
|
||||
<span class="result">` + result + `</span>
|
||||
<span class="description">` + process_description(item.description) + `</span>
|
||||
<span class="links">` + html + `</span>
|
||||
</span><span class="text">` + result + `</span></span>
|
||||
`).trim());
|
||||
|
||||
return '###' + (nodes.length - 1) + "###";
|
||||
}))));
|
||||
|
||||
html = html.replace(/\#{3}(\d+)\#{3}/g, (...arguments) => nodes[Number(arguments[1])]);
|
||||
|
||||
if(html == node.textContent)
|
||||
return;
|
||||
|
||||
const span = node.parentNode.insertBefore(document.createElement("span"), node);
|
||||
|
||||
span.setAttribute("class", "data-dictionary-block");
|
||||
span.innerHTML = html;
|
||||
|
||||
node.remove();
|
||||
|
||||
});
|
||||
|
||||
const load = (files, i, callback, dictionary, patterns_used) => {
|
||||
|
||||
if(i >= files.length){
|
||||
callback(dictionary);
|
||||
return;
|
||||
};
|
||||
|
||||
wmarkdown.load_file(files[i], data => {
|
||||
if(data){
|
||||
try{
|
||||
JSON.parse(data).forEach(item => {
|
||||
|
||||
const json = item.pattern.substr ? item.pattern : JSON.stringify(item.pattern);
|
||||
|
||||
if(patterns_used.includes(json))
|
||||
return;
|
||||
patterns_used.push(json);
|
||||
|
||||
let pattern;
|
||||
const patterns = [];
|
||||
|
||||
if(!item.pattern)
|
||||
return;
|
||||
|
||||
(item.pattern.push ? item.pattern : [item.pattern]).forEach(pattern => {
|
||||
|
||||
const pattern_closed = pattern.lastIndexOf("/");
|
||||
|
||||
try{
|
||||
pattern_closed && (pattern = new RegExp(pattern.substr(1, pattern_closed - 1), pattern.substr(pattern_closed + 1)));
|
||||
}catch(exception){};
|
||||
|
||||
patterns.push(pattern || null);
|
||||
|
||||
});
|
||||
|
||||
patterns && dictionary.push(Object.assign({}, item, {
|
||||
patterns : patterns,
|
||||
results : item.result.push ? item.result : [item.result]
|
||||
}));
|
||||
|
||||
});
|
||||
}catch(exception){console.error(exception);};
|
||||
};
|
||||
load(files, i + 1, callback, dictionary, patterns_used);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
const build = (dictionary, item) => {
|
||||
|
||||
const header = (`
|
||||
<tr>
|
||||
<th data-field="i" data-i18n="i">i</th>
|
||||
<th data-field="patterns" data-i18n="patterns">Patterns</th>
|
||||
<th data-field="results" data-i18n="results">Results</th>
|
||||
<th data-field="words" data-i18n="words">Words</th>
|
||||
<th data-field="meanings" data-i18n="meanings">Meanings</th>
|
||||
<th data-field="urls" data-i18n="urls">URLs</th>
|
||||
</tr>
|
||||
`),
|
||||
hashes = {};
|
||||
let body = ``;
|
||||
|
||||
["search", "autosearch", "meanings", "case_sensitive"].forEach(key => hashes[key] = wmarkdown.hash());
|
||||
|
||||
dictionary.forEach((item, i) => {
|
||||
|
||||
let urls = ``,
|
||||
words = '';
|
||||
const results = item.words || item.results;
|
||||
|
||||
(item.links ? item.links.push ? item.links : [item.links] : []).forEach(link => urls += `<li><a href="` + link + `" target="_blank" title="` + link + `">` + link + `</a></li>`);
|
||||
(results.push ? results : [results]).forEach(word => words += '<li>' + word + '</li>');
|
||||
|
||||
body += (`
|
||||
<tr data-i="` + i + `" data-visible="true">
|
||||
<td data-field="i">` + i + `</td>
|
||||
<td data-field="patterns"><ul><li>` + item.patterns.join(`</li><li>`) + `</li></ul></td>
|
||||
<td data-field="results"><ul><li>` + item.results.join(`</li><li>`) + `</li></ul></td>
|
||||
<td data-field="words"><ul>` + words + `</ul></td>
|
||||
<td data-field="description">` + (item.description.push ? item.description.join(" ") : item.description) + `</td>
|
||||
<td data-field="urls"><ul>` + urls + `</ul></td>
|
||||
</tr>
|
||||
`);
|
||||
});
|
||||
|
||||
item.setAttribute("class", "data-dictionary-table");
|
||||
item.setAttribute("action", window.location.hash);
|
||||
item.setAttribute("method", "get");
|
||||
item.setAttribute("onsubmit", "return false;");
|
||||
item.innerHTML = (`
|
||||
<fieldset>
|
||||
<legend data-i18n="search">Search</legend>
|
||||
<div class="search" data-i18n="search" data-i18n-without="true" title="search">
|
||||
<label for="` + hashes.search + `" data-i18n="search">Search</label>
|
||||
<span class="field"><input type="text" id="` + hashes.search + `" name="search" data-i18n="search" data-i18n-without="true" placeholder="Search..." /></span>
|
||||
<span class="items">
|
||||
<label class="checkbox" for="` + hashes.meanings + `" data-i18n="meanings" data-i18n-without="true" title="Meanings">
|
||||
<input type="checkbox" id="` + hashes.meanings + `" name="meanings"` + (wmarkdown.settings("meanings") ? `checked` : ``) + ` />
|
||||
<span data-icon="checkbox"></span>
|
||||
<span data-i18n="meanings">Meanings</span>
|
||||
</label>
|
||||
<label class="checkbox" for="` + hashes.case_sensitive + `" data-i18n="case_sensitive" data-i18n-without="true" title="Case sensitive">
|
||||
<input type="checkbox" id="` + hashes.case_sensitive + `" name="case_sensitive"` + (wmarkdown.settings("case_sensitive") ? `checked` : ``) + ` />
|
||||
<span data-icon="checkbox"></span>
|
||||
<span data-i18n="case_sensitive">Case sensitive</span>
|
||||
</label>
|
||||
<label class="checkbox" for="` + hashes.autosearch + `" data-i18n="autosearch" data-i18n-without="true" title="Autosearch">
|
||||
<input type="checkbox" id="` + hashes.autosearch + `" name="autosearch"` + (wmarkdown.settings("autosearch") ? `checked` : ``) + ` />
|
||||
<span data-icon="checkbox"></span>
|
||||
<span data-i18n="autosearch">Autosearch</span>
|
||||
</label>
|
||||
<button type="button" data-i18n="search" data-without="true" title="Search" onclick="` + wmarkdown.object_name + `.dictionary.search(this, event);">
|
||||
<span data-icon="search"></span>
|
||||
<span data-i18n="search">Search</span>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
<div class="table">
|
||||
<table>
|
||||
<thead>` + header + `</thead>
|
||||
<tbody>` + body + `</tbody>
|
||||
<tfoot>` + header + `</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</fieldset>
|
||||
`);
|
||||
}
|
||||
|
||||
const load_links = (links, callback) => load(links, 0, dictionary => {
|
||||
|
||||
mount(dictionary, wmarkdown.item_self.querySelector(".content>.content-box"));
|
||||
setTimeout(scroll_event_function, 10);
|
||||
|
||||
typeof callback == "function" && callback(dictionary);
|
||||
|
||||
}, [], []);
|
||||
|
||||
this.build = () => wmarkdown.item_self.querySelectorAll(".wdictionary[data-status=unloaded]").forEach(items => {
|
||||
items.setAttribute("data-status", "loading");
|
||||
|
||||
load_links(JSON.parse(wmarkdown.utf8_decode(atob(items.getAttribute("data-json")))), dictionary => {
|
||||
build(dictionary, items.parentNode.insertBefore(document.createElement("form"), items));
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
this.show = (element, event) => {
|
||||
element.style.zIndex = ++ z_index;
|
||||
element.setAttribute("data-show", true);
|
||||
};
|
||||
this.hide = (element, event) => element.setAttribute("data-show", false);
|
||||
|
||||
this.search = (element, event) => {
|
||||
if(!element)
|
||||
return;
|
||||
|
||||
while((!element.classList || !element.classList.contains("data-dictionary-table")) && (element = element.parentNode));
|
||||
|
||||
let text = element.querySelector("[name=search]").value;
|
||||
|
||||
if(text == cache)
|
||||
return;
|
||||
cache = text;
|
||||
|
||||
const meanings = element.querySelector("[name=meanings]").checked,
|
||||
case_sensitive = element.querySelector("[name=case_sensitive]").checked;
|
||||
|
||||
!case_sensitive && (text = text.toLowerCase());
|
||||
|
||||
element.querySelectorAll("tbody>tr").forEach(word => {
|
||||
|
||||
let words = word.querySelector("[data-field=words]").innerText,
|
||||
description = word.querySelector("[data-field=description]").innerText;
|
||||
|
||||
if(!case_sensitive){
|
||||
words = words.toLowerCase(),
|
||||
description = description.toLowerCase();
|
||||
};
|
||||
|
||||
word.setAttribute("data-visible", (
|
||||
!text ||
|
||||
words.indexOf(text) != -1 ||
|
||||
(meanings && description.indexOf(text) != -1)
|
||||
));
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
construct();
|
||||
|
||||
};
|
299
Public/ecma/WMarkDown.Dictionary.old.ecma.js
Executable file
@ -0,0 +1,299 @@
|
||||
WMarkDown.Dictionary = function(wmarkdown){
|
||||
|
||||
const self = this;
|
||||
let started = false,
|
||||
scroll_event = null,
|
||||
z_index = 5,
|
||||
thread = null,
|
||||
cache = "";
|
||||
|
||||
const construct = () => {};
|
||||
|
||||
const scroll_event_function = event => {
|
||||
|
||||
const content_box = wmarkdown.item_self.querySelector(".content"),
|
||||
half_width = content_box.offsetWidth / 2,
|
||||
half_height = content_box.offsetHeight / 2,
|
||||
font_size = window.getComputedStyle(wmarkdown.item_self, null).getPropertyValue("font-size");
|
||||
|
||||
content_box.querySelectorAll(".content .data-dictionary-item").forEach(item => {
|
||||
|
||||
const properties = item.getBoundingClientRect();
|
||||
|
||||
item.setAttribute("data-left", properties.x - content_box.offsetLeft > half_width);
|
||||
item.setAttribute("data-top", properties.y - content_box.offsetTop < half_height);
|
||||
item.querySelector(".box").style.fontSize = font_size;
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
const autosearch = () => wmarkdown.item_self.querySelectorAll(".data-dictionary-table").forEach(searcher => {if(searcher.querySelector("[name=autosearch]").checked)self.search(searcher, null)});
|
||||
|
||||
this.start = () => {
|
||||
|
||||
if(started)
|
||||
return;
|
||||
started = true;
|
||||
|
||||
scroll_event = wmarkdown.item_self.querySelector(".content").addEventListener("scroll", scroll_event_function);
|
||||
self.build();
|
||||
thread = wmarkdown.threads_add(autosearch);
|
||||
|
||||
};
|
||||
|
||||
const process_description = description => {
|
||||
if(!description)
|
||||
return "";
|
||||
if(description.substr)
|
||||
return description;
|
||||
if(typeof description != "object")
|
||||
return "" + description;
|
||||
|
||||
let html = `<span class="paragraph">`;
|
||||
|
||||
description.forEach(line => html += " " + (line || `</span><span class="paragraph">`));
|
||||
html += `</span>`;
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
const mount = (dictionary, item) => item.childNodes.forEach(node => {
|
||||
if(node.nodeType != Node.TEXT_NODE){
|
||||
if(!(node.tagName && node.tagName.toLowerCase() == "a") && !(node.classList && node.classList.contains("code-block")))
|
||||
mount(dictionary, node);
|
||||
return;
|
||||
};
|
||||
|
||||
let html = node.textContent;
|
||||
|
||||
if(!node.textContent || !/[^\r\n\s\t]/.test(html))
|
||||
return;
|
||||
|
||||
const nodes = [];
|
||||
|
||||
dictionary.forEach(item => item.patterns.forEach((pattern, i) => {if(pattern)html = html.replace(pattern, (...values) => {
|
||||
|
||||
let html = ``;
|
||||
const result = item.results[i].replace(/\$(\d)/g, (all, i) => values[Number(i)] || "");
|
||||
|
||||
(item.links ? item.links.push ? item.links : [item.links] : []).forEach(link => html += `<a href="` + link + `" title="` + link + `" target="_blank" data-site="` + link.replace(/^[^\:]+\:\/{2}([^\/]+)(\/(.+)?)?$/, "$1").replace(/[^a-z\d]+/g, "_") + `"></a>`);
|
||||
nodes.push(`
|
||||
<span
|
||||
class="data-dictionary-item"
|
||||
onmouseover="` + wmarkdown.object_name + `.dictionary.show(this, event);"
|
||||
onmouseout="` + wmarkdown.object_name + `.dictionary.hide(this, event);"
|
||||
data-show="false"
|
||||
>
|
||||
<span class="box">
|
||||
<span class="result">` + result + `</span>
|
||||
<span class="description">` + process_description(item.description) + `</span>
|
||||
<span class="links">` + html + `</span>
|
||||
</span>
|
||||
<span class="text">` + result + `</span>
|
||||
</span>
|
||||
`);
|
||||
|
||||
return '###' + (nodes.length - 1) + "###";
|
||||
})}));
|
||||
|
||||
html = html.replace(/\#{3}(\d+)\#{3}/g, (...arguments) => nodes[Number(arguments[1])]);
|
||||
|
||||
if(html == node.textContent)
|
||||
return;
|
||||
|
||||
const span = node.parentNode.insertBefore(document.createElement("span"), node);
|
||||
|
||||
span.setAttribute("class", "data-dictionary-block");
|
||||
span.innerHTML = html;
|
||||
|
||||
node.remove();
|
||||
|
||||
});
|
||||
|
||||
this.build = () => {
|
||||
|
||||
const dictionary = [],
|
||||
patterns_used = [];
|
||||
|
||||
wmarkdown.item_self.querySelectorAll(".data-dictionary[data-json]").forEach(items => {
|
||||
|
||||
const data = JSON.parse(wmarkdown.utf8_decode(atob(items.getAttribute("data-json"))));
|
||||
|
||||
if(typeof data != "object")
|
||||
return;
|
||||
|
||||
if(data.dictionary)
|
||||
data.dictionary.forEach(item => {
|
||||
|
||||
const json = item.pattern.substr ? item.pattern : JSON.stringify(item.pattern);
|
||||
|
||||
if(patterns_used.includes(json))
|
||||
return;
|
||||
patterns_used.push(json);
|
||||
|
||||
let pattern;
|
||||
const patterns = [];
|
||||
|
||||
if(!item.pattern)
|
||||
return;
|
||||
|
||||
(item.pattern.push ? item.pattern : [item.pattern]).forEach(pattern => {
|
||||
|
||||
const pattern_closed = pattern.lastIndexOf("/");
|
||||
|
||||
try{
|
||||
if(pattern_closed)
|
||||
pattern = new RegExp(pattern.substr(1, pattern_closed - 1), pattern.substr(pattern_closed + 1));
|
||||
}catch(exception){};
|
||||
|
||||
patterns.push(pattern || null);
|
||||
|
||||
});
|
||||
|
||||
if(patterns)
|
||||
dictionary.push(Object.assign({}, item, {
|
||||
patterns : patterns,
|
||||
results : item.result.push ? item.result : [item.result]
|
||||
}));
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
mount(dictionary, wmarkdown.item_self.querySelector(".content>.content-box"));
|
||||
setTimeout(scroll_event_function, 10);
|
||||
|
||||
const dictionary_input = wmarkdown.item_self.querySelector(".data-dictionary");
|
||||
|
||||
if(!dictionary_input)
|
||||
return;
|
||||
|
||||
const item = dictionary_input.parentNode.insertBefore(document.createElement("form"), dictionary_input),
|
||||
header = (`
|
||||
<tr>
|
||||
<th data-field="i" data-i18n="i">i</th>
|
||||
<th data-field="patterns" data-i18n="patterns">Patterns</th>
|
||||
<th data-field="results" data-i18n="results">Results</th>
|
||||
<th data-field="words" data-i18n="words">Words</th>
|
||||
<th data-field="meanings" data-i18n="meanings">Meanings</th>
|
||||
<th data-field="urls" data-i18n="urls">URLs</th>
|
||||
</tr>
|
||||
`),
|
||||
hashes = {};
|
||||
let body = ``;
|
||||
|
||||
["search", "autosearch", "meanings", "case_sensitive"].forEach(key => hashes[key] = wmarkdown.hash());
|
||||
|
||||
dictionary.forEach((item, i) => {
|
||||
|
||||
let urls = ``,
|
||||
words = '';
|
||||
const results = item.words || item.results;
|
||||
|
||||
(item.links ? item.links.push ? item.links : [item.links] : []).forEach(link => urls += `<li><a href="` + link + `" target="_blank" title="` + link + `">` + link + `</a></li>`);
|
||||
(results.push ? results : [results]).forEach(word => words += '<li>' + word + '</li>');
|
||||
|
||||
body += (`
|
||||
<tr data-i="` + i + `" data-visible="true">
|
||||
<td data-field="i">` + i + `</td>
|
||||
<td data-field="patterns"><ul><li>` + item.patterns.join(`</li><li>`) + `</li></ul></td>
|
||||
<td data-field="results"><ul><li>` + item.results.join(`</li><li>`) + `</li></ul></td>
|
||||
<td data-field="words"><ul>` + words + `</ul></td>
|
||||
<td data-field="description">` + (item.description.push ? item.description.join(" ") : item.description) + `</td>
|
||||
<td data-field="urls"><ul>` + urls + `</ul></td>
|
||||
</tr>
|
||||
`);
|
||||
});
|
||||
|
||||
item.setAttribute("class", "data-dictionary-table");
|
||||
item.setAttribute("action", window.location.hash);
|
||||
item.setAttribute("method", "get");
|
||||
item.setAttribute("onsubmit", "return false;");
|
||||
item.innerHTML = (`
|
||||
<fieldset>
|
||||
<legend data-i18n="search">Search</legend>
|
||||
<div class="search" data-i18n="search" data-i18n-without="true" title="search">
|
||||
<label for="` + hashes.search + `" data-i18n="search">Search</label>
|
||||
<span class="field"><input type="text" id="` + hashes.search + `" name="search" data-i18n="search" data-i18n-without="true" placeholder="Search..." /></span>
|
||||
<span class="items">
|
||||
<label class="checkbox" for="` + hashes.meanings + `" data-i18n="meanings" data-i18n-without="true" title="Meanings">
|
||||
<input type="checkbox" id="` + hashes.meanings + `" name="meanings"` + (wmarkdown.settings("meanings") ? `checked` : ``) + ` />
|
||||
<span data-icon="checkbox"></span>
|
||||
<span data-i18n="meanings">Meanings</span>
|
||||
</label>
|
||||
<label class="checkbox" for="` + hashes.case_sensitive + `" data-i18n="case_sensitive" data-i18n-without="true" title="Case sensitive">
|
||||
<input type="checkbox" id="` + hashes.case_sensitive + `" name="case_sensitive"` + (wmarkdown.settings("case_sensitive") ? `checked` : ``) + ` />
|
||||
<span data-icon="checkbox"></span>
|
||||
<span data-i18n="case_sensitive">Case sensitive</span>
|
||||
</label>
|
||||
<label class="checkbox" for="` + hashes.autosearch + `" data-i18n="autosearch" data-i18n-without="true" title="Autosearch">
|
||||
<input type="checkbox" id="` + hashes.autosearch + `" name="autosearch"` + (wmarkdown.settings("autosearch") ? `checked` : ``) + ` />
|
||||
<span data-icon="checkbox"></span>
|
||||
<span data-i18n="autosearch">Autosearch</span>
|
||||
</label>
|
||||
<button type="button" data-i18n="search" data-without="true" title="Search" onclick="` + wmarkdown.object_name + `.dictionary.search(this, event);">
|
||||
<span data-icon="search"></span>
|
||||
<span data-i18n="search">Search</span>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
<div class="table">
|
||||
<table>
|
||||
<thead>` + header + `</thead>
|
||||
<tbody>` + body + `</tbody>
|
||||
<tfoot>` + header + `</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
</fieldset>
|
||||
`);
|
||||
|
||||
};
|
||||
|
||||
this.show = (element, event) => {
|
||||
element.style.zIndex = ++ z_index;
|
||||
element.setAttribute("data-show", true);
|
||||
};
|
||||
this.hide = (element, event) => element.setAttribute("data-show", false);
|
||||
|
||||
this.search = (element, event) => {
|
||||
if(!element)
|
||||
return;
|
||||
|
||||
while((!element.classList || !element.classList.contains("data-dictionary-table")) && (element = element.parentNode));
|
||||
|
||||
let text = element.querySelector("[name=search]").value;
|
||||
|
||||
if(text == cache)
|
||||
return;
|
||||
cache = text;
|
||||
|
||||
const meanings = element.querySelector("[name=meanings]").checked,
|
||||
case_sensitive = element.querySelector("[name=case_sensitive]").checked;
|
||||
|
||||
if(!case_sensitive)
|
||||
text = text.toLowerCase();
|
||||
|
||||
element.querySelectorAll("tbody>tr").forEach(word => {
|
||||
|
||||
let words = word.querySelector("[data-field=words]").innerText,
|
||||
description = word.querySelector("[data-field=description]").innerText;
|
||||
|
||||
if(!case_sensitive){
|
||||
words = words.toLowerCase(),
|
||||
description = description.toLowerCase();
|
||||
};
|
||||
|
||||
word.setAttribute("data-visible", (
|
||||
!text ||
|
||||
words.indexOf(text) != -1 ||
|
||||
(meanings && description.indexOf(text) != -1)
|
||||
));
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
construct();
|
||||
|
||||
};
|
241
Public/ecma/WMarkDown.Multimedia.ecma.js
Executable file
@ -0,0 +1,241 @@
|
||||
WMarkDown.Multimedia = function(wmarkdown){
|
||||
|
||||
const self = this;
|
||||
let started = false;
|
||||
|
||||
const construct = () => {};
|
||||
|
||||
const error = (element, type) => {
|
||||
|
||||
element.parentNode.setAttribute("data-status", "error");
|
||||
element.parentNode.setAttribute("data-error-type", type);
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
this.image_try_next = (element, event) => {
|
||||
if(!element.hasAttribute("data-i") || !element.hasAttribute("data-src"))
|
||||
return error(element, "no_data");
|
||||
|
||||
let images;
|
||||
|
||||
try{
|
||||
if(!(images = JSON.parse(atob(element.getAttribute("data-src")))))
|
||||
return error(element, "no_json");
|
||||
}catch(exception){
|
||||
console.error(exception);
|
||||
return error(element, "exception");
|
||||
};
|
||||
|
||||
const i = Number(element.getAttribute("data-i"));
|
||||
|
||||
if(isNaN(i))
|
||||
return error(element, "i_is_nan");
|
||||
if(i >= images.length)
|
||||
return error(element, "ended")
|
||||
|
||||
const image = new Image();
|
||||
|
||||
image.src = images[i];
|
||||
image.onload = () => {
|
||||
|
||||
const anchor = element.parentNode.querySelector("a");
|
||||
|
||||
element.setAttribute("src", images[i]);
|
||||
element.parentNode.setAttribute("data-status", "loaded");
|
||||
element.parentNode.querySelector(".image-style").style.backgroundImage = "url('" + images[i] + "')";
|
||||
|
||||
if(anchor){
|
||||
anchor.setAttribute("href", images[i]);
|
||||
anchor.innerText = images[i];
|
||||
};
|
||||
|
||||
};
|
||||
image.onerror = () => {
|
||||
element.setAttribute("data-i", i + 1);
|
||||
self.image_try_next(element, event);
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
this.video_try_next = (element, event) => {
|
||||
if(!element.hasAttribute("data-i") || !element.hasAttribute("data-src"))
|
||||
return error(element, "no_data");
|
||||
|
||||
let videos;
|
||||
|
||||
try{
|
||||
if(!(videos = JSON.parse(atob(element.getAttribute("data-src")))))
|
||||
return error(element, "no_json");
|
||||
}catch(exception){
|
||||
console.error(exception);
|
||||
return error(element, "exception");
|
||||
};
|
||||
|
||||
const i = Number(element.getAttribute("data-i"));
|
||||
|
||||
if(isNaN(i))
|
||||
return error(element, "i_is_nan");
|
||||
if(i >= videos.length)
|
||||
return error(element, "ended")
|
||||
|
||||
const video = document.createElement("video");
|
||||
|
||||
video.src = videos[i];
|
||||
video.onloadstart = () => {
|
||||
element.setAttribute("src", videos[i]);
|
||||
wmarkdown.get_mime(videos[i], mime => element.setAttribute("type", mime));
|
||||
with(element.parentNode.querySelector("a")){
|
||||
setAttribute("href", videos[i]);
|
||||
innerText = videos[i];
|
||||
};
|
||||
element.parentNode.setAttribute("data-status", "loaded");
|
||||
video.remove();
|
||||
};
|
||||
video.onerror = () => {
|
||||
element.setAttribute("data-i", i + 1);
|
||||
self.image_try_next(element, event);
|
||||
video.remove();
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
this.audio_try_next = (element, event) => {
|
||||
if(!element.hasAttribute("data-i") || !element.hasAttribute("data-src"))
|
||||
return error(element, "no_data");
|
||||
|
||||
let audios;
|
||||
|
||||
try{
|
||||
if(!(audios = JSON.parse(atob(element.getAttribute("data-src")))))
|
||||
return error(element, "no_json");
|
||||
}catch(exception){
|
||||
console.error(exception);
|
||||
return error(element, "exception");
|
||||
};
|
||||
|
||||
const i = Number(element.getAttribute("data-i"));
|
||||
|
||||
if(isNaN(i))
|
||||
return error(element, "i_is_nan");
|
||||
if(i >= audios.length)
|
||||
return error(element, "ended")
|
||||
|
||||
const audio = new Audio();
|
||||
|
||||
audio.src = audios[i];
|
||||
audio.onloadstart = () => {
|
||||
element.setAttribute("src", audios[i]);
|
||||
wmarkdown.get_mime(audios[i], mime => element.setAttribute("type", mime));
|
||||
with(element.parentNode.querySelector("a")){
|
||||
setAttribute("href", audios[i]);
|
||||
innerText = audios[i];
|
||||
};
|
||||
element.parentNode.setAttribute("data-status", "loaded");
|
||||
};
|
||||
audio.onerror = () => {
|
||||
element.setAttribute("data-i", i + 1);
|
||||
self.image_try_next(element, event);
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
const embed_try = embed => {
|
||||
if(!embed.hasAttribute("data-platform") || !embed.hasAttribute("data-id"))
|
||||
return;
|
||||
embed.setAttribute("data-status", "mounted");
|
||||
|
||||
switch(embed.getAttribute("data-platform")){
|
||||
case "youtube":
|
||||
with(embed.appendChild(document.createElement("iframe"))){
|
||||
setAttribute("src", "https://www.youtube.com/embed/" + embed.getAttribute("data-id"));
|
||||
setAttribute("title", "YouTube video player");
|
||||
setAttribute("frameborder", 0);
|
||||
setAttribute("style", "position:absolute;top:0em;left:0em;width:100%;height:100%;");
|
||||
setAttribute("allow", "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture");
|
||||
setAttribute("allowfullscreen", true);
|
||||
};
|
||||
break;
|
||||
case "vimeo":
|
||||
with(embed.appendChild(document.createElement("iframe"))){
|
||||
setAttribute("src", "https://player.vimeo.com/video/" + embed.getAttribute("data-id"));
|
||||
setAttribute("frameborder", 0);
|
||||
setAttribute("style", "position:absolute;top:0em;left:0em;width:100%;height:100%;");
|
||||
setAttribute("allow", "autoplay; fullscreen; picture-in-picture");
|
||||
setAttribute("allowfullscreen", true);
|
||||
};
|
||||
break;
|
||||
case "facebook":
|
||||
// <iframe src="https://www.facebook.com/plugins/video.php?height=314&830479191217676%2F&show_text=false&width=560" allowFullScreen="true"></iframe>
|
||||
// <iframe src="https://www.facebook.com/plugins/video.php?height=314&href=https%3A%2F%2Fwww.facebook.com%2Fzorman.videos.7%2Fvideos%2F830479191217676%2F&show_text=false&width=560" width="560" height="314" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowfullscreen="true" allow="autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share" allowFullScreen="true"></iframe>
|
||||
// https://www.facebook.com/gaming/497870250231404/videos/830479191217676/
|
||||
with(embed.appendChild(document.createElement("iframe"))){
|
||||
setAttribute("src", "https://www.facebook.com/video.php?v=" + embed.getAttribute("data-id"));
|
||||
setAttribute("style", "position:absolute;top:0em;left:0em;width:100%;height:100%;border:none;overflow:hidden;");
|
||||
setAttribute("scrolling", "no");
|
||||
setAttribute("frameborder", 0);
|
||||
setAttribute("allow", "autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share");
|
||||
setAttribute("allowfullscreen", true);
|
||||
};
|
||||
break;
|
||||
case "twitch":
|
||||
// <iframe src="https://player.twitch.tv/?video=1025807282&parent=www.example.com" scrolling="no" height="378" width="620"></iframe>
|
||||
// https://www.twitch.tv/videos/1025807282
|
||||
with(embed.appendChild(document.createElement("iframe"))){
|
||||
setAttribute("src", "https://player.twitch.tv/?video=" + embed.getAttribute("data-id") + "&parent=wmarkdown.k3y.pw");
|
||||
setAttribute("style", "position:absolute;top:0em;left:0em;width:100%;height:100%;");
|
||||
setAttribute("scrolling", "no");
|
||||
setAttribute("frameborder", 0);
|
||||
setAttribute("allow", "autoplay; clipboard-write; encrypted-media; picture-in-picture; web-share");
|
||||
setAttribute("allowfullscreen", true);
|
||||
};
|
||||
break;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
const execute_in_range = (item, range, callback) => {
|
||||
|
||||
const y = item.getBoundingClientRect().y;
|
||||
|
||||
if(y < range && y > -range){
|
||||
item.setAttribute("data-status", "loading");
|
||||
callback();
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
this.on_scroll = (event) => {
|
||||
|
||||
const range = wmarkdown.item_self.querySelector(".content").offsetHeight * wmarkdown.settings("onload_media_range");
|
||||
|
||||
wmarkdown.item_self.querySelectorAll(".multimedia-box>[data-status=unloaded]").forEach(item => execute_in_range(item, range, () => {
|
||||
|
||||
const media = item.querySelector("audio[onerror]") || item.querySelector("[onerror]");
|
||||
|
||||
media.onerror(media);
|
||||
|
||||
}));
|
||||
|
||||
wmarkdown.item_self.querySelectorAll(".multimedia-box>[data-type=embed]>[data-status=unmounted]").forEach(item => execute_in_range(item, range, () => embed_try(item)));
|
||||
|
||||
};
|
||||
|
||||
this.start = () => {
|
||||
|
||||
if(started)
|
||||
return;
|
||||
started = true;
|
||||
|
||||
const content = wmarkdown.item_self.querySelector(".content");
|
||||
|
||||
self.on_scroll(null);
|
||||
wmarkdown.item_self.querySelector(".content").addEventListener("scroll", self.on_scroll);
|
||||
|
||||
};
|
||||
|
||||
this.go = (element, event) => window.open(element.querySelector("[src]").getAttribute("src"), "_blank");
|
||||
|
||||
construct();
|
||||
|
||||
};
|
78
Public/ecma/WMarkDown.WMonitor.ecma.js
Executable file
@ -0,0 +1,78 @@
|
||||
WMarkDown.WMonitor = function(wmarkdown){
|
||||
|
||||
const self = this;
|
||||
let started = false;
|
||||
|
||||
const construct = () => {};
|
||||
|
||||
this.start = () => {
|
||||
|
||||
if(started)
|
||||
return;
|
||||
started = true;
|
||||
|
||||
self.build();
|
||||
|
||||
};
|
||||
|
||||
this.build = () => {
|
||||
|
||||
const blocks = [];
|
||||
|
||||
wmarkdown.item_self.querySelectorAll("[data-wmonitor][data-status=unloaded]").forEach(item => {
|
||||
|
||||
item.setAttribute("data-status", "loading");
|
||||
item.innerHTML = (`
|
||||
<form method="post" action="#" onsubmit="return false">
|
||||
<fieldset>
|
||||
<legend data-i18n="monitor">Monitor</legend>
|
||||
<ul>
|
||||
<li class="likes" data-value="0" data-i18n="likes" data-i18n-without="true" title="Likes" onclick="` + wmarkdown.object_name + `.wmonitor.set_like(this, event);">
|
||||
<span data-icon="likes"></span>
|
||||
<span class="value">0</span>
|
||||
</li>
|
||||
<li class="dislikes" data-value="0" data-i18n="dislikes" data-i18n-without="true" title="Dislikes" onclick="` + wmarkdown.object_name + `.wmonitor.set_dislike(this, event);">
|
||||
<span data-icon="dislikes"></span>
|
||||
<span class="value">0</span>
|
||||
</li>
|
||||
<li class="views" data-value="0" data-i18n="views" data-i18n-without="true" title="Views">
|
||||
<span data-icon="views"></span>
|
||||
<span class="full">0</span>
|
||||
</li>
|
||||
<li class="comments" data-value="0" data-i18n="comments" data-i18n-without="true" title="Comments" onclick="` + wmarkdown.object_name + `.wmonitor.view_comments(this, event);">
|
||||
<span data-icon="comments"></span>
|
||||
<span class="value">0</span>
|
||||
</li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
</form>
|
||||
`);
|
||||
blocks.push(item.getAttribute("data-wmonitor"));
|
||||
|
||||
});
|
||||
|
||||
console.log(blocks);
|
||||
|
||||
};
|
||||
|
||||
this.set_like = (item, event) => {
|
||||
|
||||
console.log("like");
|
||||
|
||||
};
|
||||
|
||||
this.set_dislike = (item, event) => {
|
||||
|
||||
console.log("dislike");
|
||||
|
||||
};
|
||||
|
||||
this.view_comments = (item, event) => {
|
||||
|
||||
console.log("comments");
|
||||
|
||||
};
|
||||
|
||||
construct();
|
||||
|
||||
};
|
711
Public/ecma/WMarkDown.ecma.js
Executable file
@ -0,0 +1,711 @@
|
||||
WMarkDown = function(input){
|
||||
|
||||
const self = this,
|
||||
default_settings = {
|
||||
nulls : true,
|
||||
default_value : null,
|
||||
autostart : true,
|
||||
object_name : "wmarkdown",
|
||||
frames_per_second : 24,
|
||||
timeout : 2000,
|
||||
preload_timeout : 2000,
|
||||
preload_wmarkdown : true,
|
||||
hash_alphabet : "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",
|
||||
hash_length : 11,
|
||||
meanings : true,
|
||||
case_sensitive : false,
|
||||
autosearch : true,
|
||||
onload_media_range : 1.4,
|
||||
ajax_timeout : 2000,
|
||||
mime_extension_file : "/json/mime_to_extension.json",
|
||||
extension_mime_file : "/json/extension_to_mime.json",
|
||||
default_mime : "application/octet-stream",
|
||||
default_extension : "txt",
|
||||
variable_name : "wmd",
|
||||
wmd_file : "wmd.php",
|
||||
display_view : null,
|
||||
cells : 40,
|
||||
item : ".wmarkdown",
|
||||
size_multiplier : 1,
|
||||
automultiplier : 1,
|
||||
default_font_size : 14,
|
||||
size_range : [.5, 4],
|
||||
wmd_options : "wmd-options",
|
||||
wmd_options_position : "header",
|
||||
screen_sizes : [2560, 1920, 1280, 960, 640],
|
||||
default_view : "content",
|
||||
nulls : false,
|
||||
default_value : null
|
||||
},
|
||||
custom_settings = {},
|
||||
threads = [],
|
||||
hashes = [],
|
||||
mime_extension = {},
|
||||
extension_mime = {},
|
||||
screen = {
|
||||
x : 0,
|
||||
y : 0,
|
||||
multiplier : 0,
|
||||
automultiplier : 0,
|
||||
sizes : []
|
||||
},
|
||||
on_ready_events = [];
|
||||
let started = false,
|
||||
thread = null,
|
||||
threads_l = 0,
|
||||
screen_size_change_thread = null,
|
||||
last_change = 0,
|
||||
on_ready_ok = false;
|
||||
|
||||
let object_name = this.object_name;
|
||||
let item_self = this.item_self = document;
|
||||
let hash_self = this.hash_self;
|
||||
|
||||
let dictionary = this.dictionary;
|
||||
let multimedia = this.multimedia;
|
||||
let wmonitor = this.wmonitor;
|
||||
|
||||
const null_or_undefined = this.null_or_undefined = value => value === undefined || value === null;
|
||||
|
||||
const settings_priority = inputs => [].concat(!inputs ? [] : inputs.push ? inputs : [inputs], [input, custom_settings, default_settings]);
|
||||
|
||||
const default_value = this.default_value = (_default, nulls) => _default !== undefined && ((typeof nulls == "boolean" ? nulls : settings("nulls", null, false, false)) || _default !== null ? _default : settings("default_value"), null, null, true);
|
||||
|
||||
const settings = this.settings = (names, inputs, _default, nulls) => {
|
||||
if(!names)
|
||||
return default_value(_default, nulls);
|
||||
|
||||
const l = (names.push ? names : names = [names]).length,
|
||||
m = (inputs = (inputs ? inputs.push ? inputs : [inputs] : []).concat([input, default_settings])).length;
|
||||
|
||||
typeof nulls != "boolean" && (nulls = settings("nulls", null, false, false));
|
||||
|
||||
for(let j = 0; j < m; j ++)
|
||||
if(typeof inputs[j] == "object")
|
||||
for(let i = 0; i < l; i ++)
|
||||
if(names[i] && inputs[j][names[i]] !== undefined && (nulls || inputs[j][names[i]] !== null))
|
||||
return inputs[j][names[i]];
|
||||
return default_value(_default, nulls);
|
||||
};
|
||||
|
||||
const threads_function = () => {
|
||||
|
||||
const date = Date.now();
|
||||
|
||||
threads.forEach(thread => thread && thread());
|
||||
|
||||
if(item_self && date - last_change > 2000){
|
||||
last_change = date;
|
||||
|
||||
const mobile = self.is_mobile();
|
||||
|
||||
item_self.setAttribute("data-mobile", mobile);
|
||||
item_self.setAttribute("data-display-view", mobile ? "mobile" : "pc");
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
const threads_add = this.threads_add = method => {
|
||||
if(typeof method != "function")
|
||||
return null;
|
||||
|
||||
let i = 0;
|
||||
|
||||
for(; i < threads_l; i ++)
|
||||
if(!threads[i])
|
||||
break;
|
||||
|
||||
threads[i] = method;
|
||||
threads_l = threads.length;
|
||||
|
||||
return i;
|
||||
};
|
||||
|
||||
const threads_remove = this.threads_remove = i => !isNaN(i) && threads[i] && (threads[i] = null);
|
||||
|
||||
const threads_start = this.threads_start = frames_per_second => thread === null && (thread = setInterval(threads_function, 1000 / (frames_per_second || settings("frames_per_second"))));
|
||||
|
||||
const threads_stop = this.threads_stop = () => {
|
||||
if(thread === null)
|
||||
return;
|
||||
|
||||
clearInterval(thread);
|
||||
thread = null;
|
||||
|
||||
};
|
||||
|
||||
const is_dom_item = item => (
|
||||
typeof HTMLElement == "object" ? item instanceof HTMLElement :
|
||||
typeof Node == "object" ? item instanceof Node :
|
||||
item && typeof item === "object" && !isNaN(item.nodeType) && item.nodeName == "string"
|
||||
);
|
||||
|
||||
const preload = this.preload = (selector, callback) => {
|
||||
if(typeof callback != "function")
|
||||
return;
|
||||
|
||||
if(!selector){
|
||||
callback(null, false, "NO_SELECTOR");
|
||||
return;
|
||||
};
|
||||
if(is_dom_item(selector)){
|
||||
callback(selector, false, "OK");
|
||||
return;
|
||||
};
|
||||
if(!selector.substr){
|
||||
callback(null, false, "NO_DOM_ITEM");
|
||||
return;
|
||||
};
|
||||
|
||||
let item;
|
||||
|
||||
try{
|
||||
if(item = item_self.querySelector(selector)){
|
||||
callback(item, false, "OK");
|
||||
return;
|
||||
};
|
||||
}catch(error){
|
||||
callback(null, false, "BAD_SELECTOR");
|
||||
return;
|
||||
};
|
||||
|
||||
const date = Date.now(),
|
||||
timeout = settings(["preload_timeout", "timeout"]);
|
||||
let preload = threads_add(() => {
|
||||
if(item = item_self.querySelector(selector)){
|
||||
threads_remove(preload);
|
||||
callback(item, true, "OK");
|
||||
}else if(Date.now() - date > timeout){
|
||||
threads_remove(preload);
|
||||
callback(null, true, "TIMEOUT");
|
||||
};
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
const screen_size_change = () => {
|
||||
|
||||
if(!item_self)
|
||||
return;
|
||||
|
||||
const multiplier = Number(item_self.getAttribute("data-size-multiplier")),
|
||||
automultiplier = Number(item_self.getAttribute("data-size-automultiplier"));
|
||||
|
||||
if(screen.x == item_self.offsetWidth && screen.y == item_self.offsetHeight && screen.multiplier == multiplier && screen.automultiplier == automultiplier)
|
||||
return;
|
||||
|
||||
screen.x = item_self.offsetWidth;
|
||||
screen.y = item_self.offsetHeight;
|
||||
screen.multiplier = multiplier;
|
||||
screen.automultiplier = automultiplier;
|
||||
|
||||
const x_higher = screen.x > screen.y;
|
||||
let size = "0";
|
||||
|
||||
!screen.sizes.some((value, i) => i && !(value > screen.x && (size += " " + i)));
|
||||
|
||||
item_self.setAttribute("data-direction", x_higher ? "horizontal" : "vertical");
|
||||
item_self.style.fontSize = ((
|
||||
item_self.getAttribute("data-mobile") == "true" ?
|
||||
screen[x_higher ? "y" : "x"] / Number(item_self.getAttribute("data-cells")) :
|
||||
item_self.getAttribute("data-font-size")
|
||||
) * multiplier * automultiplier) + "px";
|
||||
item_self.setAttribute("data-screen-size", size.trim());
|
||||
|
||||
};
|
||||
|
||||
const button = this.button = (name, action, default_text) => {
|
||||
|
||||
const text = default_text;
|
||||
|
||||
return (`
|
||||
<button type="button" data-i18n="` + name + `" data-i18n-without="true" title="` + text + `" onclick="` + action + `">
|
||||
<span data-icon="` + name + `"></span>
|
||||
<span data-i18n="` + name + `">` + text + `</span>
|
||||
</button>
|
||||
`);
|
||||
};
|
||||
|
||||
const preload_wmarkdown = this.preload_wmarkdown = callback => {
|
||||
if(typeof callback != "function")
|
||||
return;
|
||||
|
||||
if(item_self && item_self.classList && item_self.classList.contains("wmarkdown")){
|
||||
callback(item_self, false, "OK");
|
||||
return;
|
||||
};
|
||||
|
||||
preload(".wmarkdown", wmarkdown => {
|
||||
|
||||
if(!wmarkdown){
|
||||
callback(null, false, "NO_WMARKDOWN");
|
||||
return;
|
||||
};
|
||||
|
||||
const mobile = self.is_mobile(),
|
||||
display_view = settings("display_view"),
|
||||
multiplier = settings(["size_multiplier", "multiplier"]),
|
||||
view_menu_items = {
|
||||
menu : item_self.querySelector(".headers-menu [data-i18n=headers_menu]"),
|
||||
content : item_self.querySelector("fieldset.content h1,h2,h3,h4,h5,h6"),
|
||||
files : item_self.querySelector("fieldset.files [data-i18n=files]")
|
||||
};
|
||||
|
||||
item_self = self.item_self = wmarkdown;
|
||||
|
||||
item_self.setAttribute("data-mobile", mobile);
|
||||
item_self.setAttribute("data-display-view", display_view || (mobile ? "mobile" : "pc"));
|
||||
item_self.setAttribute("data-cells", settings("cells"));
|
||||
item_self.setAttribute("data-size-multiplier", multiplier);
|
||||
item_self.setAttribute("data-size-automultiplier", settings(["size_automultiplier", "automultiplier"]));
|
||||
item_self.setAttribute("data-font-size", settings(["default_font_size", "font_size"]));
|
||||
item_self.setAttribute("data-view", settings(["default_view", "view"]));
|
||||
|
||||
screen_size_change_thread = threads_add(screen_size_change);
|
||||
|
||||
|
||||
with(item_self.querySelector("header").appendChild(document.createElement("div"))){
|
||||
setAttribute("class", "view-menu buttons group");
|
||||
for(const key in view_menu_items)
|
||||
view_menu_items[key] && (innerHTML += button(key, object_name + ".view_show(this, event, '" + key + "');", view_menu_items[key]));
|
||||
};
|
||||
|
||||
preload(settings("item"), () => {
|
||||
|
||||
const menu_items = item_self.querySelectorAll(".headers-menu [data-levels]");
|
||||
|
||||
menu_items.forEach((item, i) => {
|
||||
if(!i)
|
||||
return;
|
||||
|
||||
const level = Number(item.getAttribute("data-level")),
|
||||
j = i - 1;
|
||||
|
||||
if(level > Number(menu_items[j].getAttribute("data-level")))
|
||||
menu_items[j].setAttribute("data-levels", Number(menu_items[j].getAttribute("data-levels")) + 1);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
preload("[data-preload=wmarkdown-preloader]", preloader => {
|
||||
|
||||
if(!preloader){
|
||||
callback(null, false, "NO_PRELOADER");
|
||||
return;
|
||||
};
|
||||
|
||||
preloader.remove();
|
||||
setTimeout(() => callback(item_self, true, "OK"), 1000);
|
||||
|
||||
const options_class = settings(["wmd_options", "options"]);
|
||||
let options = item_self.querySelector("." + options_class);
|
||||
|
||||
!options && (options = item_self.querySelector(settings(["wmd_options_position", "options_position"])).appendChild(document.createElement("div"))).setAttribute("class", options_class);
|
||||
|
||||
if(!options.querySelector("[name=multiplier]")){
|
||||
|
||||
const range = settings(["size_range", "multiplier_range"]);
|
||||
|
||||
with(options.appendChild(document.createElement("span"))){
|
||||
setAttribute("class", "multiplier");
|
||||
innerHTML = (`
|
||||
<button type="button" data-i18n="less" data-i18n-without="true" title="Less" onclick="` + object_name + `.multiplier_less(this, event);">
|
||||
<span data-icon="less"></span>
|
||||
<span data-i18n="less">Less</span>
|
||||
</button>
|
||||
<span class="range-box"
|
||||
onmousedown="` + object_name + `.multiplier_mouse_down(this, event);"
|
||||
onmouseup="` + object_name + `.multiplier_mouse_up(this, event);"
|
||||
onmouseout="` + object_name + `.multiplier_mouse_up(this, event);"
|
||||
onmousemove="` + object_name + `.multiplier_change(this, event);"
|
||||
>
|
||||
<span class="range-position"></span>
|
||||
</span>
|
||||
</span>
|
||||
<button type="button" data-i18n="more" data-i18n-without="true" title="More" onclick="` + object_name + `.multiplier_more(this, event);">
|
||||
<span data-icon="more"></span>
|
||||
<span data-i18n="more">More</span>
|
||||
</button>
|
||||
`);
|
||||
// setAttribute("data-clicked", false);
|
||||
// setAttribute("onmousedown", object_name + ".multiplier_mouse_down(this, event);");
|
||||
// setAttribute("onmouseup", object_name + ".multiplier_mouse_up(this, event);");
|
||||
// setAttribute("onmouseout", object_name + ".multiplier_mouse_up(this, event);");
|
||||
// setAttribute("onmousemove", object_name + ".multiplier_change(this, event);");
|
||||
// innerHTML = `<input type="range" data-i18n="multiplier" data-i18n-without="true" title="Multiplier" onchange="` + object_name + `.multiplier_change(this, event);" readonly name="multiplier" min="` + range[0] + `" max="` + range[1] +`" value="` + multiplier + `" step="any" onmousemove="` + object_name + `.multiplier_change(this, event);" />`;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
this.start = () => {
|
||||
|
||||
if(started)
|
||||
return;
|
||||
started = true;
|
||||
|
||||
threads_start();
|
||||
|
||||
screen.sizes = settings("screen_sizes");
|
||||
|
||||
preload_wmarkdown(wmarkdown => {
|
||||
if(!wmarkdown)
|
||||
return;
|
||||
|
||||
const references = {},
|
||||
logo = wmarkdown.querySelector(".logo img"),
|
||||
temporary_image = new Image();
|
||||
|
||||
logo.setAttribute("data-status", "loading");
|
||||
temporary_image.src = logo.getAttribute("src");
|
||||
|
||||
temporary_image.addEventListener("load", event => logo.parentNode.setAttribute("data-status", "ok"));
|
||||
temporary_image.addEventListener("error", event => logo.parentNode.setAttribute("data-status", "error"));
|
||||
|
||||
try{
|
||||
typeof mermaid !== undefined && mermaid.initialize({startOnLoad : true});
|
||||
}catch(no_mermaid){console.error(["MERMAID_ERROR", no_mermaid])};
|
||||
|
||||
try{
|
||||
typeof hljs !== undefined && item_self.querySelectorAll(".code-block:not([data-special=true])>.code-box").forEach(block => block.innerHTML = hljs.highlight(block.innerHTML.replace(/&(gt|lt|amp);/g, (...arguments) => {
|
||||
return {
|
||||
amp : "&",
|
||||
gt : ">",
|
||||
lt : "<"
|
||||
}[arguments[1]] || arguments[0];
|
||||
}), {language : block.parentNode.getAttribute("data-lang")}).value);
|
||||
}catch(no_highlighter){console.error(["HIGHLIGHTER_ERROR", no_highlighter])};
|
||||
|
||||
item_self.querySelectorAll("[type=hidden][data-index]").forEach(reference => references[reference.getAttribute("data-index")] = reference.getAttribute("data-link"));
|
||||
item_self.querySelectorAll("a[data-index]").forEach(link => link.setAttribute("href", references[link.getAttribute("data-index")] || link.getAttribute("href")));
|
||||
|
||||
item_self.querySelectorAll(".code-block[data-lang=maths]>div").forEach(item => {
|
||||
try{
|
||||
|
||||
const formula = MathJax.tex2chtml(item.innerText);
|
||||
|
||||
item.innerHTML = '';
|
||||
item.appendChild(formula);
|
||||
|
||||
}catch(no_maths){console.error(["MATHS_ERROR", no_maths])};
|
||||
});
|
||||
MathJax.startup.document.clear();
|
||||
MathJax.startup.document.updateDocument();
|
||||
|
||||
item_self.querySelectorAll("fieldset.headers-menu nav a,fieldset.files nav a+a").forEach(anchor => anchor.setAttribute("onclick", (anchor.getAttribute("onclick") || "") + object_name + ".go_to_item(this, event);"))
|
||||
|
||||
dictionary && dictionary.start();
|
||||
multimedia && multimedia.start();
|
||||
wmonitor && wmonitor.start();
|
||||
|
||||
on_ready_ok = true;
|
||||
on_ready_events.forEach(event => event && event());
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
const construct = () => {
|
||||
|
||||
object_name = self.object_name = settings("object_name");
|
||||
|
||||
WMarkDown.Dictionary && (dictionary = self.dictionary = new WMarkDown.Dictionary(self));
|
||||
WMarkDown.Multimedia && (multimedia = self.multimedia = new WMarkDown.Multimedia(self));
|
||||
WMarkDown.WMonitor && (wmonitor = self.wmonitor = new WMarkDown.WMonitor(self));
|
||||
|
||||
settings("autostart") && self.start();
|
||||
|
||||
};
|
||||
|
||||
const get_menu = menu => {
|
||||
|
||||
if(menu)
|
||||
while(menu.tagName && menu.tagName.toLowerCase() != "fieldset" && (menu = menu.parentNode));
|
||||
|
||||
return menu || null;
|
||||
};
|
||||
|
||||
const show_menu = (element, visible) => {
|
||||
|
||||
const menu = get_menu(element);
|
||||
|
||||
menu && document.querySelector(".wmarkdown>.body").setAttribute("data-" + menu.getAttribute("class").split("-")[0] + "-menu-deployed", visible);
|
||||
|
||||
};
|
||||
|
||||
this.hide_menu = (element, event) => show_menu(element, false);
|
||||
this.show_menu = (element, event) => show_menu(element, true);
|
||||
|
||||
this.block_code_scroll = (element, event) => element.parentNode.querySelector("ol").style.marginTop = -element.scrollTop + "px";
|
||||
|
||||
this.deploy = (element, event, deployed) => {
|
||||
if(!element)
|
||||
return;
|
||||
|
||||
while(!element.hasAttribute("data-level") && (element = element.parentNode));
|
||||
if(!element)
|
||||
return;
|
||||
|
||||
const level = Number(element.getAttribute("data-level")) + 1,
|
||||
items = element.parentNode.querySelectorAll("[data-id=" + element.getAttribute("data-id") + "]~li"),
|
||||
l = items.length;
|
||||
let parent_deployed = [];
|
||||
|
||||
element.setAttribute("data-deployed", typeof deployed == "boolean" ? deployed : deployed = element.getAttribute("data-deployed") == "false");
|
||||
|
||||
for(let i = 0; i < l; i ++){
|
||||
|
||||
const current_level = Number(items[i].getAttribute("data-level"));
|
||||
|
||||
if(current_level < level)
|
||||
break;
|
||||
|
||||
if(deployed){
|
||||
items[i].setAttribute("data-parent-deployed", current_level == level || parent_deployed[current_level - 1]);
|
||||
parent_deployed[current_level] = items[i].getAttribute("data-deployed") == "true";
|
||||
}else
|
||||
items[i].setAttribute("data-parent-deployed", false);
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
this.hash = () => {
|
||||
|
||||
let hash,
|
||||
alphabet = settings("hash_alphabet");
|
||||
const length = settings("hash_length"),
|
||||
l = (alphabet.push ? alphabet : alphabet = ("" + alphabet).split("")).length;
|
||||
|
||||
do{
|
||||
hash = "";
|
||||
while((hash += alphabet[Math.random() * l >> 0]).length < length);
|
||||
}while(
|
||||
hashes.includes(hash) ||
|
||||
/^\d/.test(hash) ||
|
||||
document.querySelector("." + hash + ",#" + hash + ",[name=" + hash + "]")
|
||||
);
|
||||
hashes.push(hash);
|
||||
|
||||
return hash;
|
||||
};
|
||||
|
||||
this.utf8_encode = string => unescape(encodeURIComponent(string));
|
||||
this.utf8_decode = string => decodeURIComponent(escape(string));
|
||||
|
||||
const load_file = this.load_file = (url, callback) => {
|
||||
|
||||
let ended = false;
|
||||
const ajax = new XMLHttpRequest(),
|
||||
timeout = settings(["ajax_timeout", "timeout"]),
|
||||
end = error => {
|
||||
if(ended)
|
||||
return;
|
||||
ended = true;
|
||||
typeof callback == "function" && callback(ajax.responseText, ajax.status, ajax.readyState, error == "OK", error);
|
||||
},
|
||||
date = Date.now();
|
||||
|
||||
ajax.open("get", url, true);
|
||||
ajax.timeout = timeout;
|
||||
ajax.onreadystatechange = () => {
|
||||
if(ended)
|
||||
return;
|
||||
if(ajax.readyState == 4)
|
||||
end("OK");
|
||||
else if(Date.now() - date > timeout)
|
||||
end("FORCED_TIMEOUT");
|
||||
};
|
||||
ajax.send(null);
|
||||
|
||||
ajax.ontimeout = () => end("TIMEOUT");
|
||||
ajax.onabort = () => end("ABORTED");
|
||||
ajax.onerror = () => end("ERROR");
|
||||
|
||||
return ajax;
|
||||
};
|
||||
|
||||
this.send = (variables, callback) => {
|
||||
|
||||
let ended = false;
|
||||
const ajax = new XMLHttpRequest(),
|
||||
timeout = settings(["ajax_timeout", "timeout"]),
|
||||
end = error => {
|
||||
if(ended)
|
||||
return;
|
||||
ended = true;
|
||||
typeof callback == "function" && callback(ajax.responseText, ajax.status, ajax.readyState, error == "OK", error);
|
||||
},
|
||||
date = Date.now();
|
||||
|
||||
ajax.open("post", settings("wmd_file"), true);
|
||||
ajax.timeout = timeout;
|
||||
ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
|
||||
ajax.onreadystatechange = () => {
|
||||
if(ended)
|
||||
return;
|
||||
if(ajax.readyState == 4)
|
||||
end("OK");
|
||||
else if(Date.now() - date > timeout)
|
||||
end("FORCED_TIMEOUT");
|
||||
};
|
||||
ajax.send(encodeURIComponent(settings("variable_name")) + "=" + btoa(JSON.stringify(variables)));
|
||||
|
||||
ajax.ontimeout = () => end("TIMEOUT");
|
||||
ajax.onabort = () => end("ABORTED");
|
||||
ajax.onerror = () => end("ERROR");
|
||||
|
||||
return ajax;
|
||||
};
|
||||
|
||||
this.get_mime = (path, callback) => {
|
||||
|
||||
const extension = path.match(/^.+\.([^\.\/]+)$/);
|
||||
|
||||
if(!extension)
|
||||
return callback(settings("default_mime"));
|
||||
|
||||
if(extension_mime.length){
|
||||
callback(extension_mime[extension[1]] || settings("default_mime"));
|
||||
return;
|
||||
};
|
||||
|
||||
load_file(settings("extension_mime_file"), data => {
|
||||
|
||||
let json = null;
|
||||
|
||||
try{
|
||||
if(json = JSON.parse(data))
|
||||
for(const extension in json)
|
||||
extension_mime[extension] = json[extension];
|
||||
}catch(exception){};
|
||||
|
||||
callback(extension_mime[extension[1]] || settings("default_mime"));
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
this.get_extensions = (mime, callback) => {
|
||||
|
||||
if(!mime)
|
||||
return callback(settings("default_extension"));
|
||||
if(mime_extension.length){
|
||||
callback(mime_extension[mime[1]] || settings("default_extension"));
|
||||
return;
|
||||
};
|
||||
|
||||
load_file(settings("mime_extension_file"), data => {
|
||||
|
||||
let json = null;
|
||||
|
||||
try{
|
||||
if(json = JSON.parse(data))
|
||||
for(const mime in json)
|
||||
mime_extension[mime] = json[mime];
|
||||
}catch(exception){};
|
||||
|
||||
callback(mime_extension[mime[1]] || settings("default_extension"));
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
// http://detectmobilebrowsers.com
|
||||
this.is_mobile = () => {
|
||||
|
||||
const user_agent = (navigator.userAgent || navigator.vendor || window.opera);
|
||||
|
||||
return (
|
||||
/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(user_agent) ||
|
||||
/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(user_agent.substr(0, 4))
|
||||
);
|
||||
};
|
||||
|
||||
// this.multiplier_change = (item, event) => item_self.setAttribute("data-size-multiplier", item.value);
|
||||
this.multiplier_mouse_down = (item, event) => item.setAttribute("data-clicked", true);
|
||||
this.multiplier_mouse_up = (item, event) => item.setAttribute("data-clicked", false);
|
||||
const multiplier_delimiter = (position, total) => position < 0 ? 0 : position > total ? total : position;
|
||||
const multiplier_resize = () => {
|
||||
|
||||
const mark = item_self.querySelector(".wmd-options .multiplier .range-position"),
|
||||
total = item_self.querySelector(".wmd-options .multiplier .range-box").offsetWidth - mark.offsetWidth,
|
||||
range = settings("size_range"),
|
||||
position = ((range[1] - range[0]) * (mark.offsetLeft / total)) + range[0];
|
||||
|
||||
item_self.setAttribute("data-size-multiplier", ((range[1] - range[0]) * (position / total)) + range[0]);
|
||||
|
||||
};
|
||||
this.multiplier_change = (item, event) => {
|
||||
|
||||
if(item.getAttribute("data-clicked") != "true")
|
||||
return;
|
||||
|
||||
const mark = item.querySelector(".range-position"),
|
||||
total = item.offsetWidth - mark.offsetWidth,
|
||||
range = settings("size_range");
|
||||
let position = multiplier_delimiter(event.clientX - event.target.getBoundingClientRect().left - (mark.offsetWidth / 2));
|
||||
|
||||
mark.style.left = position + "px";
|
||||
multiplier_resize();
|
||||
|
||||
};
|
||||
this.multiplier_less = (item, event) => {
|
||||
|
||||
const mark = item.parentNode.querySelector(".range-position"),
|
||||
total = item.offsetWidth - mark.offsetWidth;
|
||||
let position = multiplier_delimiter(mark.offsetLeft - (total / 10));
|
||||
|
||||
mark.style.left = position + "px";
|
||||
// console.log([position, mark.offsetLeft, (total / 10), mark.style.left, mark.offsetLeft]);
|
||||
multiplier_resize();
|
||||
|
||||
};
|
||||
this.multiplier_more = (item, event) => {
|
||||
|
||||
const mark = item.parentNode.querySelector(".range-position"),
|
||||
total = item.offsetWidth - mark.offsetWidth;
|
||||
let position = multiplier_delimiter(mark.offsetLeft + (total / 10));
|
||||
|
||||
mark.style.left = position + "px";
|
||||
// console.log([position, mark.offsetLeft, (total / 10), mark.style.left, mark.offsetLeft]);
|
||||
multiplier_resize();
|
||||
|
||||
};
|
||||
|
||||
this.view_show = (item, event, key) => item_self.setAttribute("data-view", key);
|
||||
|
||||
this.go_to_item = (item, event) => item_self.setAttribute("data-view", "content");
|
||||
|
||||
this.on_ready = callback => {
|
||||
if(typeof callback != "function")
|
||||
return null;
|
||||
if(on_ready_ok){
|
||||
callback();
|
||||
return null;
|
||||
};
|
||||
|
||||
let i = 0;
|
||||
const l = on_ready_events.length;
|
||||
|
||||
for(; i < l; i ++)
|
||||
if(!on_ready_events[i])
|
||||
break;
|
||||
|
||||
on_ready_events[i] = callback;
|
||||
|
||||
return i;
|
||||
};
|
||||
|
||||
this.remove_on_ready = i => !isNaN(i) && on_ready_events[i] && (on_ready_events[i] = null);
|
||||
|
||||
construct();
|
||||
|
||||
};
|
63
Public/ecma2/WMarkDown.Converter.ecma.js
Normal file
@ -0,0 +1,63 @@
|
||||
WMarkDown.converter = function(wmd, input){
|
||||
|
||||
const self = this,
|
||||
cache = [];
|
||||
let started = false;
|
||||
|
||||
let modules = this.modules;
|
||||
|
||||
const construct = () => {
|
||||
|
||||
WMarkDown.Converter.Modules && (modules = self.modules = new WMarkDown.Converter.Modules(wmd, input));
|
||||
|
||||
};
|
||||
|
||||
this.start = callback => {
|
||||
|
||||
const end = status => typeof callback == "function" && callback(status)
|
||||
|
||||
if(started){
|
||||
end(false);
|
||||
return false;
|
||||
};
|
||||
started = true;
|
||||
|
||||
end(true);
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
this.process = wmd_script => {
|
||||
|
||||
let i = 0,
|
||||
html = ``;
|
||||
const l = cache.length,
|
||||
indexes = {},
|
||||
modules_keys = modules.get_keys();
|
||||
|
||||
for(; i < l; i ++)
|
||||
if(cache[i] === null)
|
||||
break;
|
||||
cache[i] = {};
|
||||
|
||||
while(modules_keys.length){
|
||||
|
||||
const clean_i = [];
|
||||
|
||||
modules_keys.forEach((key, i) => {
|
||||
if(!indexes[key] || indexes[key].index < 0){
|
||||
};
|
||||
});
|
||||
|
||||
clean_i.reverse().forEach(i => {
|
||||
delete indexes[modules_keys[i]];
|
||||
modules_keys.splice(i, 1);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
construct();
|
||||
|
||||
};
|
37
Public/ecma2/WMarkDown.ecma.js
Normal file
@ -0,0 +1,37 @@
|
||||
WMarkDown = function(input){
|
||||
|
||||
const self = this;
|
||||
let started = false;
|
||||
|
||||
let converter = this.converter;
|
||||
|
||||
const construct = () => {
|
||||
|
||||
WMarkDown.Converter && (converter = self.converter = new WMarkDown.Converter(self, input));
|
||||
|
||||
};
|
||||
|
||||
this.start = callback => {
|
||||
|
||||
const end = status => typeof callback == "function" && callback(status)
|
||||
|
||||
if(started){
|
||||
end(false);
|
||||
return false;
|
||||
};
|
||||
started = true;
|
||||
|
||||
end(true);
|
||||
|
||||
self.launch(["converter"], () => end(true));
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
this.launch = (blocks, callback, i) => self[blocks[i || (i = 0)]] && self[blocks[i]].start ? self[blocks[i]].start(() => launch(blocks, callback, i + 1)) : launch(blocks, callback, i + 1);
|
||||
|
||||
this.convert = wmd_code => self.converter ? self.converter.process(wmd_code) : null
|
||||
|
||||
construct();
|
||||
|
||||
};
|
49
Public/ecma2/converter/WMarkDown.Converter.Modules.ecma.js
Normal file
@ -0,0 +1,49 @@
|
||||
WMarkDown.Converter.Modules = function(wmd, input){
|
||||
|
||||
const self = this,
|
||||
excluded_keys = ["start", "get_keys"],
|
||||
modules_keys = [];
|
||||
let started = false;
|
||||
|
||||
const construct = () => {
|
||||
|
||||
const to_snake_fragment = string => string ? " " + string.toLowerCase() : "";
|
||||
|
||||
Object.keys(WMarkDown.Converter.Modules).forEach(key => {
|
||||
if(!excluded_keys.includes(key)){
|
||||
|
||||
const key = key.replace(/([A-Z]+)?([A-Z])/g, (...matches) => (" " +
|
||||
to_snake_fragment(matches[1]) +
|
||||
to_snake_fragment(matches[2])
|
||||
));
|
||||
|
||||
self[key] = new WMarkDown.Converter.Modules[key](wmd);
|
||||
!(self[key].pattern instanceof Array) && (self[key].pattern = [self[key].pattern]);
|
||||
|
||||
modules_keys.push(key);
|
||||
|
||||
};
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
this.start = callback => {
|
||||
|
||||
const end = status => typeof callback == "function" && callback(status)
|
||||
|
||||
if(started){
|
||||
end(false);
|
||||
return false;
|
||||
};
|
||||
started = true;
|
||||
|
||||
end(true);
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
this.get_keys = () => [].concat(modules_keys);
|
||||
|
||||
construct();
|
||||
|
||||
};
|
@ -0,0 +1,10 @@
|
||||
WMarkDown.converter.Modules.Headers = function(wmd){
|
||||
|
||||
this.pattern = [
|
||||
/^(\#{1,6})([^\r\n\#]+)(\#{1,6})?$/m,
|
||||
/^(\={1,6})([^\r\n\=]+)(\={1,6})?$/m
|
||||
];
|
||||
|
||||
this.process = matches => `<h` + matches[1].length + `>` + matches[2].trim() + `</h` + matches[1].length + `>`;
|
||||
|
||||
};
|
18
Public/git_update.php
Executable file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
header("content-type: text/plain");
|
||||
echo shell_exec("git pull 2>&1");
|
||||
|
||||
// header("content-type: text/plain");
|
||||
//
|
||||
// $fetch = trim(shell_exec("git fetch 2>&1"));
|
||||
//
|
||||
// if(!preg_match('/(From|Desde) https:\/\//', $fetch)){
|
||||
// echo "There are not any updates.";
|
||||
// // echo "There is no update.";
|
||||
// exit(0);
|
||||
// };
|
||||
//
|
||||
// $pull = shell_exec("git pull 2>&1");
|
||||
//
|
||||
// echo $fetch . "\n\n" . $pull . "\n\nIt is already updated successfully.";
|
BIN
Public/images/wmarkdown.png
Executable file
After Width: | Height: | Size: 7.0 KiB |
986
Public/json/extension_to_mime.json
Executable file
@ -0,0 +1,986 @@
|
||||
{
|
||||
"ez" : "application/andrew-inset",
|
||||
"aw" : "application/applixware",
|
||||
"atom" : "application/atom+xml",
|
||||
"atomcat" : "application/atomcat+xml",
|
||||
"atomsvc" : "application/atomsvc+xml",
|
||||
"ccxml" : "application/ccxml+xml",
|
||||
"cdmia" : "application/cdmi-capability",
|
||||
"cdmic" : "application/cdmi-container",
|
||||
"cdmid" : "application/cdmi-domain",
|
||||
"cdmio" : "application/cdmi-object",
|
||||
"cdmiq" : "application/cdmi-queue",
|
||||
"cu" : "application/cu-seeme",
|
||||
"davmount" : "application/davmount+xml",
|
||||
"dbk" : "application/docbook+xml",
|
||||
"dssc" : "application/dssc+der",
|
||||
"xdssc" : "application/dssc+xml",
|
||||
"ecma" : "application/ecmascript",
|
||||
"emma" : "application/emma+xml",
|
||||
"epub" : "application/epub+zip",
|
||||
"exi" : "application/exi",
|
||||
"pfr" : "application/font-tdpfr",
|
||||
"gml" : "application/gml+xml",
|
||||
"gpx" : "application/gpx+xml",
|
||||
"gxf" : "application/gxf",
|
||||
"stk" : "application/hyperstudio",
|
||||
"ink" : "application/inkml+xml",
|
||||
"inkml" : "application/inkml+xml",
|
||||
"ipfix" : "application/ipfix",
|
||||
"jar" : "application/java-archive",
|
||||
"ser" : "application/java-serialized-object",
|
||||
"class" : "application/java-vm",
|
||||
"js" : "application/javascript",
|
||||
"json" : "application/json",
|
||||
"jsonml" : "application/jsonml+json",
|
||||
"lostxml" : "application/lost+xml",
|
||||
"hqx" : "application/mac-binhex40",
|
||||
"cpt" : "application/mac-compactpro",
|
||||
"mads" : "application/mads+xml",
|
||||
"mrc" : "application/marc",
|
||||
"mrcx" : "application/marcxml+xml",
|
||||
"ma" : "application/mathematica",
|
||||
"nb" : "application/mathematica",
|
||||
"mb" : "application/mathematica",
|
||||
"mathml" : "application/mathml+xml",
|
||||
"mbox" : "application/mbox",
|
||||
"mscml" : "application/mediaservercontrol+xml",
|
||||
"metalink" : "application/metalink+xml",
|
||||
"meta4" : "application/metalink4+xml",
|
||||
"mets" : "application/mets+xml",
|
||||
"mods" : "application/mods+xml",
|
||||
"m21" : "application/mp21",
|
||||
"mp21" : "application/mp21",
|
||||
"mp4s" : "application/mp4",
|
||||
"doc" : "application/msword",
|
||||
"dot" : "application/msword",
|
||||
"mxf" : "application/mxf",
|
||||
"bin" : "application/octet-stream",
|
||||
"dms" : "application/octet-stream",
|
||||
"lrf" : "application/octet-stream",
|
||||
"mar" : "application/octet-stream",
|
||||
"so" : "application/octet-stream",
|
||||
"dist" : "application/octet-stream",
|
||||
"distz" : "application/octet-stream",
|
||||
"pkg" : "application/octet-stream",
|
||||
"bpk" : "application/octet-stream",
|
||||
"dump" : "application/octet-stream",
|
||||
"elc" : "application/octet-stream",
|
||||
"deploy" : "application/octet-stream",
|
||||
"oda" : "application/oda",
|
||||
"opf" : "application/oebps-package+xml",
|
||||
"ogx" : "application/ogg",
|
||||
"omdoc" : "application/omdoc+xml",
|
||||
"onetoc" : "application/onenote",
|
||||
"onetoc2" : "application/onenote",
|
||||
"onetmp" : "application/onenote",
|
||||
"onepkg" : "application/onenote",
|
||||
"oxps" : "application/oxps",
|
||||
"xer" : "application/patch-ops-error+xml",
|
||||
"pdf" : "application/pdf",
|
||||
"pgp" : "application/pgp-encrypted",
|
||||
"asc" : "application/pgp-signature",
|
||||
"sig" : "application/pgp-signature",
|
||||
"prf" : "application/pics-rules",
|
||||
"p10" : "application/pkcs10",
|
||||
"p7m" : "application/pkcs7-mime",
|
||||
"p7c" : "application/pkcs7-mime",
|
||||
"p7s" : "application/pkcs7-signature",
|
||||
"p8" : "application/pkcs8",
|
||||
"ac" : "application/pkix-attr-cert",
|
||||
"cer" : "application/pkix-cert",
|
||||
"crl" : "application/pkix-crl",
|
||||
"pkipath" : "application/pkix-pkipath",
|
||||
"pki" : "application/pkixcmp",
|
||||
"pls" : "application/pls+xml",
|
||||
"ai" : "application/postscript",
|
||||
"eps" : "application/postscript",
|
||||
"ps" : "application/postscript",
|
||||
"cww" : "application/prs.cww",
|
||||
"pskcxml" : "application/pskc+xml",
|
||||
"rdf" : "application/rdf+xml",
|
||||
"rif" : "application/reginfo+xml",
|
||||
"rnc" : "application/relax-ng-compact-syntax",
|
||||
"rl" : "application/resource-lists+xml",
|
||||
"rld" : "application/resource-lists-diff+xml",
|
||||
"rs" : "application/rls-services+xml",
|
||||
"gbr" : "application/rpki-ghostbusters",
|
||||
"mft" : "application/rpki-manifest",
|
||||
"roa" : "application/rpki-roa",
|
||||
"rsd" : "application/rsd+xml",
|
||||
"rss" : "application/rss+xml",
|
||||
"rtf" : "application/rtf",
|
||||
"sbml" : "application/sbml+xml",
|
||||
"scq" : "application/scvp-cv-request",
|
||||
"scs" : "application/scvp-cv-response",
|
||||
"spq" : "application/scvp-vp-request",
|
||||
"spp" : "application/scvp-vp-response",
|
||||
"sdp" : "application/sdp",
|
||||
"setpay" : "application/set-payment-initiation",
|
||||
"setreg" : "application/set-registration-initiation",
|
||||
"shf" : "application/shf+xml",
|
||||
"smi" : "application/smil+xml",
|
||||
"smil" : "application/smil+xml",
|
||||
"rq" : "application/sparql-query",
|
||||
"srx" : "application/sparql-results+xml",
|
||||
"gram" : "application/srgs",
|
||||
"grxml" : "application/srgs+xml",
|
||||
"sru" : "application/sru+xml",
|
||||
"ssdl" : "application/ssdl+xml",
|
||||
"ssml" : "application/ssml+xml",
|
||||
"tei" : "application/tei+xml",
|
||||
"teicorpus" : "application/tei+xml",
|
||||
"tfi" : "application/thraud+xml",
|
||||
"tsd" : "application/timestamped-data",
|
||||
"plb" : "application/vnd.3gpp.pic-bw-large",
|
||||
"psb" : "application/vnd.3gpp.pic-bw-small",
|
||||
"pvb" : "application/vnd.3gpp.pic-bw-var",
|
||||
"tcap" : "application/vnd.3gpp2.tcap",
|
||||
"pwn" : "application/vnd.3m.post-it-notes",
|
||||
"aso" : "application/vnd.accpac.simply.aso",
|
||||
"imp" : "application/vnd.accpac.simply.imp",
|
||||
"acu" : "application/vnd.acucobol",
|
||||
"atc" : "application/vnd.acucorp",
|
||||
"acutc" : "application/vnd.acucorp",
|
||||
"air" : "application/vnd.adobe.air-application-installer-package+zip",
|
||||
"fcdt" : "application/vnd.adobe.formscentral.fcdt",
|
||||
"fxp" : "application/vnd.adobe.fxp",
|
||||
"fxpl" : "application/vnd.adobe.fxp",
|
||||
"xdp" : "application/vnd.adobe.xdp+xml",
|
||||
"xfdf" : "application/vnd.adobe.xfdf",
|
||||
"ahead" : "application/vnd.ahead.space",
|
||||
"azf" : "application/vnd.airzip.filesecure.azf",
|
||||
"azs" : "application/vnd.airzip.filesecure.azs",
|
||||
"azw" : "application/vnd.amazon.ebook",
|
||||
"acc" : "application/vnd.americandynamics.acc",
|
||||
"ami" : "application/vnd.amiga.ami",
|
||||
"apk" : "application/vnd.android.package-archive",
|
||||
"cii" : "application/vnd.anser-web-certificate-issue-initiation",
|
||||
"fti" : "application/vnd.anser-web-funds-transfer-initiation",
|
||||
"atx" : "application/vnd.antix.game-component",
|
||||
"mpkg" : "application/vnd.apple.installer+xml",
|
||||
"m3u8" : "application/vnd.apple.mpegurl",
|
||||
"swi" : "application/vnd.aristanetworks.swi",
|
||||
"iota" : "application/vnd.astraea-software.iota",
|
||||
"aep" : "application/vnd.audiograph",
|
||||
"mpm" : "application/vnd.blueice.multipass",
|
||||
"bmi" : "application/vnd.bmi",
|
||||
"rep" : "application/vnd.businessobjects",
|
||||
"cdxml" : "application/vnd.chemdraw+xml",
|
||||
"mmd" : "application/vnd.chipnuts.karaoke-mmd",
|
||||
"cdy" : "application/vnd.cinderella",
|
||||
"cla" : "application/vnd.claymore",
|
||||
"rp9" : "application/vnd.cloanto.rp9",
|
||||
"c4g" : "application/vnd.clonk.c4group",
|
||||
"c4d" : "application/vnd.clonk.c4group",
|
||||
"c4f" : "application/vnd.clonk.c4group",
|
||||
"c4p" : "application/vnd.clonk.c4group",
|
||||
"c4u" : "application/vnd.clonk.c4group",
|
||||
"c11amc" : "application/vnd.cluetrust.cartomobile-config",
|
||||
"c11amz" : "application/vnd.cluetrust.cartomobile-config-pkg",
|
||||
"csp" : "application/vnd.commonspace",
|
||||
"cdbcmsg" : "application/vnd.contact.cmsg",
|
||||
"cmc" : "application/vnd.cosmocaller",
|
||||
"clkx" : "application/vnd.crick.clicker",
|
||||
"clkk" : "application/vnd.crick.clicker.keyboard",
|
||||
"clkp" : "application/vnd.crick.clicker.palette",
|
||||
"clkt" : "application/vnd.crick.clicker.template",
|
||||
"clkw" : "application/vnd.crick.clicker.wordbank",
|
||||
"wbs" : "application/vnd.criticaltools.wbs+xml",
|
||||
"pml" : "application/vnd.ctc-posml",
|
||||
"ppd" : "application/vnd.cups-ppd",
|
||||
"car" : "application/vnd.curl.car",
|
||||
"pcurl" : "application/vnd.curl.pcurl",
|
||||
"dart" : "application/vnd.dart",
|
||||
"rdz" : "application/vnd.data-vision.rdz",
|
||||
"uvf" : "application/vnd.dece.data",
|
||||
"uvvf" : "application/vnd.dece.data",
|
||||
"uvd" : "application/vnd.dece.data",
|
||||
"uvvd" : "application/vnd.dece.data",
|
||||
"uvt" : "application/vnd.dece.ttml+xml",
|
||||
"uvvt" : "application/vnd.dece.ttml+xml",
|
||||
"uvx" : "application/vnd.dece.unspecified",
|
||||
"uvvx" : "application/vnd.dece.unspecified",
|
||||
"uvz" : "application/vnd.dece.zip",
|
||||
"uvvz" : "application/vnd.dece.zip",
|
||||
"fe_launch" : "application/vnd.denovo.fcselayout-link",
|
||||
"dna" : "application/vnd.dna",
|
||||
"mlp" : "application/vnd.dolby.mlp",
|
||||
"dpg" : "application/vnd.dpgraph",
|
||||
"dfac" : "application/vnd.dreamfactory",
|
||||
"kpxx" : "application/vnd.ds-keypoint",
|
||||
"ait" : "application/vnd.dvb.ait",
|
||||
"svc" : "application/vnd.dvb.service",
|
||||
"geo" : "application/vnd.dynageo",
|
||||
"mag" : "application/vnd.ecowin.chart",
|
||||
"nml" : "application/vnd.enliven",
|
||||
"esf" : "application/vnd.epson.esf",
|
||||
"msf" : "application/vnd.epson.msf",
|
||||
"qam" : "application/vnd.epson.quickanime",
|
||||
"slt" : "application/vnd.epson.salt",
|
||||
"ssf" : "application/vnd.epson.ssf",
|
||||
"es3" : "application/vnd.eszigno3+xml",
|
||||
"et3" : "application/vnd.eszigno3+xml",
|
||||
"ez2" : "application/vnd.ezpix-album",
|
||||
"ez3" : "application/vnd.ezpix-package",
|
||||
"fdf" : "application/vnd.fdf",
|
||||
"mseed" : "application/vnd.fdsn.mseed",
|
||||
"seed" : "application/vnd.fdsn.seed",
|
||||
"dataless" : "application/vnd.fdsn.seed",
|
||||
"gph" : "application/vnd.flographit",
|
||||
"ftc" : "application/vnd.fluxtime.clip",
|
||||
"fm" : "application/vnd.framemaker",
|
||||
"frame" : "application/vnd.framemaker",
|
||||
"maker" : "application/vnd.framemaker",
|
||||
"book" : "application/vnd.framemaker",
|
||||
"fnc" : "application/vnd.frogans.fnc",
|
||||
"ltf" : "application/vnd.frogans.ltf",
|
||||
"fsc" : "application/vnd.fsc.weblaunch",
|
||||
"oas" : "application/vnd.fujitsu.oasys",
|
||||
"oa2" : "application/vnd.fujitsu.oasys2",
|
||||
"oa3" : "application/vnd.fujitsu.oasys3",
|
||||
"fg5" : "application/vnd.fujitsu.oasysgp",
|
||||
"bh2" : "application/vnd.fujitsu.oasysprs",
|
||||
"ddd" : "application/vnd.fujixerox.ddd",
|
||||
"xdw" : "application/vnd.fujixerox.docuworks",
|
||||
"xbd" : "application/vnd.fujixerox.docuworks.binder",
|
||||
"fzs" : "application/vnd.fuzzysheet",
|
||||
"txd" : "application/vnd.genomatix.tuxedo",
|
||||
"ggb" : "application/vnd.geogebra.file",
|
||||
"ggt" : "application/vnd.geogebra.tool",
|
||||
"gex" : "application/vnd.geometry-explorer",
|
||||
"gre" : "application/vnd.geometry-explorer",
|
||||
"gxt" : "application/vnd.geonext",
|
||||
"g2w" : "application/vnd.geoplan",
|
||||
"g3w" : "application/vnd.geospace",
|
||||
"gmx" : "application/vnd.gmx",
|
||||
"kml" : "application/vnd.google-earth.kml+xml",
|
||||
"kmz" : "application/vnd.google-earth.kmz",
|
||||
"gqf" : "application/vnd.grafeq",
|
||||
"gqs" : "application/vnd.grafeq",
|
||||
"gac" : "application/vnd.groove-account",
|
||||
"ghf" : "application/vnd.groove-help",
|
||||
"gim" : "application/vnd.groove-identity-message",
|
||||
"grv" : "application/vnd.groove-injector",
|
||||
"gtm" : "application/vnd.groove-tool-message",
|
||||
"tpl" : "application/vnd.groove-tool-template",
|
||||
"vcg" : "application/vnd.groove-vcard",
|
||||
"hal" : "application/vnd.hal+xml",
|
||||
"zmm" : "application/vnd.handheld-entertainment+xml",
|
||||
"hbci" : "application/vnd.hbci",
|
||||
"les" : "application/vnd.hhe.lesson-player",
|
||||
"hpgl" : "application/vnd.hp-hpgl",
|
||||
"hpid" : "application/vnd.hp-hpid",
|
||||
"hps" : "application/vnd.hp-hps",
|
||||
"jlt" : "application/vnd.hp-jlyt",
|
||||
"pcl" : "application/vnd.hp-pcl",
|
||||
"pclxl" : "application/vnd.hp-pclxl",
|
||||
"sfd-hdstx" : "application/vnd.hydrostatix.sof-data",
|
||||
"mpy" : "application/vnd.ibm.minipay",
|
||||
"afp" : "application/vnd.ibm.modcap",
|
||||
"listafp" : "application/vnd.ibm.modcap",
|
||||
"list3820" : "application/vnd.ibm.modcap",
|
||||
"irm" : "application/vnd.ibm.rights-management",
|
||||
"sc" : "application/vnd.ibm.secure-container",
|
||||
"icc" : "application/vnd.iccprofile",
|
||||
"icm" : "application/vnd.iccprofile",
|
||||
"igl" : "application/vnd.igloader",
|
||||
"ivp" : "application/vnd.immervision-ivp",
|
||||
"ivu" : "application/vnd.immervision-ivu",
|
||||
"igm" : "application/vnd.insors.igm",
|
||||
"xpw" : "application/vnd.intercon.formnet",
|
||||
"xpx" : "application/vnd.intercon.formnet",
|
||||
"i2g" : "application/vnd.intergeo",
|
||||
"qbo" : "application/vnd.intu.qbo",
|
||||
"qfx" : "application/vnd.intu.qfx",
|
||||
"rcprofile" : "application/vnd.ipunplugged.rcprofile",
|
||||
"irp" : "application/vnd.irepository.package+xml",
|
||||
"xpr" : "application/vnd.is-xpr",
|
||||
"fcs" : "application/vnd.isac.fcs",
|
||||
"jam" : "application/vnd.jam",
|
||||
"rms" : "application/vnd.jcp.javame.midlet-rms",
|
||||
"jisp" : "application/vnd.jisp",
|
||||
"joda" : "application/vnd.joost.joda-archive",
|
||||
"ktz" : "application/vnd.kahootz",
|
||||
"ktr" : "application/vnd.kahootz",
|
||||
"karbon" : "application/vnd.kde.karbon",
|
||||
"chrt" : "application/vnd.kde.kchart",
|
||||
"kfo" : "application/vnd.kde.kformula",
|
||||
"flw" : "application/vnd.kde.kivio",
|
||||
"kon" : "application/vnd.kde.kontour",
|
||||
"kpr" : "application/vnd.kde.kpresenter",
|
||||
"kpt" : "application/vnd.kde.kpresenter",
|
||||
"ksp" : "application/vnd.kde.kspread",
|
||||
"kwd" : "application/vnd.kde.kword",
|
||||
"kwt" : "application/vnd.kde.kword",
|
||||
"htke" : "application/vnd.kenameaapp",
|
||||
"kia" : "application/vnd.kidspiration",
|
||||
"kne" : "application/vnd.kinar",
|
||||
"knp" : "application/vnd.kinar",
|
||||
"skp" : "application/vnd.koan",
|
||||
"skd" : "application/vnd.koan",
|
||||
"skt" : "application/vnd.koan",
|
||||
"skm" : "application/vnd.koan",
|
||||
"sse" : "application/vnd.kodak-descriptor",
|
||||
"lasxml" : "application/vnd.las.las+xml",
|
||||
"lbd" : "application/vnd.llamagraphics.life-balance.desktop",
|
||||
"lbe" : "application/vnd.llamagraphics.life-balance.exchange+xml",
|
||||
"123" : "application/vnd.lotus-1-2-3",
|
||||
"apr" : "application/vnd.lotus-approach",
|
||||
"pre" : "application/vnd.lotus-freelance",
|
||||
"nsf" : "application/vnd.lotus-notes",
|
||||
"org" : "application/vnd.lotus-organizer",
|
||||
"scm" : "application/vnd.lotus-screencam",
|
||||
"lwp" : "application/vnd.lotus-wordpro",
|
||||
"portpkg" : "application/vnd.macports.portpkg",
|
||||
"mcd" : "application/vnd.mcd",
|
||||
"mc1" : "application/vnd.medcalcdata",
|
||||
"cdkey" : "application/vnd.mediastation.cdkey",
|
||||
"mwf" : "application/vnd.mfer",
|
||||
"mfm" : "application/vnd.mfmp",
|
||||
"flo" : "application/vnd.micrografx.flo",
|
||||
"igx" : "application/vnd.micrografx.igx",
|
||||
"mif" : "application/vnd.mif",
|
||||
"daf" : "application/vnd.mobius.daf",
|
||||
"dis" : "application/vnd.mobius.dis",
|
||||
"mbk" : "application/vnd.mobius.mbk",
|
||||
"mqy" : "application/vnd.mobius.mqy",
|
||||
"msl" : "application/vnd.mobius.msl",
|
||||
"plc" : "application/vnd.mobius.plc",
|
||||
"txf" : "application/vnd.mobius.txf",
|
||||
"mpn" : "application/vnd.mophun.application",
|
||||
"mpc" : "application/vnd.mophun.certificate",
|
||||
"xul" : "application/vnd.mozilla.xul+xml",
|
||||
"cil" : "application/vnd.ms-artgalry",
|
||||
"cab" : "application/vnd.ms-cab-compressed",
|
||||
"xls" : "application/vnd.ms-excel",
|
||||
"xlm" : "application/vnd.ms-excel",
|
||||
"xla" : "application/vnd.ms-excel",
|
||||
"xlc" : "application/vnd.ms-excel",
|
||||
"xlt" : "application/vnd.ms-excel",
|
||||
"xlw" : "application/vnd.ms-excel",
|
||||
"xlam" : "application/vnd.ms-excel.addin.macroenabled.12",
|
||||
"xlsb" : "application/vnd.ms-excel.sheet.binary.macroenabled.12",
|
||||
"xlsm" : "application/vnd.ms-excel.sheet.macroenabled.12",
|
||||
"xltm" : "application/vnd.ms-excel.template.macroenabled.12",
|
||||
"eot" : "application/vnd.ms-fontobject",
|
||||
"chm" : "application/vnd.ms-htmlhelp",
|
||||
"ims" : "application/vnd.ms-ims",
|
||||
"lrm" : "application/vnd.ms-lrm",
|
||||
"thmx" : "application/vnd.ms-officetheme",
|
||||
"cat" : "application/vnd.ms-pki.seccat",
|
||||
"stl" : "application/vnd.ms-pki.stl",
|
||||
"ppt" : "application/vnd.ms-powerpoint",
|
||||
"pps" : "application/vnd.ms-powerpoint",
|
||||
"pot" : "application/vnd.ms-powerpoint",
|
||||
"ppam" : "application/vnd.ms-powerpoint.addin.macroenabled.12",
|
||||
"pptm" : "application/vnd.ms-powerpoint.presentation.macroenabled.12",
|
||||
"sldm" : "application/vnd.ms-powerpoint.slide.macroenabled.12",
|
||||
"ppsm" : "application/vnd.ms-powerpoint.slideshow.macroenabled.12",
|
||||
"potm" : "application/vnd.ms-powerpoint.template.macroenabled.12",
|
||||
"mpp" : "application/vnd.ms-project",
|
||||
"mpt" : "application/vnd.ms-project",
|
||||
"docm" : "application/vnd.ms-word.document.macroenabled.12",
|
||||
"dotm" : "application/vnd.ms-word.template.macroenabled.12",
|
||||
"wps" : "application/vnd.ms-works",
|
||||
"wks" : "application/vnd.ms-works",
|
||||
"wcm" : "application/vnd.ms-works",
|
||||
"wdb" : "application/vnd.ms-works",
|
||||
"wpl" : "application/vnd.ms-wpl",
|
||||
"xps" : "application/vnd.ms-xpsdocument",
|
||||
"mseq" : "application/vnd.mseq",
|
||||
"mus" : "application/vnd.musician",
|
||||
"msty" : "application/vnd.muvee.style",
|
||||
"taglet" : "application/vnd.mynfc",
|
||||
"nlu" : "application/vnd.neurolanguage.nlu",
|
||||
"ntf" : "application/vnd.nitf",
|
||||
"nitf" : "application/vnd.nitf",
|
||||
"nnd" : "application/vnd.noblenet-directory",
|
||||
"nns" : "application/vnd.noblenet-sealer",
|
||||
"nnw" : "application/vnd.noblenet-web",
|
||||
"ngdat" : "application/vnd.nokia.n-gage.data",
|
||||
"n-gage" : "application/vnd.nokia.n-gage.symbian.install",
|
||||
"rpst" : "application/vnd.nokia.radio-preset",
|
||||
"rpss" : "application/vnd.nokia.radio-presets",
|
||||
"edm" : "application/vnd.novadigm.edm",
|
||||
"edx" : "application/vnd.novadigm.edx",
|
||||
"ext" : "application/vnd.novadigm.ext",
|
||||
"odc" : "application/vnd.oasis.opendocument.chart",
|
||||
"otc" : "application/vnd.oasis.opendocument.chart-template",
|
||||
"odb" : "application/vnd.oasis.opendocument.database",
|
||||
"odf" : "application/vnd.oasis.opendocument.formula",
|
||||
"odft" : "application/vnd.oasis.opendocument.formula-template",
|
||||
"odg" : "application/vnd.oasis.opendocument.graphics",
|
||||
"otg" : "application/vnd.oasis.opendocument.graphics-template",
|
||||
"odi" : "application/vnd.oasis.opendocument.image",
|
||||
"oti" : "application/vnd.oasis.opendocument.image-template",
|
||||
"odp" : "application/vnd.oasis.opendocument.presentation",
|
||||
"otp" : "application/vnd.oasis.opendocument.presentation-template",
|
||||
"ods" : "application/vnd.oasis.opendocument.spreadsheet",
|
||||
"ots" : "application/vnd.oasis.opendocument.spreadsheet-template",
|
||||
"odt" : "application/vnd.oasis.opendocument.text",
|
||||
"odm" : "application/vnd.oasis.opendocument.text-master",
|
||||
"ott" : "application/vnd.oasis.opendocument.text-template",
|
||||
"oth" : "application/vnd.oasis.opendocument.text-web",
|
||||
"xo" : "application/vnd.olpc-sugar",
|
||||
"dd2" : "application/vnd.oma.dd2+xml",
|
||||
"oxt" : "application/vnd.openofficeorg.extension",
|
||||
"pptx" : "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
||||
"sldx" : "application/vnd.openxmlformats-officedocument.presentationml.slide",
|
||||
"ppsx" : "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
|
||||
"potx" : "application/vnd.openxmlformats-officedocument.presentationml.template",
|
||||
"xlsx" : "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||||
"xltx" : "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
|
||||
"docx" : "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
||||
"dotx" : "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
|
||||
"mgp" : "application/vnd.osgeo.mapguide.package",
|
||||
"dp" : "application/vnd.osgi.dp",
|
||||
"esa" : "application/vnd.osgi.subsystem",
|
||||
"pdb" : "application/vnd.palm",
|
||||
"pqa" : "application/vnd.palm",
|
||||
"oprc" : "application/vnd.palm",
|
||||
"paw" : "application/vnd.pawaafile",
|
||||
"str" : "application/vnd.pg.format",
|
||||
"ei6" : "application/vnd.pg.osasli",
|
||||
"efif" : "application/vnd.picsel",
|
||||
"wg" : "application/vnd.pmi.widget",
|
||||
"plf" : "application/vnd.pocketlearn",
|
||||
"pbd" : "application/vnd.powerbuilder6",
|
||||
"box" : "application/vnd.previewsystems.box",
|
||||
"mgz" : "application/vnd.proteus.magazine",
|
||||
"qps" : "application/vnd.publishare-delta-tree",
|
||||
"ptid" : "application/vnd.pvi.ptid1",
|
||||
"qxd" : "application/vnd.quark.quarkxpress",
|
||||
"qxt" : "application/vnd.quark.quarkxpress",
|
||||
"qwd" : "application/vnd.quark.quarkxpress",
|
||||
"qwt" : "application/vnd.quark.quarkxpress",
|
||||
"qxl" : "application/vnd.quark.quarkxpress",
|
||||
"qxb" : "application/vnd.quark.quarkxpress",
|
||||
"bed" : "application/vnd.realvnc.bed",
|
||||
"mxl" : "application/vnd.recordare.musicxml",
|
||||
"musicxml" : "application/vnd.recordare.musicxml+xml",
|
||||
"cryptonote" : "application/vnd.rig.cryptonote",
|
||||
"cod" : "application/vnd.rim.cod",
|
||||
"rm" : "application/vnd.rn-realmedia",
|
||||
"rmvb" : "application/vnd.rn-realmedia-vbr",
|
||||
"link66" : "application/vnd.route66.link66+xml",
|
||||
"st" : "application/vnd.sailingtracker.track",
|
||||
"see" : "application/vnd.seemail",
|
||||
"sema" : "application/vnd.sema",
|
||||
"semd" : "application/vnd.semd",
|
||||
"semf" : "application/vnd.semf",
|
||||
"ifm" : "application/vnd.shana.informed.formdata",
|
||||
"itp" : "application/vnd.shana.informed.formtemplate",
|
||||
"iif" : "application/vnd.shana.informed.interchange",
|
||||
"ipk" : "application/vnd.shana.informed.package",
|
||||
"twd" : "application/vnd.simtech-mindmapper",
|
||||
"twds" : "application/vnd.simtech-mindmapper",
|
||||
"mmf" : "application/vnd.smaf",
|
||||
"teacher" : "application/vnd.smart.teacher",
|
||||
"sdkm" : "application/vnd.solent.sdkm+xml",
|
||||
"sdkd" : "application/vnd.solent.sdkm+xml",
|
||||
"dxp" : "application/vnd.spotfire.dxp",
|
||||
"sfs" : "application/vnd.spotfire.sfs",
|
||||
"sdc" : "application/vnd.stardivision.calc",
|
||||
"sda" : "application/vnd.stardivision.draw",
|
||||
"sdd" : "application/vnd.stardivision.impress",
|
||||
"smf" : "application/vnd.stardivision.math",
|
||||
"sdw" : "application/vnd.stardivision.writer",
|
||||
"vor" : "application/vnd.stardivision.writer",
|
||||
"sgl" : "application/vnd.stardivision.writer-global",
|
||||
"smzip" : "application/vnd.stepmania.package",
|
||||
"sm" : "application/vnd.stepmania.stepchart",
|
||||
"sxc" : "application/vnd.sun.xml.calc",
|
||||
"stc" : "application/vnd.sun.xml.calc.template",
|
||||
"sxd" : "application/vnd.sun.xml.draw",
|
||||
"std" : "application/vnd.sun.xml.draw.template",
|
||||
"sxi" : "application/vnd.sun.xml.impress",
|
||||
"sti" : "application/vnd.sun.xml.impress.template",
|
||||
"sxm" : "application/vnd.sun.xml.math",
|
||||
"sxw" : "application/vnd.sun.xml.writer",
|
||||
"sxg" : "application/vnd.sun.xml.writer.global",
|
||||
"stw" : "application/vnd.sun.xml.writer.template",
|
||||
"sus" : "application/vnd.sus-calendar",
|
||||
"susp" : "application/vnd.sus-calendar",
|
||||
"svd" : "application/vnd.svd",
|
||||
"sis" : "application/vnd.symbian.install",
|
||||
"sisx" : "application/vnd.symbian.install",
|
||||
"xsm" : "application/vnd.syncml+xml",
|
||||
"bdm" : "application/vnd.syncml.dm+wbxml",
|
||||
"xdm" : "application/vnd.syncml.dm+xml",
|
||||
"tao" : "application/vnd.tao.intent-module-archive",
|
||||
"pcap" : "application/vnd.tcpdump.pcap",
|
||||
"cap" : "application/vnd.tcpdump.pcap",
|
||||
"dmp" : "application/vnd.tcpdump.pcap",
|
||||
"tmo" : "application/vnd.tmobile-livetv",
|
||||
"tpt" : "application/vnd.trid.tpt",
|
||||
"mxs" : "application/vnd.triscape.mxs",
|
||||
"tra" : "application/vnd.trueapp",
|
||||
"ufd" : "application/vnd.ufdl",
|
||||
"ufdl" : "application/vnd.ufdl",
|
||||
"utz" : "application/vnd.uiq.theme",
|
||||
"umj" : "application/vnd.umajin",
|
||||
"unityweb" : "application/vnd.unity",
|
||||
"uoml" : "application/vnd.uoml+xml",
|
||||
"vcx" : "application/vnd.vcx",
|
||||
"vsd" : "application/vnd.visio",
|
||||
"vst" : "application/vnd.visio",
|
||||
"vss" : "application/vnd.visio",
|
||||
"vsw" : "application/vnd.visio",
|
||||
"vis" : "application/vnd.visionary",
|
||||
"vsf" : "application/vnd.vsf",
|
||||
"wbxml" : "application/vnd.wap.wbxml",
|
||||
"wmlc" : "application/vnd.wap.wmlc",
|
||||
"wmlsc" : "application/vnd.wap.wmlscriptc",
|
||||
"wtb" : "application/vnd.webturbo",
|
||||
"nbp" : "application/vnd.wolfram.player",
|
||||
"wpd" : "application/vnd.wordperfect",
|
||||
"wqd" : "application/vnd.wqd",
|
||||
"stf" : "application/vnd.wt.stf",
|
||||
"xar" : "application/vnd.xara",
|
||||
"xfdl" : "application/vnd.xfdl",
|
||||
"hvd" : "application/vnd.yamaha.hv-dic",
|
||||
"hvs" : "application/vnd.yamaha.hv-script",
|
||||
"hvp" : "application/vnd.yamaha.hv-voice",
|
||||
"osf" : "application/vnd.yamaha.openscoreformat",
|
||||
"osfpvg" : "application/vnd.yamaha.openscoreformat.osfpvg+xml",
|
||||
"saf" : "application/vnd.yamaha.smaf-audio",
|
||||
"spf" : "application/vnd.yamaha.smaf-phrase",
|
||||
"cmp" : "application/vnd.yellowriver-custom-menu",
|
||||
"zir" : "application/vnd.zul",
|
||||
"zirz" : "application/vnd.zul",
|
||||
"zaz" : "application/vnd.zzazz.deck+xml",
|
||||
"vxml" : "application/voicexml+xml",
|
||||
"wgt" : "application/widget",
|
||||
"hlp" : "application/winhlp",
|
||||
"wsdl" : "application/wsdl+xml",
|
||||
"wspolicy" : "application/wspolicy+xml",
|
||||
"7z" : "application/x-7z-compressed",
|
||||
"abw" : "application/x-abiword",
|
||||
"ace" : "application/x-ace-compressed",
|
||||
"dmg" : "application/x-apple-diskimage",
|
||||
"aab" : "application/x-authorware-bin",
|
||||
"x32" : "application/x-authorware-bin",
|
||||
"u32" : "application/x-authorware-bin",
|
||||
"vox" : "application/x-authorware-bin",
|
||||
"aam" : "application/x-authorware-map",
|
||||
"aas" : "application/x-authorware-seg",
|
||||
"bcpio" : "application/x-bcpio",
|
||||
"torrent" : "application/x-bittorrent",
|
||||
"blb" : "application/x-blorb",
|
||||
"blorb" : "application/x-blorb",
|
||||
"bz" : "application/x-bzip",
|
||||
"bz2" : "application/x-bzip2",
|
||||
"boz" : "application/x-bzip2",
|
||||
"cbr" : "application/x-cbr",
|
||||
"cba" : "application/x-cbr",
|
||||
"cbt" : "application/x-cbr",
|
||||
"cbz" : "application/x-cbr",
|
||||
"cb7" : "application/x-cbr",
|
||||
"vcd" : "application/x-cdlink",
|
||||
"cfs" : "application/x-cfs-compressed",
|
||||
"chat" : "application/x-chat",
|
||||
"pgn" : "application/x-chess-pgn",
|
||||
"nsc" : "application/x-conference",
|
||||
"cpio" : "application/x-cpio",
|
||||
"csh" : "application/x-csh",
|
||||
"deb" : "application/x-debian-package",
|
||||
"udeb" : "application/x-debian-package",
|
||||
"dgc" : "application/x-dgc-compressed",
|
||||
"dir" : "application/x-director",
|
||||
"dcr" : "application/x-director",
|
||||
"dxr" : "application/x-director",
|
||||
"cst" : "application/x-director",
|
||||
"cct" : "application/x-director",
|
||||
"cxt" : "application/x-director",
|
||||
"w3d" : "application/x-director",
|
||||
"fgd" : "application/x-director",
|
||||
"swa" : "application/x-director",
|
||||
"wad" : "application/x-doom",
|
||||
"ncx" : "application/x-dtbncx+xml",
|
||||
"dtb" : "application/x-dtbook+xml",
|
||||
"res" : "application/x-dtbresource+xml",
|
||||
"dvi" : "application/x-dvi",
|
||||
"evy" : "application/x-envoy",
|
||||
"eva" : "application/x-eva",
|
||||
"bdf" : "application/x-font-bdf",
|
||||
"gsf" : "application/x-font-ghostscript",
|
||||
"psf" : "application/x-font-linux-psf",
|
||||
"otf" : "application/x-font-otf",
|
||||
"pcf" : "application/x-font-pcf",
|
||||
"snf" : "application/x-font-snf",
|
||||
"ttf" : "application/x-font-ttf",
|
||||
"ttc" : "application/x-font-ttf",
|
||||
"pfa" : "application/x-font-type1",
|
||||
"pfb" : "application/x-font-type1",
|
||||
"pfm" : "application/x-font-type1",
|
||||
"afm" : "application/x-font-type1",
|
||||
"woff" : "application/x-font-woff",
|
||||
"arc" : "application/x-freearc",
|
||||
"spl" : "application/x-futuresplash",
|
||||
"gca" : "application/x-gca-compressed",
|
||||
"ulx" : "application/x-glulx",
|
||||
"gnumeric" : "application/x-gnumeric",
|
||||
"gramps" : "application/x-gramps-xml",
|
||||
"gtar" : "application/x-gtar",
|
||||
"hdf" : "application/x-hdf",
|
||||
"install" : "application/x-install-instructions",
|
||||
"iso" : "application/x-iso9660-image",
|
||||
"jnlp" : "application/x-java-jnlp-file",
|
||||
"latex" : "application/x-latex",
|
||||
"lzh" : "application/x-lzh-compressed",
|
||||
"lha" : "application/x-lzh-compressed",
|
||||
"mie" : "application/x-mie",
|
||||
"prc" : "application/x-mobipocket-ebook",
|
||||
"mobi" : "application/x-mobipocket-ebook",
|
||||
"application" : "application/x-ms-application",
|
||||
"lnk" : "application/x-ms-shortcut",
|
||||
"wmd" : "application/x-ms-wmd",
|
||||
"wmz" : "application/x-ms-wmz",
|
||||
"xbap" : "application/x-ms-xbap",
|
||||
"mdb" : "application/x-msaccess",
|
||||
"obd" : "application/x-msbinder",
|
||||
"crd" : "application/x-mscardfile",
|
||||
"clp" : "application/x-msclip",
|
||||
"exe" : "application/x-msdownload",
|
||||
"dll" : "application/x-msdownload",
|
||||
"com" : "application/x-msdownload",
|
||||
"bat" : "application/x-msdownload",
|
||||
"msi" : "application/x-msdownload",
|
||||
"mvb" : "application/x-msmediaview",
|
||||
"m13" : "application/x-msmediaview",
|
||||
"m14" : "application/x-msmediaview",
|
||||
"wmf" : "application/x-msmetafile",
|
||||
"wmz" : "application/x-msmetafile",
|
||||
"emf" : "application/x-msmetafile",
|
||||
"emz" : "application/x-msmetafile",
|
||||
"mny" : "application/x-msmoney",
|
||||
"pub" : "application/x-mspublisher",
|
||||
"scd" : "application/x-msschedule",
|
||||
"trm" : "application/x-msterminal",
|
||||
"wri" : "application/x-mswrite",
|
||||
"nc" : "application/x-netcdf",
|
||||
"cdf" : "application/x-netcdf",
|
||||
"nzb" : "application/x-nzb",
|
||||
"p12" : "application/x-pkcs12",
|
||||
"pfx" : "application/x-pkcs12",
|
||||
"p7b" : "application/x-pkcs7-certificates",
|
||||
"spc" : "application/x-pkcs7-certificates",
|
||||
"p7r" : "application/x-pkcs7-certreqresp",
|
||||
"rar" : "application/x-rar-compressed",
|
||||
"ris" : "application/x-research-info-systems",
|
||||
"sh" : "application/x-sh",
|
||||
"shar" : "application/x-shar",
|
||||
"swf" : "application/x-shockwave-flash",
|
||||
"xap" : "application/x-silverlight-app",
|
||||
"sql" : "application/x-sql",
|
||||
"sit" : "application/x-stuffit",
|
||||
"sitx" : "application/x-stuffitx",
|
||||
"srt" : "application/x-subrip",
|
||||
"sv4cpio" : "application/x-sv4cpio",
|
||||
"sv4crc" : "application/x-sv4crc",
|
||||
"t3" : "application/x-t3vm-image",
|
||||
"gam" : "application/x-tads",
|
||||
"tar" : "application/x-tar",
|
||||
"tcl" : "application/x-tcl",
|
||||
"tex" : "application/x-tex",
|
||||
"tfm" : "application/x-tex-tfm",
|
||||
"texinfo" : "application/x-texinfo",
|
||||
"texi" : "application/x-texinfo",
|
||||
"obj" : "application/x-tgif",
|
||||
"ustar" : "application/x-ustar",
|
||||
"src" : "application/x-wais-source",
|
||||
"der" : "application/x-x509-ca-cert",
|
||||
"crt" : "application/x-x509-ca-cert",
|
||||
"fig" : "application/x-xfig",
|
||||
"xlf" : "application/x-xliff+xml",
|
||||
"xpi" : "application/x-xpinstall",
|
||||
"xz" : "application/x-xz",
|
||||
"z1" : "application/x-zmachine",
|
||||
"z2" : "application/x-zmachine",
|
||||
"z3" : "application/x-zmachine",
|
||||
"z4" : "application/x-zmachine",
|
||||
"z5" : "application/x-zmachine",
|
||||
"z6" : "application/x-zmachine",
|
||||
"z7" : "application/x-zmachine",
|
||||
"z8" : "application/x-zmachine",
|
||||
"xaml" : "application/xaml+xml",
|
||||
"xdf" : "application/xcap-diff+xml",
|
||||
"xenc" : "application/xenc+xml",
|
||||
"xhtml" : "application/xhtml+xml",
|
||||
"xht" : "application/xhtml+xml",
|
||||
"xml" : "application/xml",
|
||||
"xsl" : "application/xml",
|
||||
"dtd" : "application/xml-dtd",
|
||||
"xop" : "application/xop+xml",
|
||||
"xpl" : "application/xproc+xml",
|
||||
"xslt" : "application/xslt+xml",
|
||||
"xspf" : "application/xspf+xml",
|
||||
"mxml" : "application/xv+xml",
|
||||
"xhvml" : "application/xv+xml",
|
||||
"xvml" : "application/xv+xml",
|
||||
"xvm" : "application/xv+xml",
|
||||
"yang" : "application/yang",
|
||||
"yin" : "application/yin+xml",
|
||||
"zip" : "application/zip",
|
||||
"adp" : "audio/adpcm",
|
||||
"au" : "audio/basic",
|
||||
"snd" : "audio/basic",
|
||||
"mid" : "audio/midi",
|
||||
"midi" : "audio/midi",
|
||||
"kar" : "audio/midi",
|
||||
"rmi" : "audio/midi",
|
||||
"m4a" : "audio/mp4",
|
||||
"mp4a" : "audio/mp4",
|
||||
"mpga" : "audio/mpeg",
|
||||
"mp2" : "audio/mpeg",
|
||||
"mp2a" : "audio/mpeg",
|
||||
"mp3" : "audio/mpeg",
|
||||
"m2a" : "audio/mpeg",
|
||||
"m3a" : "audio/mpeg",
|
||||
"oga" : "audio/ogg",
|
||||
"ogg" : "audio/ogg",
|
||||
"spx" : "audio/ogg",
|
||||
"s3m" : "audio/s3m",
|
||||
"sil" : "audio/silk",
|
||||
"uva" : "audio/vnd.dece.audio",
|
||||
"uvva" : "audio/vnd.dece.audio",
|
||||
"eol" : "audio/vnd.digital-winds",
|
||||
"dra" : "audio/vnd.dra",
|
||||
"dts" : "audio/vnd.dts",
|
||||
"dtshd" : "audio/vnd.dts.hd",
|
||||
"lvp" : "audio/vnd.lucent.voice",
|
||||
"pya" : "audio/vnd.ms-playready.media.pya",
|
||||
"ecelp4800" : "audio/vnd.nuera.ecelp4800",
|
||||
"ecelp7470" : "audio/vnd.nuera.ecelp7470",
|
||||
"ecelp9600" : "audio/vnd.nuera.ecelp9600",
|
||||
"rip" : "audio/vnd.rip",
|
||||
"weba" : "audio/webm",
|
||||
"aac" : "audio/x-aac",
|
||||
"aif" : "audio/x-aiff",
|
||||
"aiff" : "audio/x-aiff",
|
||||
"aifc" : "audio/x-aiff",
|
||||
"caf" : "audio/x-caf",
|
||||
"flac" : "audio/x-flac",
|
||||
"mka" : "audio/x-matroska",
|
||||
"m3u" : "audio/x-mpegurl",
|
||||
"wax" : "audio/x-ms-wax",
|
||||
"wma" : "audio/x-ms-wma",
|
||||
"ram" : "audio/x-pn-realaudio",
|
||||
"ra" : "audio/x-pn-realaudio",
|
||||
"rmp" : "audio/x-pn-realaudio-plugin",
|
||||
"wav" : "audio/x-wav",
|
||||
"xm" : "audio/xm",
|
||||
"cdx" : "chemical/x-cdx",
|
||||
"cif" : "chemical/x-cif",
|
||||
"cmdf" : "chemical/x-cmdf",
|
||||
"cml" : "chemical/x-cml",
|
||||
"csml" : "chemical/x-csml",
|
||||
"xyz" : "chemical/x-xyz",
|
||||
"bmp" : "image/bmp",
|
||||
"cgm" : "image/cgm",
|
||||
"g3" : "image/g3fax",
|
||||
"gif" : "image/gif",
|
||||
"ief" : "image/ief",
|
||||
"jpeg" : "image/jpeg",
|
||||
"jpg" : "image/jpeg",
|
||||
"jpe" : "image/jpeg",
|
||||
"ktx" : "image/ktx",
|
||||
"png" : "image/png",
|
||||
"btif" : "image/prs.btif",
|
||||
"sgi" : "image/sgi",
|
||||
"svg" : "image/svg+xml",
|
||||
"svgz" : "image/svg+xml",
|
||||
"tiff" : "image/tiff",
|
||||
"tif" : "image/tiff",
|
||||
"psd" : "image/vnd.adobe.photoshop",
|
||||
"uvi" : "image/vnd.dece.graphic",
|
||||
"uvvi" : "image/vnd.dece.graphic",
|
||||
"uvg" : "image/vnd.dece.graphic",
|
||||
"uvvg" : "image/vnd.dece.graphic",
|
||||
"sub" : "image/vnd.dvb.subtitle",
|
||||
"djvu" : "image/vnd.djvu",
|
||||
"djv" : "image/vnd.djvu",
|
||||
"dwg" : "image/vnd.dwg",
|
||||
"dxf" : "image/vnd.dxf",
|
||||
"fbs" : "image/vnd.fastbidsheet",
|
||||
"fpx" : "image/vnd.fpx",
|
||||
"fst" : "image/vnd.fst",
|
||||
"mmr" : "image/vnd.fujixerox.edmics-mmr",
|
||||
"rlc" : "image/vnd.fujixerox.edmics-rlc",
|
||||
"mdi" : "image/vnd.ms-modi",
|
||||
"wdp" : "image/vnd.ms-photo",
|
||||
"npx" : "image/vnd.net-fpx",
|
||||
"wbmp" : "image/vnd.wap.wbmp",
|
||||
"xif" : "image/vnd.xiff",
|
||||
"webp" : "image/webp",
|
||||
"3ds" : "image/x-3ds",
|
||||
"ras" : "image/x-cmu-raster",
|
||||
"cmx" : "image/x-cmx",
|
||||
"fh" : "image/x-freehand",
|
||||
"fhc" : "image/x-freehand",
|
||||
"fh4" : "image/x-freehand",
|
||||
"fh5" : "image/x-freehand",
|
||||
"fh7" : "image/x-freehand",
|
||||
"ico" : "image/x-icon",
|
||||
"sid" : "image/x-mrsid-image",
|
||||
"pcx" : "image/x-pcx",
|
||||
"pic" : "image/x-pict",
|
||||
"pct" : "image/x-pict",
|
||||
"pnm" : "image/x-portable-anymap",
|
||||
"pbm" : "image/x-portable-bitmap",
|
||||
"pgm" : "image/x-portable-graymap",
|
||||
"ppm" : "image/x-portable-pixmap",
|
||||
"rgb" : "image/x-rgb",
|
||||
"tga" : "image/x-tga",
|
||||
"xbm" : "image/x-xbitmap",
|
||||
"xpm" : "image/x-xpixmap",
|
||||
"xwd" : "image/x-xwindowdump",
|
||||
"eml" : "message/rfc822",
|
||||
"mime" : "message/rfc822",
|
||||
"igs" : "model/iges",
|
||||
"iges" : "model/iges",
|
||||
"msh" : "model/mesh",
|
||||
"mesh" : "model/mesh",
|
||||
"silo" : "model/mesh",
|
||||
"dae" : "model/vnd.collada+xml",
|
||||
"dwf" : "model/vnd.dwf",
|
||||
"gdl" : "model/vnd.gdl",
|
||||
"gtw" : "model/vnd.gtw",
|
||||
"mts" : "model/vnd.mts",
|
||||
"vtu" : "model/vnd.vtu",
|
||||
"wrl" : "model/vrml",
|
||||
"vrml" : "model/vrml",
|
||||
"x3db" : "model/x3d+binary",
|
||||
"x3dbz" : "model/x3d+binary",
|
||||
"x3dv" : "model/x3d+vrml",
|
||||
"x3dvz" : "model/x3d+vrml",
|
||||
"x3d" : "model/x3d+xml",
|
||||
"x3dz" : "model/x3d+xml",
|
||||
"appcache" : "text/cache-manifest",
|
||||
"ics" : "text/calendar",
|
||||
"ifb" : "text/calendar",
|
||||
"css" : "text/css",
|
||||
"csv" : "text/csv",
|
||||
"html" : "text/html",
|
||||
"htm" : "text/html",
|
||||
"n3" : "text/n3",
|
||||
"txt" : "text/plain",
|
||||
"text" : "text/plain",
|
||||
"conf" : "text/plain",
|
||||
"def" : "text/plain",
|
||||
"list" : "text/plain",
|
||||
"log" : "text/plain",
|
||||
"in" : "text/plain",
|
||||
"dsc" : "text/prs.lines.tag",
|
||||
"rtx" : "text/richtext",
|
||||
"sgml" : "text/sgml",
|
||||
"sgm" : "text/sgml",
|
||||
"tsv" : "text/tab-separated-values",
|
||||
"t" : "text/troff",
|
||||
"tr" : "text/troff",
|
||||
"roff" : "text/troff",
|
||||
"man" : "text/troff",
|
||||
"me" : "text/troff",
|
||||
"ms" : "text/troff",
|
||||
"ttl" : "text/turtle",
|
||||
"uri" : "text/uri-list",
|
||||
"uris" : "text/uri-list",
|
||||
"urls" : "text/uri-list",
|
||||
"vcard" : "text/vcard",
|
||||
"curl" : "text/vnd.curl",
|
||||
"dcurl" : "text/vnd.curl.dcurl",
|
||||
"scurl" : "text/vnd.curl.scurl",
|
||||
"mcurl" : "text/vnd.curl.mcurl",
|
||||
"sub" : "text/vnd.dvb.subtitle",
|
||||
"fly" : "text/vnd.fly",
|
||||
"flx" : "text/vnd.fmi.flexstor",
|
||||
"gv" : "text/vnd.graphviz",
|
||||
"3dml" : "text/vnd.in3d.3dml",
|
||||
"spot" : "text/vnd.in3d.spot",
|
||||
"jad" : "text/vnd.sun.j2me.app-descriptor",
|
||||
"wml" : "text/vnd.wap.wml",
|
||||
"wmls" : "text/vnd.wap.wmlscript",
|
||||
"s" : "text/x-asm",
|
||||
"asm" : "text/x-asm",
|
||||
"c" : "text/x-c",
|
||||
"cc" : "text/x-c",
|
||||
"cxx" : "text/x-c",
|
||||
"cpp" : "text/x-c",
|
||||
"h" : "text/x-c",
|
||||
"hh" : "text/x-c",
|
||||
"dic" : "text/x-c",
|
||||
"f" : "text/x-fortran",
|
||||
"for" : "text/x-fortran",
|
||||
"f77" : "text/x-fortran",
|
||||
"f90" : "text/x-fortran",
|
||||
"java" : "text/x-java-source",
|
||||
"opml" : "text/x-opml",
|
||||
"p" : "text/x-pascal",
|
||||
"pas" : "text/x-pascal",
|
||||
"nfo" : "text/x-nfo",
|
||||
"etx" : "text/x-setext",
|
||||
"sfv" : "text/x-sfv",
|
||||
"uu" : "text/x-uuencode",
|
||||
"vcs" : "text/x-vcalendar",
|
||||
"vcf" : "text/x-vcard",
|
||||
"3gp" : "video/3gpp",
|
||||
"3g2" : "video/3gpp2",
|
||||
"h261" : "video/h261",
|
||||
"h263" : "video/h263",
|
||||
"h264" : "video/h264",
|
||||
"jpgv" : "video/jpeg",
|
||||
"jpm" : "video/jpm",
|
||||
"jpgm" : "video/jpm",
|
||||
"mj2" : "video/mj2",
|
||||
"mjp2" : "video/mj2",
|
||||
"mp4" : "video/mp4",
|
||||
"mp4v" : "video/mp4",
|
||||
"mpg4" : "video/mp4",
|
||||
"mpeg" : "video/mpeg",
|
||||
"mpg" : "video/mpeg",
|
||||
"mpe" : "video/mpeg",
|
||||
"m1v" : "video/mpeg",
|
||||
"m2v" : "video/mpeg",
|
||||
"ogv" : "video/ogg",
|
||||
"qt" : "video/quicktime",
|
||||
"mov" : "video/quicktime",
|
||||
"uvh" : "video/vnd.dece.hd",
|
||||
"uvvh" : "video/vnd.dece.hd",
|
||||
"uvm" : "video/vnd.dece.mobile",
|
||||
"uvvm" : "video/vnd.dece.mobile",
|
||||
"uvp" : "video/vnd.dece.pd",
|
||||
"uvvp" : "video/vnd.dece.pd",
|
||||
"uvs" : "video/vnd.dece.sd",
|
||||
"uvvs" : "video/vnd.dece.sd",
|
||||
"uvv" : "video/vnd.dece.video",
|
||||
"uvvv" : "video/vnd.dece.video",
|
||||
"dvb" : "video/vnd.dvb.file",
|
||||
"fvt" : "video/vnd.fvt",
|
||||
"mxu" : "video/vnd.mpegurl",
|
||||
"m4u" : "video/vnd.mpegurl",
|
||||
"pyv" : "video/vnd.ms-playready.media.pyv",
|
||||
"uvu" : "video/vnd.uvvu.mp4",
|
||||
"uvvu" : "video/vnd.uvvu.mp4",
|
||||
"viv" : "video/vnd.vivo",
|
||||
"webm" : "video/webm",
|
||||
"f4v" : "video/x-f4v",
|
||||
"fli" : "video/x-fli",
|
||||
"flv" : "video/x-flv",
|
||||
"m4v" : "video/x-m4v",
|
||||
"mkv" : "video/x-matroska",
|
||||
"mk3d" : "video/x-matroska",
|
||||
"mks" : "video/x-matroska",
|
||||
"mng" : "video/x-mng",
|
||||
"asf" : "video/x-ms-asf",
|
||||
"asx" : "video/x-ms-asf",
|
||||
"vob" : "video/x-ms-vob",
|
||||
"wm" : "video/x-ms-wm",
|
||||
"wmv" : "video/x-ms-wmv",
|
||||
"wmx" : "video/x-ms-wmx",
|
||||
"wvx" : "video/x-ms-wvx",
|
||||
"avi" : "video/x-msvideo",
|
||||
"movie" : "video/x-sgi-movie",
|
||||
"smv" : "video/x-smv",
|
||||
"ice" : "x-conference/x-cooltalk"
|
||||
}
|
767
Public/json/mime_to_extension.json
Executable file
@ -0,0 +1,767 @@
|
||||
{
|
||||
"application/andrew-inset" : ["ez"],
|
||||
"application/applixware" : ["aw"],
|
||||
"application/atom+xml" : ["atom"],
|
||||
"application/atomcat+xml" : ["atomcat"],
|
||||
"application/atomsvc+xml" : ["atomsvc"],
|
||||
"application/ccxml+xml" : ["ccxml"],
|
||||
"application/cdmi-capability" : ["cdmia"],
|
||||
"application/cdmi-container" : ["cdmic"],
|
||||
"application/cdmi-domain" : ["cdmid"],
|
||||
"application/cdmi-object" : ["cdmio"],
|
||||
"application/cdmi-queue" : ["cdmiq"],
|
||||
"application/cu-seeme" : ["cu"],
|
||||
"application/davmount+xml" : ["davmount"],
|
||||
"application/docbook+xml" : ["dbk"],
|
||||
"application/dssc+der" : ["dssc"],
|
||||
"application/dssc+xml" : ["xdssc"],
|
||||
"application/ecmascript" : ["ecma"],
|
||||
"application/emma+xml" : ["emma"],
|
||||
"application/epub+zip" : ["epub"],
|
||||
"application/exi" : ["exi"],
|
||||
"application/font-tdpfr" : ["pfr"],
|
||||
"application/gml+xml" : ["gml"],
|
||||
"application/gpx+xml" : ["gpx"],
|
||||
"application/gxf" : ["gxf"],
|
||||
"application/hyperstudio" : ["stk"],
|
||||
"application/inkml+xml" : ["ink", "inkml"],
|
||||
"application/ipfix" : ["ipfix"],
|
||||
"application/java-archive" : ["jar"],
|
||||
"application/java-serialized-object" : ["ser"],
|
||||
"application/java-vm" : ["class"],
|
||||
"application/javascript" : ["js"],
|
||||
"application/json" : ["json"],
|
||||
"application/jsonml+json" : ["jsonml"],
|
||||
"application/lost+xml" : ["lostxml"],
|
||||
"application/mac-binhex40" : ["hqx"],
|
||||
"application/mac-compactpro" : ["cpt"],
|
||||
"application/mads+xml" : ["mads"],
|
||||
"application/marc" : ["mrc"],
|
||||
"application/marcxml+xml" : ["mrcx"],
|
||||
"application/mathematica" : ["ma", "nb", "mb"],
|
||||
"application/mathml+xml" : ["mathml"],
|
||||
"application/mbox" : ["mbox"],
|
||||
"application/mediaservercontrol+xml" : ["mscml"],
|
||||
"application/metalink+xml" : ["metalink"],
|
||||
"application/metalink4+xml" : ["meta4"],
|
||||
"application/mets+xml" : ["mets"],
|
||||
"application/mods+xml" : ["mods"],
|
||||
"application/mp21" : ["m21", "mp21"],
|
||||
"application/mp4" : ["mp4s"],
|
||||
"application/msword" : ["doc", "dot"],
|
||||
"application/mxf" : ["mxf"],
|
||||
"application/octet-stream" : ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy"],
|
||||
"application/oda" : ["oda"],
|
||||
"application/oebps-package+xml" : ["opf"],
|
||||
"application/ogg" : ["ogx"],
|
||||
"application/omdoc+xml" : ["omdoc"],
|
||||
"application/onenote" : ["onetoc", "onetoc2", "onetmp", "onepkg"],
|
||||
"application/oxps" : ["oxps"],
|
||||
"application/patch-ops-error+xml" : ["xer"],
|
||||
"application/pdf" : ["pdf"],
|
||||
"application/pgp-encrypted" : ["pgp"],
|
||||
"application/pgp-signature" : ["asc", "sig"],
|
||||
"application/pics-rules" : ["prf"],
|
||||
"application/pkcs10" : ["p10"],
|
||||
"application/pkcs7-mime" : ["p7m", "p7c"],
|
||||
"application/pkcs7-signature" : ["p7s"],
|
||||
"application/pkcs8" : ["p8"],
|
||||
"application/pkix-attr-cert" : ["ac"],
|
||||
"application/pkix-cert" : ["cer"],
|
||||
"application/pkix-crl" : ["crl"],
|
||||
"application/pkix-pkipath" : ["pkipath"],
|
||||
"application/pkixcmp" : ["pki"],
|
||||
"application/pls+xml" : ["pls"],
|
||||
"application/postscript" : ["ai", "eps", "ps"],
|
||||
"application/prs.cww" : ["cww"],
|
||||
"application/pskc+xml" : ["pskcxml"],
|
||||
"application/rdf+xml" : ["rdf"],
|
||||
"application/reginfo+xml" : ["rif"],
|
||||
"application/relax-ng-compact-syntax" : ["rnc"],
|
||||
"application/resource-lists+xml" : ["rl"],
|
||||
"application/resource-lists-diff+xml" : ["rld"],
|
||||
"application/rls-services+xml" : ["rs"],
|
||||
"application/rpki-ghostbusters" : ["gbr"],
|
||||
"application/rpki-manifest" : ["mft"],
|
||||
"application/rpki-roa" : ["roa"],
|
||||
"application/rsd+xml" : ["rsd"],
|
||||
"application/rss+xml" : ["rss"],
|
||||
"application/rtf" : ["rtf"],
|
||||
"application/sbml+xml" : ["sbml"],
|
||||
"application/scvp-cv-request" : ["scq"],
|
||||
"application/scvp-cv-response" : ["scs"],
|
||||
"application/scvp-vp-request" : ["spq"],
|
||||
"application/scvp-vp-response" : ["spp"],
|
||||
"application/sdp" : ["sdp"],
|
||||
"application/set-payment-initiation" : ["setpay"],
|
||||
"application/set-registration-initiation" : ["setreg"],
|
||||
"application/shf+xml" : ["shf"],
|
||||
"application/smil+xml" : ["smi", "smil"],
|
||||
"application/sparql-query" : ["rq"],
|
||||
"application/sparql-results+xml" : ["srx"],
|
||||
"application/srgs" : ["gram"],
|
||||
"application/srgs+xml" : ["grxml"],
|
||||
"application/sru+xml" : ["sru"],
|
||||
"application/ssdl+xml" : ["ssdl"],
|
||||
"application/ssml+xml" : ["ssml"],
|
||||
"application/tei+xml" : ["tei", "teicorpus"],
|
||||
"application/thraud+xml" : ["tfi"],
|
||||
"application/timestamped-data" : ["tsd"],
|
||||
"application/vnd.3gpp.pic-bw-large" : ["plb"],
|
||||
"application/vnd.3gpp.pic-bw-small" : ["psb"],
|
||||
"application/vnd.3gpp.pic-bw-var" : ["pvb"],
|
||||
"application/vnd.3gpp2.tcap" : ["tcap"],
|
||||
"application/vnd.3m.post-it-notes" : ["pwn"],
|
||||
"application/vnd.accpac.simply.aso" : ["aso"],
|
||||
"application/vnd.accpac.simply.imp" : ["imp"],
|
||||
"application/vnd.acucobol" : ["acu"],
|
||||
"application/vnd.acucorp" : ["atc", "acutc"],
|
||||
"application/vnd.adobe.air-application-installer-package+zip" : ["air"],
|
||||
"application/vnd.adobe.formscentral.fcdt" : ["fcdt"],
|
||||
"application/vnd.adobe.fxp" : ["fxp", "fxpl"],
|
||||
"application/vnd.adobe.xdp+xml" : ["xdp"],
|
||||
"application/vnd.adobe.xfdf" : ["xfdf"],
|
||||
"application/vnd.ahead.space" : ["ahead"],
|
||||
"application/vnd.airzip.filesecure.azf" : ["azf"],
|
||||
"application/vnd.airzip.filesecure.azs" : ["azs"],
|
||||
"application/vnd.amazon.ebook" : ["azw"],
|
||||
"application/vnd.americandynamics.acc" : ["acc"],
|
||||
"application/vnd.amiga.ami" : ["ami"],
|
||||
"application/vnd.android.package-archive" : ["apk"],
|
||||
"application/vnd.anser-web-certificate-issue-initiation" : ["cii"],
|
||||
"application/vnd.anser-web-funds-transfer-initiation" : ["fti"],
|
||||
"application/vnd.antix.game-component" : ["atx"],
|
||||
"application/vnd.apple.installer+xml" : ["mpkg"],
|
||||
"application/vnd.apple.mpegurl" : ["m3u8"],
|
||||
"application/vnd.aristanetworks.swi" : ["swi"],
|
||||
"application/vnd.astraea-software.iota" : ["iota"],
|
||||
"application/vnd.audiograph" : ["aep"],
|
||||
"application/vnd.blueice.multipass" : ["mpm"],
|
||||
"application/vnd.bmi" : ["bmi"],
|
||||
"application/vnd.businessobjects" : ["rep"],
|
||||
"application/vnd.chemdraw+xml" : ["cdxml"],
|
||||
"application/vnd.chipnuts.karaoke-mmd" : ["mmd"],
|
||||
"application/vnd.cinderella" : ["cdy"],
|
||||
"application/vnd.claymore" : ["cla"],
|
||||
"application/vnd.cloanto.rp9" : ["rp9"],
|
||||
"application/vnd.clonk.c4group" : ["c4g", "c4d", "c4f", "c4p", "c4u"],
|
||||
"application/vnd.cluetrust.cartomobile-config" : ["c11amc"],
|
||||
"application/vnd.cluetrust.cartomobile-config-pkg" : ["c11amz"],
|
||||
"application/vnd.commonspace" : ["csp"],
|
||||
"application/vnd.contact.cmsg" : ["cdbcmsg"],
|
||||
"application/vnd.cosmocaller" : ["cmc"],
|
||||
"application/vnd.crick.clicker" : ["clkx"],
|
||||
"application/vnd.crick.clicker.keyboard" : ["clkk"],
|
||||
"application/vnd.crick.clicker.palette" : ["clkp"],
|
||||
"application/vnd.crick.clicker.template" : ["clkt"],
|
||||
"application/vnd.crick.clicker.wordbank" : ["clkw"],
|
||||
"application/vnd.criticaltools.wbs+xml" : ["wbs"],
|
||||
"application/vnd.ctc-posml" : ["pml"],
|
||||
"application/vnd.cups-ppd" : ["ppd"],
|
||||
"application/vnd.curl.car" : ["car"],
|
||||
"application/vnd.curl.pcurl" : ["pcurl"],
|
||||
"application/vnd.dart" : ["dart"],
|
||||
"application/vnd.data-vision.rdz" : ["rdz"],
|
||||
"application/vnd.dece.data" : ["uvf", "uvvf", "uvd", "uvvd"],
|
||||
"application/vnd.dece.ttml+xml" : ["uvt", "uvvt"],
|
||||
"application/vnd.dece.unspecified" : ["uvx", "uvvx"],
|
||||
"application/vnd.dece.zip" : ["uvz", "uvvz"],
|
||||
"application/vnd.denovo.fcselayout-link" : ["fe_launch"],
|
||||
"application/vnd.dna" : ["dna"],
|
||||
"application/vnd.dolby.mlp" : ["mlp"],
|
||||
"application/vnd.dpgraph" : ["dpg"],
|
||||
"application/vnd.dreamfactory" : ["dfac"],
|
||||
"application/vnd.ds-keypoint" : ["kpxx"],
|
||||
"application/vnd.dvb.ait" : ["ait"],
|
||||
"application/vnd.dvb.service" : ["svc"],
|
||||
"application/vnd.dynageo" : ["geo"],
|
||||
"application/vnd.ecowin.chart" : ["mag"],
|
||||
"application/vnd.enliven" : ["nml"],
|
||||
"application/vnd.epson.esf" : ["esf"],
|
||||
"application/vnd.epson.msf" : ["msf"],
|
||||
"application/vnd.epson.quickanime" : ["qam"],
|
||||
"application/vnd.epson.salt" : ["slt"],
|
||||
"application/vnd.epson.ssf" : ["ssf"],
|
||||
"application/vnd.eszigno3+xml" : ["es3", "et3"],
|
||||
"application/vnd.ezpix-album" : ["ez2"],
|
||||
"application/vnd.ezpix-package" : ["ez3"],
|
||||
"application/vnd.fdf" : ["fdf"],
|
||||
"application/vnd.fdsn.mseed" : ["mseed"],
|
||||
"application/vnd.fdsn.seed" : ["seed", "dataless"],
|
||||
"application/vnd.flographit" : ["gph"],
|
||||
"application/vnd.fluxtime.clip" : ["ftc"],
|
||||
"application/vnd.framemaker" : ["fm", "frame", "maker", "book"],
|
||||
"application/vnd.frogans.fnc" : ["fnc"],
|
||||
"application/vnd.frogans.ltf" : ["ltf"],
|
||||
"application/vnd.fsc.weblaunch" : ["fsc"],
|
||||
"application/vnd.fujitsu.oasys" : ["oas"],
|
||||
"application/vnd.fujitsu.oasys2" : ["oa2"],
|
||||
"application/vnd.fujitsu.oasys3" : ["oa3"],
|
||||
"application/vnd.fujitsu.oasysgp" : ["fg5"],
|
||||
"application/vnd.fujitsu.oasysprs" : ["bh2"],
|
||||
"application/vnd.fujixerox.ddd" : ["ddd"],
|
||||
"application/vnd.fujixerox.docuworks" : ["xdw"],
|
||||
"application/vnd.fujixerox.docuworks.binder" : ["xbd"],
|
||||
"application/vnd.fuzzysheet" : ["fzs"],
|
||||
"application/vnd.genomatix.tuxedo" : ["txd"],
|
||||
"application/vnd.geogebra.file" : ["ggb"],
|
||||
"application/vnd.geogebra.tool" : ["ggt"],
|
||||
"application/vnd.geometry-explorer" : ["gex", "gre"],
|
||||
"application/vnd.geonext" : ["gxt"],
|
||||
"application/vnd.geoplan" : ["g2w"],
|
||||
"application/vnd.geospace" : ["g3w"],
|
||||
"application/vnd.gmx" : ["gmx"],
|
||||
"application/vnd.google-earth.kml+xml" : ["kml"],
|
||||
"application/vnd.google-earth.kmz" : ["kmz"],
|
||||
"application/vnd.grafeq" : ["gqf", "gqs"],
|
||||
"application/vnd.groove-account" : ["gac"],
|
||||
"application/vnd.groove-help" : ["ghf"],
|
||||
"application/vnd.groove-identity-message" : ["gim"],
|
||||
"application/vnd.groove-injector" : ["grv"],
|
||||
"application/vnd.groove-tool-message" : ["gtm"],
|
||||
"application/vnd.groove-tool-template" : ["tpl"],
|
||||
"application/vnd.groove-vcard" : ["vcg"],
|
||||
"application/vnd.hal+xml" : ["hal"],
|
||||
"application/vnd.handheld-entertainment+xml" : ["zmm"],
|
||||
"application/vnd.hbci" : ["hbci"],
|
||||
"application/vnd.hhe.lesson-player" : ["les"],
|
||||
"application/vnd.hp-hpgl" : ["hpgl"],
|
||||
"application/vnd.hp-hpid" : ["hpid"],
|
||||
"application/vnd.hp-hps" : ["hps"],
|
||||
"application/vnd.hp-jlyt" : ["jlt"],
|
||||
"application/vnd.hp-pcl" : ["pcl"],
|
||||
"application/vnd.hp-pclxl" : ["pclxl"],
|
||||
"application/vnd.hydrostatix.sof-data" : ["sfd-hdstx"],
|
||||
"application/vnd.ibm.minipay" : ["mpy"],
|
||||
"application/vnd.ibm.modcap" : ["afp", "listafp", "list3820"],
|
||||
"application/vnd.ibm.rights-management" : ["irm"],
|
||||
"application/vnd.ibm.secure-container" : ["sc"],
|
||||
"application/vnd.iccprofile" : ["icc", "icm"],
|
||||
"application/vnd.igloader" : ["igl"],
|
||||
"application/vnd.immervision-ivp" : ["ivp"],
|
||||
"application/vnd.immervision-ivu" : ["ivu"],
|
||||
"application/vnd.insors.igm" : ["igm"],
|
||||
"application/vnd.intercon.formnet" : ["xpw", "xpx"],
|
||||
"application/vnd.intergeo" : ["i2g"],
|
||||
"application/vnd.intu.qbo" : ["qbo"],
|
||||
"application/vnd.intu.qfx" : ["qfx"],
|
||||
"application/vnd.ipunplugged.rcprofile" : ["rcprofile"],
|
||||
"application/vnd.irepository.package+xml" : ["irp"],
|
||||
"application/vnd.is-xpr" : ["xpr"],
|
||||
"application/vnd.isac.fcs" : ["fcs"],
|
||||
"application/vnd.jam" : ["jam"],
|
||||
"application/vnd.jcp.javame.midlet-rms" : ["rms"],
|
||||
"application/vnd.jisp" : ["jisp"],
|
||||
"application/vnd.joost.joda-archive" : ["joda"],
|
||||
"application/vnd.kahootz" : ["ktz", "ktr"],
|
||||
"application/vnd.kde.karbon" : ["karbon"],
|
||||
"application/vnd.kde.kchart" : ["chrt"],
|
||||
"application/vnd.kde.kformula" : ["kfo"],
|
||||
"application/vnd.kde.kivio" : ["flw"],
|
||||
"application/vnd.kde.kontour" : ["kon"],
|
||||
"application/vnd.kde.kpresenter" : ["kpr", "kpt"],
|
||||
"application/vnd.kde.kspread" : ["ksp"],
|
||||
"application/vnd.kde.kword" : ["kwd", "kwt"],
|
||||
"application/vnd.kenameaapp" : ["htke"],
|
||||
"application/vnd.kidspiration" : ["kia"],
|
||||
"application/vnd.kinar" : ["kne", "knp"],
|
||||
"application/vnd.koan" : ["skp", "skd", "skt", "skm"],
|
||||
"application/vnd.kodak-descriptor" : ["sse"],
|
||||
"application/vnd.las.las+xml" : ["lasxml"],
|
||||
"application/vnd.llamagraphics.life-balance.desktop" : ["lbd"],
|
||||
"application/vnd.llamagraphics.life-balance.exchange+xml" : ["lbe"],
|
||||
"application/vnd.lotus-1-2-3" : ["123"],
|
||||
"application/vnd.lotus-approach" : ["apr"],
|
||||
"application/vnd.lotus-freelance" : ["pre"],
|
||||
"application/vnd.lotus-notes" : ["nsf"],
|
||||
"application/vnd.lotus-organizer" : ["org"],
|
||||
"application/vnd.lotus-screencam" : ["scm"],
|
||||
"application/vnd.lotus-wordpro" : ["lwp"],
|
||||
"application/vnd.macports.portpkg" : ["portpkg"],
|
||||
"application/vnd.mcd" : ["mcd"],
|
||||
"application/vnd.medcalcdata" : ["mc1"],
|
||||
"application/vnd.mediastation.cdkey" : ["cdkey"],
|
||||
"application/vnd.mfer" : ["mwf"],
|
||||
"application/vnd.mfmp" : ["mfm"],
|
||||
"application/vnd.micrografx.flo" : ["flo"],
|
||||
"application/vnd.micrografx.igx" : ["igx"],
|
||||
"application/vnd.mif" : ["mif"],
|
||||
"application/vnd.mobius.daf" : ["daf"],
|
||||
"application/vnd.mobius.dis" : ["dis"],
|
||||
"application/vnd.mobius.mbk" : ["mbk"],
|
||||
"application/vnd.mobius.mqy" : ["mqy"],
|
||||
"application/vnd.mobius.msl" : ["msl"],
|
||||
"application/vnd.mobius.plc" : ["plc"],
|
||||
"application/vnd.mobius.txf" : ["txf"],
|
||||
"application/vnd.mophun.application" : ["mpn"],
|
||||
"application/vnd.mophun.certificate" : ["mpc"],
|
||||
"application/vnd.mozilla.xul+xml" : ["xul"],
|
||||
"application/vnd.ms-artgalry" : ["cil"],
|
||||
"application/vnd.ms-cab-compressed" : ["cab"],
|
||||
"application/vnd.ms-excel" : ["xls", "xlm", "xla", "xlc", "xlt", "xlw"],
|
||||
"application/vnd.ms-excel.addin.macroenabled.12" : ["xlam"],
|
||||
"application/vnd.ms-excel.sheet.binary.macroenabled.12" : ["xlsb"],
|
||||
"application/vnd.ms-excel.sheet.macroenabled.12" : ["xlsm"],
|
||||
"application/vnd.ms-excel.template.macroenabled.12" : ["xltm"],
|
||||
"application/vnd.ms-fontobject" : ["eot"],
|
||||
"application/vnd.ms-htmlhelp" : ["chm"],
|
||||
"application/vnd.ms-ims" : ["ims"],
|
||||
"application/vnd.ms-lrm" : ["lrm"],
|
||||
"application/vnd.ms-officetheme" : ["thmx"],
|
||||
"application/vnd.ms-pki.seccat" : ["cat"],
|
||||
"application/vnd.ms-pki.stl" : ["stl"],
|
||||
"application/vnd.ms-powerpoint" : ["ppt", "pps", "pot"],
|
||||
"application/vnd.ms-powerpoint.addin.macroenabled.12" : ["ppam"],
|
||||
"application/vnd.ms-powerpoint.presentation.macroenabled.12" : ["pptm"],
|
||||
"application/vnd.ms-powerpoint.slide.macroenabled.12" : ["sldm"],
|
||||
"application/vnd.ms-powerpoint.slideshow.macroenabled.12" : ["ppsm"],
|
||||
"application/vnd.ms-powerpoint.template.macroenabled.12" : ["potm"],
|
||||
"application/vnd.ms-project" : ["mpp", "mpt"],
|
||||
"application/vnd.ms-word.document.macroenabled.12" : ["docm"],
|
||||
"application/vnd.ms-word.template.macroenabled.12" : ["dotm"],
|
||||
"application/vnd.ms-works" : ["wps", "wks", "wcm", "wdb"],
|
||||
"application/vnd.ms-wpl" : ["wpl"],
|
||||
"application/vnd.ms-xpsdocument" : ["xps"],
|
||||
"application/vnd.mseq" : ["mseq"],
|
||||
"application/vnd.musician" : ["mus"],
|
||||
"application/vnd.muvee.style" : ["msty"],
|
||||
"application/vnd.mynfc" : ["taglet"],
|
||||
"application/vnd.neurolanguage.nlu" : ["nlu"],
|
||||
"application/vnd.nitf" : ["ntf", "nitf"],
|
||||
"application/vnd.noblenet-directory" : ["nnd"],
|
||||
"application/vnd.noblenet-sealer" : ["nns"],
|
||||
"application/vnd.noblenet-web" : ["nnw"],
|
||||
"application/vnd.nokia.n-gage.data" : ["ngdat"],
|
||||
"application/vnd.nokia.n-gage.symbian.install" : ["n-gage"],
|
||||
"application/vnd.nokia.radio-preset" : ["rpst"],
|
||||
"application/vnd.nokia.radio-presets" : ["rpss"],
|
||||
"application/vnd.novadigm.edm" : ["edm"],
|
||||
"application/vnd.novadigm.edx" : ["edx"],
|
||||
"application/vnd.novadigm.ext" : ["ext"],
|
||||
"application/vnd.oasis.opendocument.chart" : ["odc"],
|
||||
"application/vnd.oasis.opendocument.chart-template" : ["otc"],
|
||||
"application/vnd.oasis.opendocument.database" : ["odb"],
|
||||
"application/vnd.oasis.opendocument.formula" : ["odf"],
|
||||
"application/vnd.oasis.opendocument.formula-template" : ["odft"],
|
||||
"application/vnd.oasis.opendocument.graphics" : ["odg"],
|
||||
"application/vnd.oasis.opendocument.graphics-template" : ["otg"],
|
||||
"application/vnd.oasis.opendocument.image" : ["odi"],
|
||||
"application/vnd.oasis.opendocument.image-template" : ["oti"],
|
||||
"application/vnd.oasis.opendocument.presentation" : ["odp"],
|
||||
"application/vnd.oasis.opendocument.presentation-template" : ["otp"],
|
||||
"application/vnd.oasis.opendocument.spreadsheet" : ["ods"],
|
||||
"application/vnd.oasis.opendocument.spreadsheet-template" : ["ots"],
|
||||
"application/vnd.oasis.opendocument.text" : ["odt"],
|
||||
"application/vnd.oasis.opendocument.text-master" : ["odm"],
|
||||
"application/vnd.oasis.opendocument.text-template" : ["ott"],
|
||||
"application/vnd.oasis.opendocument.text-web" : ["oth"],
|
||||
"application/vnd.olpc-sugar" : ["xo"],
|
||||
"application/vnd.oma.dd2+xml" : ["dd2"],
|
||||
"application/vnd.openofficeorg.extension" : ["oxt"],
|
||||
"application/vnd.openxmlformats-officedocument.presentationml.presentation" : ["pptx"],
|
||||
"application/vnd.openxmlformats-officedocument.presentationml.slide" : ["sldx"],
|
||||
"application/vnd.openxmlformats-officedocument.presentationml.slideshow" : ["ppsx"],
|
||||
"application/vnd.openxmlformats-officedocument.presentationml.template" : ["potx"],
|
||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" : ["xlsx"],
|
||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.template" : ["xltx"],
|
||||
"application/vnd.openxmlformats-officedocument.wordprocessingml.document" : ["docx"],
|
||||
"application/vnd.openxmlformats-officedocument.wordprocessingml.template" : ["dotx"],
|
||||
"application/vnd.osgeo.mapguide.package" : ["mgp"],
|
||||
"application/vnd.osgi.dp" : ["dp"],
|
||||
"application/vnd.osgi.subsystem" : ["esa"],
|
||||
"application/vnd.palm" : ["pdb", "pqa", "oprc"],
|
||||
"application/vnd.pawaafile" : ["paw"],
|
||||
"application/vnd.pg.format" : ["str"],
|
||||
"application/vnd.pg.osasli" : ["ei6"],
|
||||
"application/vnd.picsel" : ["efif"],
|
||||
"application/vnd.pmi.widget" : ["wg"],
|
||||
"application/vnd.pocketlearn" : ["plf"],
|
||||
"application/vnd.powerbuilder6" : ["pbd"],
|
||||
"application/vnd.previewsystems.box" : ["box"],
|
||||
"application/vnd.proteus.magazine" : ["mgz"],
|
||||
"application/vnd.publishare-delta-tree" : ["qps"],
|
||||
"application/vnd.pvi.ptid1" : ["ptid"],
|
||||
"application/vnd.quark.quarkxpress" : ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"],
|
||||
"application/vnd.realvnc.bed" : ["bed"],
|
||||
"application/vnd.recordare.musicxml" : ["mxl"],
|
||||
"application/vnd.recordare.musicxml+xml" : ["musicxml"],
|
||||
"application/vnd.rig.cryptonote" : ["cryptonote"],
|
||||
"application/vnd.rim.cod" : ["cod"],
|
||||
"application/vnd.rn-realmedia" : ["rm"],
|
||||
"application/vnd.rn-realmedia-vbr" : ["rmvb"],
|
||||
"application/vnd.route66.link66+xml" : ["link66"],
|
||||
"application/vnd.sailingtracker.track" : ["st"],
|
||||
"application/vnd.seemail" : ["see"],
|
||||
"application/vnd.sema" : ["sema"],
|
||||
"application/vnd.semd" : ["semd"],
|
||||
"application/vnd.semf" : ["semf"],
|
||||
"application/vnd.shana.informed.formdata" : ["ifm"],
|
||||
"application/vnd.shana.informed.formtemplate" : ["itp"],
|
||||
"application/vnd.shana.informed.interchange" : ["iif"],
|
||||
"application/vnd.shana.informed.package" : ["ipk"],
|
||||
"application/vnd.simtech-mindmapper" : ["twd", "twds"],
|
||||
"application/vnd.smaf" : ["mmf"],
|
||||
"application/vnd.smart.teacher" : ["teacher"],
|
||||
"application/vnd.solent.sdkm+xml" : ["sdkm", "sdkd"],
|
||||
"application/vnd.spotfire.dxp" : ["dxp"],
|
||||
"application/vnd.spotfire.sfs" : ["sfs"],
|
||||
"application/vnd.stardivision.calc" : ["sdc"],
|
||||
"application/vnd.stardivision.draw" : ["sda"],
|
||||
"application/vnd.stardivision.impress" : ["sdd"],
|
||||
"application/vnd.stardivision.math" : ["smf"],
|
||||
"application/vnd.stardivision.writer" : ["sdw", "vor"],
|
||||
"application/vnd.stardivision.writer-global" : ["sgl"],
|
||||
"application/vnd.stepmania.package" : ["smzip"],
|
||||
"application/vnd.stepmania.stepchart" : ["sm"],
|
||||
"application/vnd.sun.xml.calc" : ["sxc"],
|
||||
"application/vnd.sun.xml.calc.template" : ["stc"],
|
||||
"application/vnd.sun.xml.draw" : ["sxd"],
|
||||
"application/vnd.sun.xml.draw.template" : ["std"],
|
||||
"application/vnd.sun.xml.impress" : ["sxi"],
|
||||
"application/vnd.sun.xml.impress.template" : ["sti"],
|
||||
"application/vnd.sun.xml.math" : ["sxm"],
|
||||
"application/vnd.sun.xml.writer" : ["sxw"],
|
||||
"application/vnd.sun.xml.writer.global" : ["sxg"],
|
||||
"application/vnd.sun.xml.writer.template" : ["stw"],
|
||||
"application/vnd.sus-calendar" : ["sus", "susp"],
|
||||
"application/vnd.svd" : ["svd"],
|
||||
"application/vnd.symbian.install" : ["sis", "sisx"],
|
||||
"application/vnd.syncml+xml" : ["xsm"],
|
||||
"application/vnd.syncml.dm+wbxml" : ["bdm"],
|
||||
"application/vnd.syncml.dm+xml" : ["xdm"],
|
||||
"application/vnd.tao.intent-module-archive" : ["tao"],
|
||||
"application/vnd.tcpdump.pcap" : ["pcap", "cap", "dmp"],
|
||||
"application/vnd.tmobile-livetv" : ["tmo"],
|
||||
"application/vnd.trid.tpt" : ["tpt"],
|
||||
"application/vnd.triscape.mxs" : ["mxs"],
|
||||
"application/vnd.trueapp" : ["tra"],
|
||||
"application/vnd.ufdl" : ["ufd", "ufdl"],
|
||||
"application/vnd.uiq.theme" : ["utz"],
|
||||
"application/vnd.umajin" : ["umj"],
|
||||
"application/vnd.unity" : ["unityweb"],
|
||||
"application/vnd.uoml+xml" : ["uoml"],
|
||||
"application/vnd.vcx" : ["vcx"],
|
||||
"application/vnd.visio" : ["vsd", "vst", "vss", "vsw"],
|
||||
"application/vnd.visionary" : ["vis"],
|
||||
"application/vnd.vsf" : ["vsf"],
|
||||
"application/vnd.wap.wbxml" : ["wbxml"],
|
||||
"application/vnd.wap.wmlc" : ["wmlc"],
|
||||
"application/vnd.wap.wmlscriptc" : ["wmlsc"],
|
||||
"application/vnd.webturbo" : ["wtb"],
|
||||
"application/vnd.wolfram.player" : ["nbp"],
|
||||
"application/vnd.wordperfect" : ["wpd"],
|
||||
"application/vnd.wqd" : ["wqd"],
|
||||
"application/vnd.wt.stf" : ["stf"],
|
||||
"application/vnd.xara" : ["xar"],
|
||||
"application/vnd.xfdl" : ["xfdl"],
|
||||
"application/vnd.yamaha.hv-dic" : ["hvd"],
|
||||
"application/vnd.yamaha.hv-script" : ["hvs"],
|
||||
"application/vnd.yamaha.hv-voice" : ["hvp"],
|
||||
"application/vnd.yamaha.openscoreformat" : ["osf"],
|
||||
"application/vnd.yamaha.openscoreformat.osfpvg+xml" : ["osfpvg"],
|
||||
"application/vnd.yamaha.smaf-audio" : ["saf"],
|
||||
"application/vnd.yamaha.smaf-phrase" : ["spf"],
|
||||
"application/vnd.yellowriver-custom-menu" : ["cmp"],
|
||||
"application/vnd.zul" : ["zir", "zirz"],
|
||||
"application/vnd.zzazz.deck+xml" : ["zaz"],
|
||||
"application/voicexml+xml" : ["vxml"],
|
||||
"application/widget" : ["wgt"],
|
||||
"application/winhlp" : ["hlp"],
|
||||
"application/wsdl+xml" : ["wsdl"],
|
||||
"application/wspolicy+xml" : ["wspolicy"],
|
||||
"application/x-7z-compressed" : ["7z"],
|
||||
"application/x-abiword" : ["abw"],
|
||||
"application/x-ace-compressed" : ["ace"],
|
||||
"application/x-apple-diskimage" : ["dmg"],
|
||||
"application/x-authorware-bin" : ["aab", "x32", "u32", "vox"],
|
||||
"application/x-authorware-map" : ["aam"],
|
||||
"application/x-authorware-seg" : ["aas"],
|
||||
"application/x-bcpio" : ["bcpio"],
|
||||
"application/x-bittorrent" : ["torrent"],
|
||||
"application/x-blorb" : ["blb", "blorb"],
|
||||
"application/x-bzip" : ["bz"],
|
||||
"application/x-bzip2" : ["bz2", "boz"],
|
||||
"application/x-cbr" : ["cbr", "cba", "cbt", "cbz", "cb7"],
|
||||
"application/x-cdlink" : ["vcd"],
|
||||
"application/x-cfs-compressed" : ["cfs"],
|
||||
"application/x-chat" : ["chat"],
|
||||
"application/x-chess-pgn" : ["pgn"],
|
||||
"application/x-conference" : ["nsc"],
|
||||
"application/x-cpio" : ["cpio"],
|
||||
"application/x-csh" : ["csh"],
|
||||
"application/x-debian-package" : ["deb", "udeb"],
|
||||
"application/x-dgc-compressed" : ["dgc"],
|
||||
"application/x-director" : ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"],
|
||||
"application/x-doom" : ["wad"],
|
||||
"application/x-dtbncx+xml" : ["ncx"],
|
||||
"application/x-dtbook+xml" : ["dtb"],
|
||||
"application/x-dtbresource+xml" : ["res"],
|
||||
"application/x-dvi" : ["dvi"],
|
||||
"application/x-envoy" : ["evy"],
|
||||
"application/x-eva" : ["eva"],
|
||||
"application/x-font-bdf" : ["bdf"],
|
||||
"application/x-font-ghostscript" : ["gsf"],
|
||||
"application/x-font-linux-psf" : ["psf"],
|
||||
"application/x-font-otf" : ["otf"],
|
||||
"application/x-font-pcf" : ["pcf"],
|
||||
"application/x-font-snf" : ["snf"],
|
||||
"application/x-font-ttf" : ["ttf", "ttc"],
|
||||
"application/x-font-type1" : ["pfa", "pfb", "pfm", "afm"],
|
||||
"application/x-font-woff" : ["woff"],
|
||||
"application/x-freearc" : ["arc"],
|
||||
"application/x-futuresplash" : ["spl"],
|
||||
"application/x-gca-compressed" : ["gca"],
|
||||
"application/x-glulx" : ["ulx"],
|
||||
"application/x-gnumeric" : ["gnumeric"],
|
||||
"application/x-gramps-xml" : ["gramps"],
|
||||
"application/x-gtar" : ["gtar"],
|
||||
"application/x-hdf" : ["hdf"],
|
||||
"application/x-install-instructions" : ["install"],
|
||||
"application/x-iso9660-image" : ["iso"],
|
||||
"application/x-java-jnlp-file" : ["jnlp"],
|
||||
"application/x-latex" : ["latex"],
|
||||
"application/x-lzh-compressed" : ["lzh", "lha"],
|
||||
"application/x-mie" : ["mie"],
|
||||
"application/x-mobipocket-ebook" : ["prc", "mobi"],
|
||||
"application/x-ms-application" : ["application"],
|
||||
"application/x-ms-shortcut" : ["lnk"],
|
||||
"application/x-ms-wmd" : ["wmd"],
|
||||
"application/x-ms-wmz" : ["wmz"],
|
||||
"application/x-ms-xbap" : ["xbap"],
|
||||
"application/x-msaccess" : ["mdb"],
|
||||
"application/x-msbinder" : ["obd"],
|
||||
"application/x-mscardfile" : ["crd"],
|
||||
"application/x-msclip" : ["clp"],
|
||||
"application/x-msdownload" : ["exe", "dll", "com", "bat", "msi"],
|
||||
"application/x-msmediaview" : ["mvb", "m13", "m14"],
|
||||
"application/x-msmetafile" : ["wmf", "wmz", "emf", "emz"],
|
||||
"application/x-msmoney" : ["mny"],
|
||||
"application/x-mspublisher" : ["pub"],
|
||||
"application/x-msschedule" : ["scd"],
|
||||
"application/x-msterminal" : ["trm"],
|
||||
"application/x-mswrite" : ["wri"],
|
||||
"application/x-netcdf" : ["nc", "cdf"],
|
||||
"application/x-nzb" : ["nzb"],
|
||||
"application/x-pkcs12" : ["p12", "pfx"],
|
||||
"application/x-pkcs7-certificates" : ["p7b", "spc"],
|
||||
"application/x-pkcs7-certreqresp" : ["p7r"],
|
||||
"application/x-rar-compressed" : ["rar"],
|
||||
"application/x-research-info-systems" : ["ris"],
|
||||
"application/x-sh" : ["sh"],
|
||||
"application/x-shar" : ["shar"],
|
||||
"application/x-shockwave-flash" : ["swf"],
|
||||
"application/x-silverlight-app" : ["xap"],
|
||||
"application/x-sql" : ["sql"],
|
||||
"application/x-stuffit" : ["sit"],
|
||||
"application/x-stuffitx" : ["sitx"],
|
||||
"application/x-subrip" : ["srt"],
|
||||
"application/x-sv4cpio" : ["sv4cpio"],
|
||||
"application/x-sv4crc" : ["sv4crc"],
|
||||
"application/x-t3vm-image" : ["t3"],
|
||||
"application/x-tads" : ["gam"],
|
||||
"application/x-tar" : ["tar"],
|
||||
"application/x-tcl" : ["tcl"],
|
||||
"application/x-tex" : ["tex"],
|
||||
"application/x-tex-tfm" : ["tfm"],
|
||||
"application/x-texinfo" : ["texinfo", "texi"],
|
||||
"application/x-tgif" : ["obj"],
|
||||
"application/x-ustar" : ["ustar"],
|
||||
"application/x-wais-source" : ["src"],
|
||||
"application/x-x509-ca-cert" : ["der", "crt"],
|
||||
"application/x-xfig" : ["fig"],
|
||||
"application/x-xliff+xml" : ["xlf"],
|
||||
"application/x-xpinstall" : ["xpi"],
|
||||
"application/x-xz" : ["xz"],
|
||||
"application/x-zmachine" : ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"],
|
||||
"application/xaml+xml" : ["xaml"],
|
||||
"application/xcap-diff+xml" : ["xdf"],
|
||||
"application/xenc+xml" : ["xenc"],
|
||||
"application/xhtml+xml" : ["xhtml", "xht"],
|
||||
"application/xml" : ["xml", "xsl"],
|
||||
"application/xml-dtd" : ["dtd"],
|
||||
"application/xop+xml" : ["xop"],
|
||||
"application/xproc+xml" : ["xpl"],
|
||||
"application/xslt+xml" : ["xslt"],
|
||||
"application/xspf+xml" : ["xspf"],
|
||||
"application/xv+xml" : ["mxml", "xhvml", "xvml", "xvm"],
|
||||
"application/yang" : ["yang"],
|
||||
"application/yin+xml" : ["yin"],
|
||||
"application/zip" : ["zip"],
|
||||
"audio/adpcm" : ["adp"],
|
||||
"audio/basic" : ["au", "snd"],
|
||||
"audio/midi" : ["mid", "midi", "kar", "rmi"],
|
||||
"audio/mp4" : ["m4a", "mp4a"],
|
||||
"audio/mpeg" : ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"],
|
||||
"audio/ogg" : ["oga", "ogg", "spx"],
|
||||
"audio/s3m" : ["s3m"],
|
||||
"audio/silk" : ["sil"],
|
||||
"audio/vnd.dece.audio" : ["uva", "uvva"],
|
||||
"audio/vnd.digital-winds" : ["eol"],
|
||||
"audio/vnd.dra" : ["dra"],
|
||||
"audio/vnd.dts" : ["dts"],
|
||||
"audio/vnd.dts.hd" : ["dtshd"],
|
||||
"audio/vnd.lucent.voice" : ["lvp"],
|
||||
"audio/vnd.ms-playready.media.pya" : ["pya"],
|
||||
"audio/vnd.nuera.ecelp4800" : ["ecelp4800"],
|
||||
"audio/vnd.nuera.ecelp7470" : ["ecelp7470"],
|
||||
"audio/vnd.nuera.ecelp9600" : ["ecelp9600"],
|
||||
"audio/vnd.rip" : ["rip"],
|
||||
"audio/webm" : ["weba"],
|
||||
"audio/x-aac" : ["aac"],
|
||||
"audio/x-aiff" : ["aif", "aiff", "aifc"],
|
||||
"audio/x-caf" : ["caf"],
|
||||
"audio/x-flac" : ["flac"],
|
||||
"audio/x-matroska" : ["mka"],
|
||||
"audio/x-mpegurl" : ["m3u"],
|
||||
"audio/x-ms-wax" : ["wax"],
|
||||
"audio/x-ms-wma" : ["wma"],
|
||||
"audio/x-pn-realaudio" : ["ram", "ra"],
|
||||
"audio/x-pn-realaudio-plugin" : ["rmp"],
|
||||
"audio/x-wav" : ["wav"],
|
||||
"audio/xm" : ["xm"],
|
||||
"chemical/x-cdx" : ["cdx"],
|
||||
"chemical/x-cif" : ["cif"],
|
||||
"chemical/x-cmdf" : ["cmdf"],
|
||||
"chemical/x-cml" : ["cml"],
|
||||
"chemical/x-csml" : ["csml"],
|
||||
"chemical/x-xyz" : ["xyz"],
|
||||
"image/bmp" : ["bmp"],
|
||||
"image/cgm" : ["cgm"],
|
||||
"image/g3fax" : ["g3"],
|
||||
"image/gif" : ["gif"],
|
||||
"image/ief" : ["ief"],
|
||||
"image/jpeg" : ["jpeg", "jpg", "jpe"],
|
||||
"image/ktx" : ["ktx"],
|
||||
"image/png" : ["png"],
|
||||
"image/prs.btif" : ["btif"],
|
||||
"image/sgi" : ["sgi"],
|
||||
"image/svg+xml" : ["svg", "svgz"],
|
||||
"image/tiff" : ["tiff", "tif"],
|
||||
"image/vnd.adobe.photoshop" : ["psd"],
|
||||
"image/vnd.dece.graphic" : ["uvi", "uvvi", "uvg", "uvvg"],
|
||||
"image/vnd.dvb.subtitle" : ["sub"],
|
||||
"image/vnd.djvu" : ["djvu", "djv"],
|
||||
"image/vnd.dwg" : ["dwg"],
|
||||
"image/vnd.dxf" : ["dxf"],
|
||||
"image/vnd.fastbidsheet" : ["fbs"],
|
||||
"image/vnd.fpx" : ["fpx"],
|
||||
"image/vnd.fst" : ["fst"],
|
||||
"image/vnd.fujixerox.edmics-mmr" : ["mmr"],
|
||||
"image/vnd.fujixerox.edmics-rlc" : ["rlc"],
|
||||
"image/vnd.ms-modi" : ["mdi"],
|
||||
"image/vnd.ms-photo" : ["wdp"],
|
||||
"image/vnd.net-fpx" : ["npx"],
|
||||
"image/vnd.wap.wbmp" : ["wbmp"],
|
||||
"image/vnd.xiff" : ["xif"],
|
||||
"image/webp" : ["webp"],
|
||||
"image/x-3ds" : ["3ds"],
|
||||
"image/x-cmu-raster" : ["ras"],
|
||||
"image/x-cmx" : ["cmx"],
|
||||
"image/x-freehand" : ["fh", "fhc", "fh4", "fh5", "fh7"],
|
||||
"image/x-icon" : ["ico"],
|
||||
"image/x-mrsid-image" : ["sid"],
|
||||
"image/x-pcx" : ["pcx"],
|
||||
"image/x-pict" : ["pic", "pct"],
|
||||
"image/x-portable-anymap" : ["pnm"],
|
||||
"image/x-portable-bitmap" : ["pbm"],
|
||||
"image/x-portable-graymap" : ["pgm"],
|
||||
"image/x-portable-pixmap" : ["ppm"],
|
||||
"image/x-rgb" : ["rgb"],
|
||||
"image/x-tga" : ["tga"],
|
||||
"image/x-xbitmap" : ["xbm"],
|
||||
"image/x-xpixmap" : ["xpm"],
|
||||
"image/x-xwindowdump" : ["xwd"],
|
||||
"message/rfc822" : ["eml", "mime"],
|
||||
"model/iges" : ["igs", "iges"],
|
||||
"model/mesh" : ["msh", "mesh", "silo"],
|
||||
"model/vnd.collada+xml" : ["dae"],
|
||||
"model/vnd.dwf" : ["dwf"],
|
||||
"model/vnd.gdl" : ["gdl"],
|
||||
"model/vnd.gtw" : ["gtw"],
|
||||
"model/vnd.mts" : ["mts"],
|
||||
"model/vnd.vtu" : ["vtu"],
|
||||
"model/vrml" : ["wrl", "vrml"],
|
||||
"model/x3d+binary" : ["x3db", "x3dbz"],
|
||||
"model/x3d+vrml" : ["x3dv", "x3dvz"],
|
||||
"model/x3d+xml" : ["x3d", "x3dz"],
|
||||
"text/cache-manifest" : ["appcache"],
|
||||
"text/calendar" : ["ics", "ifb"],
|
||||
"text/css" : ["css"],
|
||||
"text/csv" : ["csv"],
|
||||
"text/html" : ["html", "htm"],
|
||||
"text/n3" : ["n3"],
|
||||
"text/plain" : ["txt", "text", "conf", "def", "list", "log", "in"],
|
||||
"text/prs.lines.tag" : ["dsc"],
|
||||
"text/richtext" : ["rtx"],
|
||||
"text/sgml" : ["sgml", "sgm"],
|
||||
"text/tab-separated-values" : ["tsv"],
|
||||
"text/troff" : ["t", "tr", "roff", "man", "me", "ms"],
|
||||
"text/turtle" : ["ttl"],
|
||||
"text/uri-list" : ["uri", "uris", "urls"],
|
||||
"text/vcard" : ["vcard"],
|
||||
"text/vnd.curl" : ["curl"],
|
||||
"text/vnd.curl.dcurl" : ["dcurl"],
|
||||
"text/vnd.curl.scurl" : ["scurl"],
|
||||
"text/vnd.curl.mcurl" : ["mcurl"],
|
||||
"text/vnd.dvb.subtitle" : ["sub"],
|
||||
"text/vnd.fly" : ["fly"],
|
||||
"text/vnd.fmi.flexstor" : ["flx"],
|
||||
"text/vnd.graphviz" : ["gv"],
|
||||
"text/vnd.in3d.3dml" : ["3dml"],
|
||||
"text/vnd.in3d.spot" : ["spot"],
|
||||
"text/vnd.sun.j2me.app-descriptor" : ["jad"],
|
||||
"text/vnd.wap.wml" : ["wml"],
|
||||
"text/vnd.wap.wmlscript" : ["wmls"],
|
||||
"text/x-asm" : ["s", "asm"],
|
||||
"text/x-c" : ["c", "cc", "cxx", "cpp", "h", "hh", "dic"],
|
||||
"text/x-fortran" : ["f", "for", "f77", "f90"],
|
||||
"text/x-java-source" : ["java"],
|
||||
"text/x-opml" : ["opml"],
|
||||
"text/x-pascal" : ["p", "pas"],
|
||||
"text/x-nfo" : ["nfo"],
|
||||
"text/x-setext" : ["etx"],
|
||||
"text/x-sfv" : ["sfv"],
|
||||
"text/x-uuencode" : ["uu"],
|
||||
"text/x-vcalendar" : ["vcs"],
|
||||
"text/x-vcard" : ["vcf"],
|
||||
"video/3gpp" : ["3gp"],
|
||||
"video/3gpp2" : ["3g2"],
|
||||
"video/h261" : ["h261"],
|
||||
"video/h263" : ["h263"],
|
||||
"video/h264" : ["h264"],
|
||||
"video/jpeg" : ["jpgv"],
|
||||
"video/jpm" : ["jpm", "jpgm"],
|
||||
"video/mj2" : ["mj2", "mjp2"],
|
||||
"video/mp4" : ["mp4", "mp4v", "mpg4"],
|
||||
"video/mpeg" : ["mpeg", "mpg", "mpe", "m1v", "m2v"],
|
||||
"video/ogg" : ["ogv"],
|
||||
"video/quicktime" : ["qt", "mov"],
|
||||
"video/vnd.dece.hd" : ["uvh", "uvvh"],
|
||||
"video/vnd.dece.mobile" : ["uvm", "uvvm"],
|
||||
"video/vnd.dece.pd" : ["uvp", "uvvp"],
|
||||
"video/vnd.dece.sd" : ["uvs", "uvvs"],
|
||||
"video/vnd.dece.video" : ["uvv", "uvvv"],
|
||||
"video/vnd.dvb.file" : ["dvb"],
|
||||
"video/vnd.fvt" : ["fvt"],
|
||||
"video/vnd.mpegurl" : ["mxu", "m4u"],
|
||||
"video/vnd.ms-playready.media.pyv" : ["pyv"],
|
||||
"video/vnd.uvvu.mp4" : ["uvu", "uvvu"],
|
||||
"video/vnd.vivo" : ["viv"],
|
||||
"video/webm" : ["webm"],
|
||||
"video/x-f4v" : ["f4v"],
|
||||
"video/x-fli" : ["fli"],
|
||||
"video/x-flv" : ["flv"],
|
||||
"video/x-m4v" : ["m4v"],
|
||||
"video/x-matroska" : ["mkv", "mk3d", "mks"],
|
||||
"video/x-mng" : ["mng"],
|
||||
"video/x-ms-asf" : ["asf", "asx"],
|
||||
"video/x-ms-vob" : ["vob"],
|
||||
"video/x-ms-wm" : ["wm"],
|
||||
"video/x-ms-wmv" : ["wmv"],
|
||||
"video/x-ms-wmx" : ["wmx"],
|
||||
"video/x-ms-wvx" : ["wvx"],
|
||||
"video/x-msvideo" : ["avi"],
|
||||
"video/x-sgi-movie" : ["movie"],
|
||||
"video/x-smv" : ["smv"],
|
||||
"x-conference/x-cooltalk" : ["ice"]
|
||||
}
|
2
Public/robots.txt
Executable file
@ -0,0 +1,2 @@
|
||||
User-agent: *
|
||||
Allow: /
|
BIN
Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.scssc
Executable file
329
Public/scss/WMarkDown.base.scss
Executable file
@ -0,0 +1,329 @@
|
||||
.wmarkdown{
|
||||
|
||||
display : block;
|
||||
position : relative;
|
||||
top : 0em;
|
||||
left : 0em;
|
||||
width : 100%;
|
||||
height : 100%;
|
||||
overflow : hidden;
|
||||
|
||||
&,& *{font-family : $font-family;};
|
||||
|
||||
[data-visible=false]{display : none;}
|
||||
|
||||
a[href],button,[type=button],[type=submit],[type=reset],[onclick]{
|
||||
color : $color-primary;
|
||||
cursor : pointer;
|
||||
text-decoration : none;
|
||||
transition-duration : $transition-out;
|
||||
&:hover{
|
||||
color : $color-secondary;
|
||||
transition-duration : $transition-in;
|
||||
}
|
||||
}
|
||||
a[href],[onclick]{transition-property : color;}
|
||||
button,[type=button],[type=submit],[type=reset]{
|
||||
background-color : mix($color-back, $color-primary, 90%);
|
||||
border : $border-size solid $color-primary;
|
||||
border-radius : $border-radius;
|
||||
transition-property : color,background-color,border-color;
|
||||
&:hover{
|
||||
background-color : mix($color-back, $color-secondary, 90%);
|
||||
border-color : $color-secondary;
|
||||
}
|
||||
}
|
||||
|
||||
[data-icon]::before{
|
||||
margin-right : .4em;
|
||||
font-family : $font-icon;
|
||||
}
|
||||
[data-deployed]>[data-icon]::before{
|
||||
display : inline-block;
|
||||
width : 1em;
|
||||
text-align : center;
|
||||
}
|
||||
|
||||
.groups,.buttons{
|
||||
display : block;
|
||||
&>*{
|
||||
float : left;
|
||||
border-radius : 0em;
|
||||
}
|
||||
&>:first-child{border-radius : $border-radius 0em 0em $border-radius;}
|
||||
&>:last-child{border-radius : 0em $border-radius $border-radius 0em;}
|
||||
}
|
||||
|
||||
header,&>.body,footer,main{
|
||||
position : absolute;
|
||||
left : 0em;
|
||||
width : 100%;
|
||||
overflow : hidden;
|
||||
box-sizing : border-box;
|
||||
}
|
||||
header,footer{
|
||||
color : $color-back;
|
||||
background-color : $color-fore;
|
||||
}
|
||||
|
||||
header{
|
||||
top : 0em;
|
||||
height : $header-height;
|
||||
z-index : 30;
|
||||
.logo{
|
||||
height : $header-height * .4;
|
||||
margin : .1em .5em;
|
||||
font-weight : 900;
|
||||
a{
|
||||
display : inline-block;
|
||||
height : 100%;
|
||||
&>span{vertical-align : middle;}
|
||||
}
|
||||
// .image{display : none;}
|
||||
.text{
|
||||
display : inline-block;
|
||||
margin : .3em 0em;
|
||||
}
|
||||
span[style]{display : none;}
|
||||
.image{
|
||||
display : inline-block;
|
||||
height : 100%;
|
||||
&[data-status=loading],&[data-status=error]{display : none;}
|
||||
}
|
||||
img{
|
||||
width : auto;
|
||||
height : 100%;
|
||||
}
|
||||
}
|
||||
.main-menu{
|
||||
position : absolute;
|
||||
top : 2em;
|
||||
left : 50%;
|
||||
width : 40em;
|
||||
margin-left : -20em;
|
||||
text-align : center;
|
||||
ul{
|
||||
margin : 0em;
|
||||
padding : 0em;
|
||||
list-style-type : none;
|
||||
}
|
||||
li{
|
||||
display : inline-block;
|
||||
margin : 0em 1em;
|
||||
white-space : nowrap;
|
||||
}
|
||||
}
|
||||
.wmd-options{
|
||||
display : none;
|
||||
position : absolute;
|
||||
top : 0em;
|
||||
right : 0em;
|
||||
margin : .2em .8em;
|
||||
.multiplier{
|
||||
display : inline-block;
|
||||
width : 100px;
|
||||
height : 20px;
|
||||
background-color : #88F;
|
||||
}
|
||||
}
|
||||
.view-menu{
|
||||
button{
|
||||
transition-property : color border-color background-color opacity;
|
||||
[data-icon]::before{margin : 0em;}
|
||||
[data-i18n]{display : none;}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&>.body,main{
|
||||
top : $header-height;
|
||||
bottom : $footer-height;
|
||||
color : $color-fore;
|
||||
background-color : $color-back;
|
||||
z-index : 10;
|
||||
&>.headers-menu,&>.content,&>.files{
|
||||
position : absolute;
|
||||
top : $margin-boxes;
|
||||
bottom : $margin-boxes;
|
||||
box-sizing : border-box;
|
||||
}
|
||||
&>.content>div{padding : 0em $content-internal-margin;}
|
||||
&>.headers-menu,&>.files{
|
||||
nav{
|
||||
position : absolute;
|
||||
top : 0em;
|
||||
left : 0em;
|
||||
width : 100%;
|
||||
height : 100%;
|
||||
padding : 1em;
|
||||
overflow : auto;
|
||||
box-sizing : border-box;
|
||||
}
|
||||
ul{
|
||||
margin : 0em;
|
||||
padding : 0em;
|
||||
list-style-type : none;
|
||||
@for $level from 0 through 6 {[data-level='#{$level + 1}']{margin-left : $menu-margin-level * $level;}}
|
||||
}
|
||||
li{white-space : nowrap;}
|
||||
.menu-buttons{
|
||||
position : absolute;
|
||||
top : 0em;
|
||||
margin : .2em;
|
||||
margin-top : -1.8em;
|
||||
[data-icon]::before{margin : 0em;}
|
||||
span[data-i18n]{display : none;}
|
||||
}
|
||||
}
|
||||
&>.headers-menu{
|
||||
left : $margin-boxes;
|
||||
width : $menu-headers-width;
|
||||
.menu-buttons{left : $margin-boxes;}
|
||||
}
|
||||
&[data-headers-menu-deployed=false]{
|
||||
&>.content{left : $content-margin;}
|
||||
.headers-menu{
|
||||
width : auto;
|
||||
padding-left : 3em;
|
||||
nav{display : none;}
|
||||
button{
|
||||
&[data-i18n=show]{display : inline-block;}
|
||||
&[data-i18n=hide]{display : none;}
|
||||
}
|
||||
}
|
||||
}
|
||||
&[data-files-menu-deployed=false]{
|
||||
&>.content{right : $content-margin;}
|
||||
.files{
|
||||
width : auto;
|
||||
padding-right : 3em;
|
||||
nav{display : none;}
|
||||
button{
|
||||
&[data-i18n=show]{display : inline-block;}
|
||||
&[data-i18n=hide]{display : none;}
|
||||
}
|
||||
}
|
||||
}
|
||||
&[data-headers-menu-deployed=true] .headers-menu button{
|
||||
&[data-i18n=show]{display : none;}
|
||||
&[data-i18n=hide]{display : inline-block;}
|
||||
}
|
||||
&[data-files-menu-deployed=true] .files button{
|
||||
&[data-i18n=show]{display : none;}
|
||||
&[data-i18n=hide]{display : inline-block;}
|
||||
}
|
||||
&>.content{
|
||||
top : 0em;
|
||||
left : $menu-headers-width + $content-margin;
|
||||
right : $menu-files-width + $content-margin;
|
||||
bottom : 0em;
|
||||
margin : 0em (2 * $margin-boxes);
|
||||
padding : 1em 0em;
|
||||
overflow : auto;
|
||||
legend{display : none;}
|
||||
.padding-bottom{height : 1em;}
|
||||
}
|
||||
&>.files{
|
||||
right : $margin-boxes;
|
||||
width : $menu-files-width;
|
||||
.menu-buttons{right : $margin-boxes;}
|
||||
}
|
||||
&>fieldset{
|
||||
border : none;
|
||||
&>legend{
|
||||
display : block;
|
||||
width : 100%;
|
||||
border-bottom : (1.4 * $border-size) dotted $color-grey;
|
||||
color : $color-fore;
|
||||
font-weight : 900;
|
||||
font-size : 1.2em;
|
||||
text-align : center;
|
||||
box-sizing : border-box;
|
||||
}
|
||||
}
|
||||
[data-parent-deployed=false]{display : none;}
|
||||
}
|
||||
|
||||
footer{
|
||||
bottom : 0em;
|
||||
height : $footer-height;
|
||||
z-index : 20;
|
||||
.license{
|
||||
display : block;
|
||||
width : 100%;
|
||||
text-align : center;
|
||||
font-size : .75em;
|
||||
font-weight : 900;
|
||||
img{
|
||||
height : 1.1em;
|
||||
margin-left : .4em;
|
||||
}
|
||||
&>*{vertical-align : middle;}
|
||||
}
|
||||
}
|
||||
|
||||
&[data-view=menu] .view-menu{
|
||||
button[data-i18n=menu]{opacity : 1;}
|
||||
button[data-i18n=content]{opacity : .5;}
|
||||
button[data-i18n=files]{opacity : .5;}
|
||||
}
|
||||
&[data-view=content] .view-menu{
|
||||
button[data-i18n=menu]{opacity : .5;}
|
||||
button[data-i18n=content]{opacity : 1;}
|
||||
button[data-i18n=files]{opacity : .5;}
|
||||
}
|
||||
&[data-view=files] .view-menu{
|
||||
button[data-i18n=menu]{opacity : .5;}
|
||||
button[data-i18n=content]{opacity : .5;}
|
||||
button[data-i18n=files]{opacity : 1;}
|
||||
}
|
||||
|
||||
// Responsive.
|
||||
&[data-display-view=pc]{
|
||||
.view-menu{display : none;}
|
||||
}
|
||||
&[data-display-view=mobile]{
|
||||
.view-menu{
|
||||
display : block;
|
||||
position : absolute;
|
||||
bottom : 0em;
|
||||
right : 0em;
|
||||
margin : .3em 1em;
|
||||
}
|
||||
.headers-menu,.files{.menu-buttons{display : none;}}
|
||||
fieldset{&.headers-menu,&.content,&.files{
|
||||
top : 0em;
|
||||
left : 0em;
|
||||
right : auto;
|
||||
bottom : auto;
|
||||
margin : 0em;
|
||||
padding : 0em;
|
||||
width : 100%;
|
||||
height : 100%;
|
||||
}}
|
||||
&[data-view=menu]{
|
||||
fieldset.headers-menu{display : block;}
|
||||
fieldset.content{display : none;}
|
||||
fieldset.files{display : none;}
|
||||
}
|
||||
&[data-view=content]{
|
||||
fieldset.headers-menu{display : none;}
|
||||
fieldset.content{display : block;}
|
||||
fieldset.files{display : none;}
|
||||
}
|
||||
&[data-view=files]{
|
||||
fieldset.headers-menu{display : none;}
|
||||
fieldset.content{display : none;}
|
||||
fieldset.files{display : block;}
|
||||
}
|
||||
}
|
||||
&[data-screen-size~="3"]{
|
||||
.main-menu a [data-i18n]{display : none;}
|
||||
header .logo .text{font-size : .6em;}
|
||||
}
|
||||
&[data-screen-size~="4"]{
|
||||
header .logo .text{display : none;}
|
||||
.main-menu li{margin : 0em .3em;}
|
||||
}
|
||||
|
||||
}
|
487
Public/scss/WMarkDown.components.scss
Executable file
@ -0,0 +1,487 @@
|
||||
.wmarkdown{
|
||||
|
||||
// Checkbox y Radio Buttons.
|
||||
label{&.checkbox,&.radio,&.tick{
|
||||
display : inline-block;
|
||||
cursor : pointer;
|
||||
input{display : none;}
|
||||
[data-icon]::before{margin : 0em;}
|
||||
}}
|
||||
|
||||
// CodeBlocks.
|
||||
.code-block{
|
||||
display : block;
|
||||
position : relative;
|
||||
width : 80%;
|
||||
height : auto;
|
||||
margin-left : 10%;
|
||||
font-size : .8em;
|
||||
overflow : hidden;
|
||||
box-sizing : border-box;
|
||||
&[data-special=false]{max-height : 35em;}
|
||||
&>ul{
|
||||
position : absolute;
|
||||
top : 0em;
|
||||
left : 0em;
|
||||
margin : 0em;
|
||||
padding : 0em;
|
||||
white-space : normal;
|
||||
li{
|
||||
display : inline-block;
|
||||
margin : 0em .2em;
|
||||
padding : .2em .8em;
|
||||
background-color : mix($color-grey, $color-back, 20%);
|
||||
vertical-align : middle;
|
||||
border : $border-size solid $color-grey;
|
||||
border-radius : .4em;
|
||||
[data-i18n]{
|
||||
display : none;
|
||||
font-weight : 900;
|
||||
&::after{
|
||||
content : ":";
|
||||
margin-right : .4em;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.lines{
|
||||
position : relative;
|
||||
top : 0em;
|
||||
left : 0em;
|
||||
overflow : hidden;
|
||||
ol{
|
||||
width : 100%;
|
||||
margin : 0em;
|
||||
margin-top : -.3em;
|
||||
margin-left : 4em;
|
||||
padding : 0em;
|
||||
box-sizing : border-box;
|
||||
li{
|
||||
&:nth-child(2n){background-color : mix(#FFF, $color-back, 50%);}
|
||||
&:nth-child(2n + 1){background-color : mix(#FFF, $color-back, 20%);}
|
||||
}
|
||||
}
|
||||
}
|
||||
.code-box{
|
||||
position : absolute;
|
||||
top : 3.2em;
|
||||
left : 4em;
|
||||
right : 0em;
|
||||
max-height : 31em;
|
||||
overflow : auto;
|
||||
}
|
||||
&>div{&,& *{font-family: $font-mono;}}
|
||||
}
|
||||
|
||||
.header-file-note{
|
||||
margin-top : 2em;
|
||||
font-size : .85em;
|
||||
color : $color-grey;
|
||||
@for $i from 1 through 6{&+h#{$i}{margin-top : 0em;}}
|
||||
}
|
||||
|
||||
.data-dictionary-item{
|
||||
display : inline-block;
|
||||
position : relative;
|
||||
border-bottom : $border-size dotted;
|
||||
cursor : help;
|
||||
&[data-left=true]>.box{
|
||||
left : auto;
|
||||
right : 0em;
|
||||
}
|
||||
&[data-left=false]>.box{
|
||||
left : 0em;
|
||||
right : auto;
|
||||
}
|
||||
&[data-top=false]>.box{
|
||||
top : auto;
|
||||
bottom : 1em;
|
||||
}
|
||||
&[data-top=true]>.box{
|
||||
top : 1em;
|
||||
bottom : auto;
|
||||
}
|
||||
&[data-show=false]>.box{display : none;}
|
||||
.box{
|
||||
display : block;
|
||||
position : absolute;
|
||||
width : $dictionary-item-width;
|
||||
height : auto;
|
||||
max-height : $dictionary-item-height;
|
||||
padding : .5em;
|
||||
color : $color-fore;
|
||||
font-weight : 400;
|
||||
border : $border-size solid $color-fore;
|
||||
background-color : mix(rgba(0, 0, 0, 0), $color-back, 5%);
|
||||
overflow : hidden;
|
||||
box-sizing : border-box;
|
||||
border-radius : 1em;
|
||||
box-shadow : .1em .1em .2em $color-fore;
|
||||
&>span+span{display : block;}
|
||||
}
|
||||
.result{display : none;}
|
||||
.description{
|
||||
height : $dictionary-item-height - $dictionary-link-size - 2em;
|
||||
text-align : center;
|
||||
overflow : auto;
|
||||
.paragraph{
|
||||
display : block;
|
||||
&+span{margin-top : 1em;}
|
||||
}
|
||||
}
|
||||
.links{
|
||||
height : $dictionary-link-size + 1.1em;
|
||||
margin : .5em 0em;
|
||||
text-align : center;
|
||||
white-space : nowrap;
|
||||
overflow-x : auto;
|
||||
overflow-y : hidden;
|
||||
&>a{
|
||||
display : inline-block;
|
||||
width : $dictionary-link-size;
|
||||
height : $dictionary-link-size;
|
||||
margin : 0em .5em;
|
||||
border : $border-size solid $color-fore;
|
||||
background-color : #FFF;
|
||||
background-position : center center;
|
||||
background-size : cover;
|
||||
box-sizing : border-box;
|
||||
border-radius : $dictionary-link-size * .5;
|
||||
}
|
||||
}
|
||||
|
||||
[data-site=wikipedia_org],[data-site=es_wikipedia_org],[data-site=en_wikipedia_org]{background-image : url('https://wikipedia.org/static/apple-touch/wikipedia.png');}
|
||||
[data-site=git_a3do_net],[data-site=git_k3y_pw]{background-image : url('https://about.gitlab.com/ico/favicon-192x192.png');}
|
||||
[data-site=youtube_com],[data-site=www_youtube_com]{background-image : url('https://www.youtube.com/s/desktop/c20c1e6c/img/favicon_144.png');}
|
||||
[data-site=www_mediawiki_org]{background-image : url('https://www.mediawiki.org/static/apple-touch/mediawiki.png');}
|
||||
[data-site=github_com]{background-image : url('https://github.com/fluidicon.png');}
|
||||
|
||||
}
|
||||
|
||||
.data-dictionary-table{
|
||||
display : block;
|
||||
position : relative;
|
||||
fieldset{border : none;}
|
||||
legend,tfoot,[data-field=i],[data-field=patterns],[data-field=results],.checkbox>[data-i18n]{display : none;}
|
||||
[data-field=urls] li{
|
||||
word-break : break-all;
|
||||
word-wrap : break-word;
|
||||
}
|
||||
.search{
|
||||
display : table;
|
||||
width : 100%;
|
||||
box-sizing : border-box;
|
||||
&>*{
|
||||
display : table-cell;
|
||||
white-space : nowrap;
|
||||
}
|
||||
.field{&,input{
|
||||
width : 100%;
|
||||
box-sizing : border-box;
|
||||
}}
|
||||
&>label{
|
||||
font-weight : 900;
|
||||
&::after{
|
||||
content : ":";
|
||||
margin-right : .4em;
|
||||
}
|
||||
}
|
||||
}
|
||||
th,td{
|
||||
width : 40%;
|
||||
&[data-field=words]{width : 20%;}
|
||||
}
|
||||
td{padding : 1em .4em;}
|
||||
thead,tbody{
|
||||
display : block;
|
||||
tr:not([data-visible=false]){display : table;}
|
||||
&,tr{width : 100%;}
|
||||
}
|
||||
tbody{
|
||||
max-height : 30em;
|
||||
overflow : auto;
|
||||
&>tr{
|
||||
&:nth-child(2n + 1)>td{background-color : mix(#FFF, $color-back, 50%);}
|
||||
&:nth-child(2n)>td{background-color : mix(#FFF, $color-back, 20%);}
|
||||
&:hover>td{background-color : mix(#FFF, $color-back, 75%);}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.multimedia-box{
|
||||
display : inline-block;
|
||||
position : relative;
|
||||
width : 100%;
|
||||
text-align : center;
|
||||
// [data-type]>a,.image-style{display : none;}
|
||||
[data-type=image],[data-type=images]{
|
||||
img,a{display : none;}
|
||||
.image-style{
|
||||
display : inline-block;
|
||||
width : 100%;
|
||||
height : 100%;
|
||||
background-position : center center;
|
||||
background-repeat : no-repeat;
|
||||
background-size : contain;
|
||||
}
|
||||
}
|
||||
video{
|
||||
width : auto;
|
||||
width : 100%;
|
||||
}
|
||||
[data-type=audio]{
|
||||
min-width : 10em;
|
||||
&>.multimedia-box[data-multiple=false]>span{
|
||||
left : 0em;
|
||||
width : 100%;
|
||||
}
|
||||
a{display : none;}
|
||||
}
|
||||
audio{
|
||||
position : absolute;
|
||||
top : 100%;
|
||||
left : 10%;
|
||||
width : 80%;
|
||||
margin-top : -6em;
|
||||
box-sizing : border-box;
|
||||
z-index : 20;
|
||||
opacity : .7;
|
||||
}
|
||||
.text{
|
||||
position : absolute;
|
||||
bottom : 0em;
|
||||
left : 0em;
|
||||
width : 100%;
|
||||
margin : .5em;
|
||||
text-align : center;
|
||||
text-shadow :
|
||||
0em 0em .1em $color-fore,
|
||||
0em 0em .075em $color-fore,
|
||||
0em 0em .05em $color-back,
|
||||
0em 0em .025em $color-back;
|
||||
}
|
||||
[data-type]{
|
||||
display : inline-block;
|
||||
position : relative;
|
||||
margin : 1em;
|
||||
}
|
||||
&[data-multiple=true]{
|
||||
&>span{
|
||||
width : 25%;
|
||||
height : 10em;
|
||||
}
|
||||
}
|
||||
&[data-multiple=false]{
|
||||
&>span{
|
||||
width : 80%;
|
||||
height : 25em;
|
||||
text-align : center;
|
||||
}
|
||||
}
|
||||
&[data-multiple]>[data-links-count]{height : auto;}
|
||||
&[data-multiple] [data-platform]{
|
||||
display : inline-block;
|
||||
position : relative;
|
||||
width : 20em;
|
||||
height : 10em;
|
||||
margin : .5em;
|
||||
}
|
||||
.multimedia-box{[data-type]{
|
||||
position : absolute;
|
||||
top : 0em;
|
||||
left : 0em;
|
||||
width : 100%;
|
||||
height : 100%;
|
||||
margin : 0em;
|
||||
}}
|
||||
[data-platform],&[data-multiple=true]>[data-type=audio]>.multimedia-box,[data-platform]{
|
||||
width : 20em;
|
||||
height : 10em;
|
||||
}
|
||||
[data-links-count='1']>[data-platform],&[data-multiple=false]>[data-type=audio]>.multimedia-box{
|
||||
width : 80%;
|
||||
height : 25em;
|
||||
}
|
||||
}
|
||||
|
||||
.links-group{
|
||||
text-align : center;
|
||||
a{
|
||||
display : inline-block;
|
||||
position : relative;
|
||||
width : 6em;
|
||||
height : 7.5em;
|
||||
margin : 1em;
|
||||
overflow : hidden;
|
||||
opacity : .7;
|
||||
transition-duration : $transition-out;
|
||||
transition-property : color,opacity;
|
||||
img{display : none;}
|
||||
&:hover{
|
||||
opacity : 1;
|
||||
transition-duration : $transition-in;
|
||||
}
|
||||
[data-status]{
|
||||
display : block;
|
||||
position : absolute;
|
||||
top : 0em;
|
||||
left : 0em;
|
||||
width : 6em;
|
||||
height : 6em;
|
||||
}
|
||||
.text{
|
||||
display : block;
|
||||
position : absolute;
|
||||
left : 0em;
|
||||
bottom : 0em;
|
||||
width : 100%;
|
||||
margin : 0em;
|
||||
text-align : center;
|
||||
}
|
||||
.image-style{
|
||||
display : inline-block;
|
||||
width : 100%;
|
||||
height : 100%;
|
||||
background-position : center center;
|
||||
background-repeat : no-repeat;
|
||||
background-size : contain;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.special-text-i .text{font-weight : 900;}
|
||||
|
||||
.quote{
|
||||
padding : 1em;
|
||||
border : .1em dotted $color-grey;
|
||||
}
|
||||
|
||||
.wdoc{
|
||||
position : relative;
|
||||
border : .1.5em solid $color-grey;
|
||||
background-color : mix(#FFF, $color-back, 50%);
|
||||
border-radius : .4em;
|
||||
&[data-language]>legend{
|
||||
display : block;
|
||||
padding : 0em .4em;
|
||||
.name{font-weight : 900;}
|
||||
.language{
|
||||
margin-left : .4em;
|
||||
&::before{content : "[";}
|
||||
&::after{content : "]";}
|
||||
}
|
||||
}
|
||||
.structure{
|
||||
.return-type{
|
||||
margin-right : .4em;
|
||||
&::before{content : "[";}
|
||||
&::after{content : "]";}
|
||||
}
|
||||
.attributes{
|
||||
display : inline-block;
|
||||
margin : 0em;
|
||||
padding : 0em;
|
||||
list-style-type : none;
|
||||
&::before{content : "(";}
|
||||
&::after{content : ")";}
|
||||
.attribute-status,.attribute-description,.return{display : none;}
|
||||
.attribute-type{
|
||||
margin-left : .4em;
|
||||
span{font-style : italic;}
|
||||
&::before{
|
||||
content : "[";
|
||||
margin-right : .2em;
|
||||
}
|
||||
&::after{
|
||||
content : "]";
|
||||
margin-left : .2em;
|
||||
}
|
||||
}
|
||||
}
|
||||
.attribute+span::before{
|
||||
content : ",";
|
||||
margin-right : .4em;
|
||||
}
|
||||
.attribute[data-status=optional]::after{content : "?";}
|
||||
}
|
||||
.attribute-type>span+span::before{
|
||||
content : ",";
|
||||
margin-right : .4em;
|
||||
}
|
||||
.attributes-data{
|
||||
display : table;
|
||||
width : 100%;
|
||||
margin-top : 1em;
|
||||
box-sizing : border-box;
|
||||
&>span{
|
||||
display : table-row;
|
||||
&>span{display : table-cell;}
|
||||
}
|
||||
&>.return{font-style : italic;}
|
||||
}
|
||||
&>.data{
|
||||
margin : 0em;
|
||||
margin-top : 1em;
|
||||
padding : 0em;
|
||||
list-style-type : none;
|
||||
li{
|
||||
padding-bottom : .1em;
|
||||
&:hover{
|
||||
padding-bottom : 0em;
|
||||
border-bottom : .1em dotted $color-grey;
|
||||
}
|
||||
&>:first-child{
|
||||
display : inline-block;
|
||||
width : 10em;
|
||||
height : 1.2em;
|
||||
overflow : hidden;
|
||||
&::before{content : "@";}
|
||||
}
|
||||
&>:last-child{margin-left : .4em;}
|
||||
}
|
||||
}
|
||||
div.attributes-data>*{
|
||||
&>*{padding-bottom : .1em;}
|
||||
&:hover>*{
|
||||
padding-bottom : 0em;
|
||||
border-bottom : .1em dotted $color-grey;
|
||||
}
|
||||
}
|
||||
[data-with-value=false]{display : none;}
|
||||
.deprecated{
|
||||
font-weight : 900;
|
||||
&::before{content : "(";}
|
||||
&::after{
|
||||
content : ")";
|
||||
margin-right : .4em;
|
||||
}
|
||||
}
|
||||
&[data-deprecated=true]{
|
||||
opacity : .6;
|
||||
transition-duration : $transition-out;
|
||||
transition-property : opacity;
|
||||
&:hover{
|
||||
opacity : 1;
|
||||
transition-duration : $transition-in;
|
||||
}
|
||||
}
|
||||
&+.wdoc{margin-top : 1em;}
|
||||
}
|
||||
|
||||
.wmd-table{
|
||||
width : 80%;
|
||||
margin-left : 10%;
|
||||
border-collapse : collapse;
|
||||
&{border : .1em solid $color-fore;}
|
||||
td,th{border : .1em solid $color-grey;}
|
||||
tr td{
|
||||
transition-duration : $transition-out;
|
||||
transition-property : background-color;
|
||||
}
|
||||
tr:hover td{transition-duration : $transition-in;}
|
||||
tbody>tr:nth-child(2n)>td{background-color : mix($color-back, #FFF, 80%);}
|
||||
tbody>tr:nth-child(2n + 1)>td{background-color : mix($color-back, #000, 95%);}
|
||||
tbody>tr:hover>td{background-color : mix($color-back, #FFF, 30%);}
|
||||
}
|
||||
|
||||
}
|
753
Public/scss/WMarkDown.css
Executable file
@ -0,0 +1,753 @@
|
||||
.wmarkdown {
|
||||
display: block;
|
||||
position: relative;
|
||||
top: 0em;
|
||||
left: 0em;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden; }
|
||||
.wmarkdown, .wmarkdown * {
|
||||
font-family: "Roboto"; }
|
||||
.wmarkdown [data-visible=false] {
|
||||
display: none; }
|
||||
.wmarkdown a[href], .wmarkdown button, .wmarkdown [type=button], .wmarkdown [type=submit], .wmarkdown [type=reset], .wmarkdown [onclick] {
|
||||
color: #2272D4;
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
transition-duration: 1s; }
|
||||
.wmarkdown a[href]:hover, .wmarkdown button:hover, .wmarkdown [type=button]:hover, .wmarkdown [type=submit]:hover, .wmarkdown [type=reset]:hover, .wmarkdown [onclick]:hover {
|
||||
color: #D47222;
|
||||
transition-duration: 0.2s; }
|
||||
.wmarkdown a[href], .wmarkdown [onclick] {
|
||||
transition-property: color; }
|
||||
.wmarkdown button, .wmarkdown [type=button], .wmarkdown [type=submit], .wmarkdown [type=reset] {
|
||||
background-color: #dbe3ec;
|
||||
border: 0.1em solid #2272D4;
|
||||
border-radius: 0.3em;
|
||||
transition-property: color,background-color,border-color; }
|
||||
.wmarkdown button:hover, .wmarkdown [type=button]:hover, .wmarkdown [type=submit]:hover, .wmarkdown [type=reset]:hover {
|
||||
background-color: #ece3db;
|
||||
border-color: #D47222; }
|
||||
.wmarkdown [data-icon]::before {
|
||||
margin-right: .4em;
|
||||
font-family: "FA5FR"; }
|
||||
.wmarkdown [data-deployed] > [data-icon]::before {
|
||||
display: inline-block;
|
||||
width: 1em;
|
||||
text-align: center; }
|
||||
.wmarkdown .groups, .wmarkdown .buttons {
|
||||
display: block; }
|
||||
.wmarkdown .groups > *, .wmarkdown .buttons > * {
|
||||
float: left;
|
||||
border-radius: 0em; }
|
||||
.wmarkdown .groups > :first-child, .wmarkdown .buttons > :first-child {
|
||||
border-radius: 0.3em 0em 0em 0.3em; }
|
||||
.wmarkdown .groups > :last-child, .wmarkdown .buttons > :last-child {
|
||||
border-radius: 0em 0.3em 0.3em 0em; }
|
||||
.wmarkdown header, .wmarkdown > .body, .wmarkdown footer, .wmarkdown main {
|
||||
position: absolute;
|
||||
left: 0em;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
box-sizing: border-box; }
|
||||
.wmarkdown header, .wmarkdown footer {
|
||||
color: #EFEFEF;
|
||||
background-color: #222; }
|
||||
.wmarkdown header {
|
||||
top: 0em;
|
||||
height: 4em;
|
||||
z-index: 30; }
|
||||
.wmarkdown header .logo {
|
||||
height: 1.6em;
|
||||
margin: .1em .5em;
|
||||
font-weight: 900; }
|
||||
.wmarkdown header .logo a {
|
||||
display: inline-block;
|
||||
height: 100%; }
|
||||
.wmarkdown header .logo a > span {
|
||||
vertical-align: middle; }
|
||||
.wmarkdown header .logo .text {
|
||||
display: inline-block;
|
||||
margin: .3em 0em; }
|
||||
.wmarkdown header .logo span[style] {
|
||||
display: none; }
|
||||
.wmarkdown header .logo .image {
|
||||
display: inline-block;
|
||||
height: 100%; }
|
||||
.wmarkdown header .logo .image[data-status=loading], .wmarkdown header .logo .image[data-status=error] {
|
||||
display: none; }
|
||||
.wmarkdown header .logo img {
|
||||
width: auto;
|
||||
height: 100%; }
|
||||
.wmarkdown header .main-menu {
|
||||
position: absolute;
|
||||
top: 2em;
|
||||
left: 50%;
|
||||
width: 40em;
|
||||
margin-left: -20em;
|
||||
text-align: center; }
|
||||
.wmarkdown header .main-menu ul {
|
||||
margin: 0em;
|
||||
padding: 0em;
|
||||
list-style-type: none; }
|
||||
.wmarkdown header .main-menu li {
|
||||
display: inline-block;
|
||||
margin: 0em 1em;
|
||||
white-space: nowrap; }
|
||||
.wmarkdown header .wmd-options {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 0em;
|
||||
right: 0em;
|
||||
margin: .2em .8em; }
|
||||
.wmarkdown header .wmd-options .multiplier {
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
height: 20px;
|
||||
background-color: #88F; }
|
||||
.wmarkdown header .view-menu button {
|
||||
transition-property: color border-color background-color opacity; }
|
||||
.wmarkdown header .view-menu button [data-icon]::before {
|
||||
margin: 0em; }
|
||||
.wmarkdown header .view-menu button [data-i18n] {
|
||||
display: none; }
|
||||
.wmarkdown > .body, .wmarkdown main {
|
||||
top: 4em;
|
||||
bottom: 1em;
|
||||
color: #222;
|
||||
background-color: #EFEFEF;
|
||||
z-index: 10; }
|
||||
.wmarkdown > .body > .headers-menu, .wmarkdown > .body > .content, .wmarkdown > .body > .files, .wmarkdown main > .headers-menu, .wmarkdown main > .content, .wmarkdown main > .files {
|
||||
position: absolute;
|
||||
top: 0.5em;
|
||||
bottom: 0.5em;
|
||||
box-sizing: border-box; }
|
||||
.wmarkdown > .body > .content > div, .wmarkdown main > .content > div {
|
||||
padding: 0em 3em; }
|
||||
.wmarkdown > .body > .headers-menu nav, .wmarkdown > .body > .files nav, .wmarkdown main > .headers-menu nav, .wmarkdown main > .files nav {
|
||||
position: absolute;
|
||||
top: 0em;
|
||||
left: 0em;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 1em;
|
||||
overflow: auto;
|
||||
box-sizing: border-box; }
|
||||
.wmarkdown > .body > .headers-menu ul, .wmarkdown > .body > .files ul, .wmarkdown main > .headers-menu ul, .wmarkdown main > .files ul {
|
||||
margin: 0em;
|
||||
padding: 0em;
|
||||
list-style-type: none; }
|
||||
.wmarkdown > .body > .headers-menu ul [data-level='1'], .wmarkdown > .body > .files ul [data-level='1'], .wmarkdown main > .headers-menu ul [data-level='1'], .wmarkdown main > .files ul [data-level='1'] {
|
||||
margin-left: 0em; }
|
||||
.wmarkdown > .body > .headers-menu ul [data-level='2'], .wmarkdown > .body > .files ul [data-level='2'], .wmarkdown main > .headers-menu ul [data-level='2'], .wmarkdown main > .files ul [data-level='2'] {
|
||||
margin-left: 2em; }
|
||||
.wmarkdown > .body > .headers-menu ul [data-level='3'], .wmarkdown > .body > .files ul [data-level='3'], .wmarkdown main > .headers-menu ul [data-level='3'], .wmarkdown main > .files ul [data-level='3'] {
|
||||
margin-left: 4em; }
|
||||
.wmarkdown > .body > .headers-menu ul [data-level='4'], .wmarkdown > .body > .files ul [data-level='4'], .wmarkdown main > .headers-menu ul [data-level='4'], .wmarkdown main > .files ul [data-level='4'] {
|
||||
margin-left: 6em; }
|
||||
.wmarkdown > .body > .headers-menu ul [data-level='5'], .wmarkdown > .body > .files ul [data-level='5'], .wmarkdown main > .headers-menu ul [data-level='5'], .wmarkdown main > .files ul [data-level='5'] {
|
||||
margin-left: 8em; }
|
||||
.wmarkdown > .body > .headers-menu ul [data-level='6'], .wmarkdown > .body > .files ul [data-level='6'], .wmarkdown main > .headers-menu ul [data-level='6'], .wmarkdown main > .files ul [data-level='6'] {
|
||||
margin-left: 10em; }
|
||||
.wmarkdown > .body > .headers-menu ul [data-level='7'], .wmarkdown > .body > .files ul [data-level='7'], .wmarkdown main > .headers-menu ul [data-level='7'], .wmarkdown main > .files ul [data-level='7'] {
|
||||
margin-left: 12em; }
|
||||
.wmarkdown > .body > .headers-menu li, .wmarkdown > .body > .files li, .wmarkdown main > .headers-menu li, .wmarkdown main > .files li {
|
||||
white-space: nowrap; }
|
||||
.wmarkdown > .body > .headers-menu .menu-buttons, .wmarkdown > .body > .files .menu-buttons, .wmarkdown main > .headers-menu .menu-buttons, .wmarkdown main > .files .menu-buttons {
|
||||
position: absolute;
|
||||
top: 0em;
|
||||
margin: .2em;
|
||||
margin-top: -1.8em; }
|
||||
.wmarkdown > .body > .headers-menu .menu-buttons [data-icon]::before, .wmarkdown > .body > .files .menu-buttons [data-icon]::before, .wmarkdown main > .headers-menu .menu-buttons [data-icon]::before, .wmarkdown main > .files .menu-buttons [data-icon]::before {
|
||||
margin: 0em; }
|
||||
.wmarkdown > .body > .headers-menu .menu-buttons span[data-i18n], .wmarkdown > .body > .files .menu-buttons span[data-i18n], .wmarkdown main > .headers-menu .menu-buttons span[data-i18n], .wmarkdown main > .files .menu-buttons span[data-i18n] {
|
||||
display: none; }
|
||||
.wmarkdown > .body > .headers-menu, .wmarkdown main > .headers-menu {
|
||||
left: 0.5em;
|
||||
width: 20%; }
|
||||
.wmarkdown > .body > .headers-menu .menu-buttons, .wmarkdown main > .headers-menu .menu-buttons {
|
||||
left: 0.5em; }
|
||||
.wmarkdown > .body[data-headers-menu-deployed=false] > .content, .wmarkdown main[data-headers-menu-deployed=false] > .content {
|
||||
left: 5%; }
|
||||
.wmarkdown > .body[data-headers-menu-deployed=false] .headers-menu, .wmarkdown main[data-headers-menu-deployed=false] .headers-menu {
|
||||
width: auto;
|
||||
padding-left: 3em; }
|
||||
.wmarkdown > .body[data-headers-menu-deployed=false] .headers-menu nav, .wmarkdown main[data-headers-menu-deployed=false] .headers-menu nav {
|
||||
display: none; }
|
||||
.wmarkdown > .body[data-headers-menu-deployed=false] .headers-menu button[data-i18n=show], .wmarkdown main[data-headers-menu-deployed=false] .headers-menu button[data-i18n=show] {
|
||||
display: inline-block; }
|
||||
.wmarkdown > .body[data-headers-menu-deployed=false] .headers-menu button[data-i18n=hide], .wmarkdown main[data-headers-menu-deployed=false] .headers-menu button[data-i18n=hide] {
|
||||
display: none; }
|
||||
.wmarkdown > .body[data-files-menu-deployed=false] > .content, .wmarkdown main[data-files-menu-deployed=false] > .content {
|
||||
right: 5%; }
|
||||
.wmarkdown > .body[data-files-menu-deployed=false] .files, .wmarkdown main[data-files-menu-deployed=false] .files {
|
||||
width: auto;
|
||||
padding-right: 3em; }
|
||||
.wmarkdown > .body[data-files-menu-deployed=false] .files nav, .wmarkdown main[data-files-menu-deployed=false] .files nav {
|
||||
display: none; }
|
||||
.wmarkdown > .body[data-files-menu-deployed=false] .files button[data-i18n=show], .wmarkdown main[data-files-menu-deployed=false] .files button[data-i18n=show] {
|
||||
display: inline-block; }
|
||||
.wmarkdown > .body[data-files-menu-deployed=false] .files button[data-i18n=hide], .wmarkdown main[data-files-menu-deployed=false] .files button[data-i18n=hide] {
|
||||
display: none; }
|
||||
.wmarkdown > .body[data-headers-menu-deployed=true] .headers-menu button[data-i18n=show], .wmarkdown main[data-headers-menu-deployed=true] .headers-menu button[data-i18n=show] {
|
||||
display: none; }
|
||||
.wmarkdown > .body[data-headers-menu-deployed=true] .headers-menu button[data-i18n=hide], .wmarkdown main[data-headers-menu-deployed=true] .headers-menu button[data-i18n=hide] {
|
||||
display: inline-block; }
|
||||
.wmarkdown > .body[data-files-menu-deployed=true] .files button[data-i18n=show], .wmarkdown main[data-files-menu-deployed=true] .files button[data-i18n=show] {
|
||||
display: none; }
|
||||
.wmarkdown > .body[data-files-menu-deployed=true] .files button[data-i18n=hide], .wmarkdown main[data-files-menu-deployed=true] .files button[data-i18n=hide] {
|
||||
display: inline-block; }
|
||||
.wmarkdown > .body > .content, .wmarkdown main > .content {
|
||||
top: 0em;
|
||||
left: 25%;
|
||||
right: 15%;
|
||||
bottom: 0em;
|
||||
margin: 0em 1em;
|
||||
padding: 1em 0em;
|
||||
overflow: auto; }
|
||||
.wmarkdown > .body > .content legend, .wmarkdown main > .content legend {
|
||||
display: none; }
|
||||
.wmarkdown > .body > .content .padding-bottom, .wmarkdown main > .content .padding-bottom {
|
||||
height: 1em; }
|
||||
.wmarkdown > .body > .files, .wmarkdown main > .files {
|
||||
right: 0.5em;
|
||||
width: 10%; }
|
||||
.wmarkdown > .body > .files .menu-buttons, .wmarkdown main > .files .menu-buttons {
|
||||
right: 0.5em; }
|
||||
.wmarkdown > .body > fieldset, .wmarkdown main > fieldset {
|
||||
border: none; }
|
||||
.wmarkdown > .body > fieldset > legend, .wmarkdown main > fieldset > legend {
|
||||
display: block;
|
||||
width: 100%;
|
||||
border-bottom: 0.14em dotted #898989;
|
||||
color: #222;
|
||||
font-weight: 900;
|
||||
font-size: 1.2em;
|
||||
text-align: center;
|
||||
box-sizing: border-box; }
|
||||
.wmarkdown > .body [data-parent-deployed=false], .wmarkdown main [data-parent-deployed=false] {
|
||||
display: none; }
|
||||
.wmarkdown footer {
|
||||
bottom: 0em;
|
||||
height: 1em;
|
||||
z-index: 20; }
|
||||
.wmarkdown footer .license {
|
||||
display: block;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: .75em;
|
||||
font-weight: 900; }
|
||||
.wmarkdown footer .license img {
|
||||
height: 1.1em;
|
||||
margin-left: .4em; }
|
||||
.wmarkdown footer .license > * {
|
||||
vertical-align: middle; }
|
||||
.wmarkdown[data-view=menu] .view-menu button[data-i18n=menu] {
|
||||
opacity: 1; }
|
||||
.wmarkdown[data-view=menu] .view-menu button[data-i18n=content] {
|
||||
opacity: .5; }
|
||||
.wmarkdown[data-view=menu] .view-menu button[data-i18n=files] {
|
||||
opacity: .5; }
|
||||
.wmarkdown[data-view=content] .view-menu button[data-i18n=menu] {
|
||||
opacity: .5; }
|
||||
.wmarkdown[data-view=content] .view-menu button[data-i18n=content] {
|
||||
opacity: 1; }
|
||||
.wmarkdown[data-view=content] .view-menu button[data-i18n=files] {
|
||||
opacity: .5; }
|
||||
.wmarkdown[data-view=files] .view-menu button[data-i18n=menu] {
|
||||
opacity: .5; }
|
||||
.wmarkdown[data-view=files] .view-menu button[data-i18n=content] {
|
||||
opacity: .5; }
|
||||
.wmarkdown[data-view=files] .view-menu button[data-i18n=files] {
|
||||
opacity: 1; }
|
||||
.wmarkdown[data-display-view=pc] .view-menu {
|
||||
display: none; }
|
||||
.wmarkdown[data-display-view=mobile] .view-menu {
|
||||
display: block;
|
||||
position: absolute;
|
||||
bottom: 0em;
|
||||
right: 0em;
|
||||
margin: .3em 1em; }
|
||||
.wmarkdown[data-display-view=mobile] .headers-menu .menu-buttons, .wmarkdown[data-display-view=mobile] .files .menu-buttons {
|
||||
display: none; }
|
||||
.wmarkdown[data-display-view=mobile] fieldset.headers-menu, .wmarkdown[data-display-view=mobile] fieldset.content, .wmarkdown[data-display-view=mobile] fieldset.files {
|
||||
top: 0em;
|
||||
left: 0em;
|
||||
right: auto;
|
||||
bottom: auto;
|
||||
margin: 0em;
|
||||
padding: 0em;
|
||||
width: 100%;
|
||||
height: 100%; }
|
||||
.wmarkdown[data-display-view=mobile][data-view=menu] fieldset.headers-menu {
|
||||
display: block; }
|
||||
.wmarkdown[data-display-view=mobile][data-view=menu] fieldset.content {
|
||||
display: none; }
|
||||
.wmarkdown[data-display-view=mobile][data-view=menu] fieldset.files {
|
||||
display: none; }
|
||||
.wmarkdown[data-display-view=mobile][data-view=content] fieldset.headers-menu {
|
||||
display: none; }
|
||||
.wmarkdown[data-display-view=mobile][data-view=content] fieldset.content {
|
||||
display: block; }
|
||||
.wmarkdown[data-display-view=mobile][data-view=content] fieldset.files {
|
||||
display: none; }
|
||||
.wmarkdown[data-display-view=mobile][data-view=files] fieldset.headers-menu {
|
||||
display: none; }
|
||||
.wmarkdown[data-display-view=mobile][data-view=files] fieldset.content {
|
||||
display: none; }
|
||||
.wmarkdown[data-display-view=mobile][data-view=files] fieldset.files {
|
||||
display: block; }
|
||||
.wmarkdown[data-screen-size~="3"] .main-menu a [data-i18n] {
|
||||
display: none; }
|
||||
.wmarkdown[data-screen-size~="3"] header .logo .text {
|
||||
font-size: .6em; }
|
||||
.wmarkdown[data-screen-size~="4"] header .logo .text {
|
||||
display: none; }
|
||||
.wmarkdown[data-screen-size~="4"] .main-menu li {
|
||||
margin: 0em .3em; }
|
||||
|
||||
.wmarkdown label.checkbox, .wmarkdown label.radio, .wmarkdown label.tick {
|
||||
display: inline-block;
|
||||
cursor: pointer; }
|
||||
.wmarkdown label.checkbox input, .wmarkdown label.radio input, .wmarkdown label.tick input {
|
||||
display: none; }
|
||||
.wmarkdown label.checkbox [data-icon]::before, .wmarkdown label.radio [data-icon]::before, .wmarkdown label.tick [data-icon]::before {
|
||||
margin: 0em; }
|
||||
.wmarkdown .code-block {
|
||||
display: block;
|
||||
position: relative;
|
||||
width: 80%;
|
||||
height: auto;
|
||||
margin-left: 10%;
|
||||
font-size: .8em;
|
||||
overflow: hidden;
|
||||
box-sizing: border-box; }
|
||||
.wmarkdown .code-block[data-special=false] {
|
||||
max-height: 35em; }
|
||||
.wmarkdown .code-block > ul {
|
||||
position: absolute;
|
||||
top: 0em;
|
||||
left: 0em;
|
||||
margin: 0em;
|
||||
padding: 0em;
|
||||
white-space: normal; }
|
||||
.wmarkdown .code-block > ul li {
|
||||
display: inline-block;
|
||||
margin: 0em .2em;
|
||||
padding: .2em .8em;
|
||||
background-color: #dbdbdb;
|
||||
vertical-align: middle;
|
||||
border: 0.1em solid #898989;
|
||||
border-radius: .4em; }
|
||||
.wmarkdown .code-block > ul li [data-i18n] {
|
||||
display: none;
|
||||
font-weight: 900; }
|
||||
.wmarkdown .code-block > ul li [data-i18n]::after {
|
||||
content: ":";
|
||||
margin-right: .4em; }
|
||||
.wmarkdown .code-block .lines {
|
||||
position: relative;
|
||||
top: 0em;
|
||||
left: 0em;
|
||||
overflow: hidden; }
|
||||
.wmarkdown .code-block .lines ol {
|
||||
width: 100%;
|
||||
margin: 0em;
|
||||
margin-top: -.3em;
|
||||
margin-left: 4em;
|
||||
padding: 0em;
|
||||
box-sizing: border-box; }
|
||||
.wmarkdown .code-block .lines ol li:nth-child(2n) {
|
||||
background-color: #f7f7f7; }
|
||||
.wmarkdown .code-block .lines ol li:nth-child(2n + 1) {
|
||||
background-color: #f2f2f2; }
|
||||
.wmarkdown .code-block .code-box {
|
||||
position: absolute;
|
||||
top: 3.2em;
|
||||
left: 4em;
|
||||
right: 0em;
|
||||
max-height: 31em;
|
||||
overflow: auto; }
|
||||
.wmarkdown .code-block > div, .wmarkdown .code-block > div * {
|
||||
font-family: "Roboto Mono"; }
|
||||
.wmarkdown .header-file-note {
|
||||
margin-top: 2em;
|
||||
font-size: .85em;
|
||||
color: #898989; }
|
||||
.wmarkdown .header-file-note + h1 {
|
||||
margin-top: 0em; }
|
||||
.wmarkdown .header-file-note + h2 {
|
||||
margin-top: 0em; }
|
||||
.wmarkdown .header-file-note + h3 {
|
||||
margin-top: 0em; }
|
||||
.wmarkdown .header-file-note + h4 {
|
||||
margin-top: 0em; }
|
||||
.wmarkdown .header-file-note + h5 {
|
||||
margin-top: 0em; }
|
||||
.wmarkdown .header-file-note + h6 {
|
||||
margin-top: 0em; }
|
||||
.wmarkdown .data-dictionary-item {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
border-bottom: 0.1em dotted;
|
||||
cursor: help; }
|
||||
.wmarkdown .data-dictionary-item[data-left=true] > .box {
|
||||
left: auto;
|
||||
right: 0em; }
|
||||
.wmarkdown .data-dictionary-item[data-left=false] > .box {
|
||||
left: 0em;
|
||||
right: auto; }
|
||||
.wmarkdown .data-dictionary-item[data-top=false] > .box {
|
||||
top: auto;
|
||||
bottom: 1em; }
|
||||
.wmarkdown .data-dictionary-item[data-top=true] > .box {
|
||||
top: 1em;
|
||||
bottom: auto; }
|
||||
.wmarkdown .data-dictionary-item[data-show=false] > .box {
|
||||
display: none; }
|
||||
.wmarkdown .data-dictionary-item .box {
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 10em;
|
||||
height: auto;
|
||||
max-height: 10em;
|
||||
padding: .5em;
|
||||
color: #222;
|
||||
font-weight: 400;
|
||||
border: 0.1em solid #222;
|
||||
background-color: rgba(239, 239, 239, 0.95);
|
||||
overflow: hidden;
|
||||
box-sizing: border-box;
|
||||
border-radius: 1em;
|
||||
box-shadow: 0.1em 0.1em 0.2em #222; }
|
||||
.wmarkdown .data-dictionary-item .box > span + span {
|
||||
display: block; }
|
||||
.wmarkdown .data-dictionary-item .result {
|
||||
display: none; }
|
||||
.wmarkdown .data-dictionary-item .description {
|
||||
height: 6em;
|
||||
text-align: center;
|
||||
overflow: auto; }
|
||||
.wmarkdown .data-dictionary-item .description .paragraph {
|
||||
display: block; }
|
||||
.wmarkdown .data-dictionary-item .description .paragraph + span {
|
||||
margin-top: 1em; }
|
||||
.wmarkdown .data-dictionary-item .links {
|
||||
height: 3.1em;
|
||||
margin: .5em 0em;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden; }
|
||||
.wmarkdown .data-dictionary-item .links > a {
|
||||
display: inline-block;
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
margin: 0em .5em;
|
||||
border: 0.1em solid #222;
|
||||
background-color: #FFF;
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
box-sizing: border-box;
|
||||
border-radius: 1em; }
|
||||
.wmarkdown .data-dictionary-item [data-site=wikipedia_org], .wmarkdown .data-dictionary-item [data-site=es_wikipedia_org], .wmarkdown .data-dictionary-item [data-site=en_wikipedia_org] {
|
||||
background-image: url("https://wikipedia.org/static/apple-touch/wikipedia.png"); }
|
||||
.wmarkdown .data-dictionary-item [data-site=git_a3do_net], .wmarkdown .data-dictionary-item [data-site=git_k3y_pw] {
|
||||
background-image: url("https://about.gitlab.com/ico/favicon-192x192.png"); }
|
||||
.wmarkdown .data-dictionary-item [data-site=youtube_com], .wmarkdown .data-dictionary-item [data-site=www_youtube_com] {
|
||||
background-image: url("https://www.youtube.com/s/desktop/c20c1e6c/img/favicon_144.png"); }
|
||||
.wmarkdown .data-dictionary-item [data-site=www_mediawiki_org] {
|
||||
background-image: url("https://www.mediawiki.org/static/apple-touch/mediawiki.png"); }
|
||||
.wmarkdown .data-dictionary-item [data-site=github_com] {
|
||||
background-image: url("https://github.com/fluidicon.png"); }
|
||||
.wmarkdown .data-dictionary-table {
|
||||
display: block;
|
||||
position: relative; }
|
||||
.wmarkdown .data-dictionary-table fieldset {
|
||||
border: none; }
|
||||
.wmarkdown .data-dictionary-table legend, .wmarkdown .data-dictionary-table tfoot, .wmarkdown .data-dictionary-table [data-field=i], .wmarkdown .data-dictionary-table [data-field=patterns], .wmarkdown .data-dictionary-table [data-field=results], .wmarkdown .data-dictionary-table .checkbox > [data-i18n] {
|
||||
display: none; }
|
||||
.wmarkdown .data-dictionary-table [data-field=urls] li {
|
||||
word-break: break-all;
|
||||
word-wrap: break-word; }
|
||||
.wmarkdown .data-dictionary-table .search {
|
||||
display: table;
|
||||
width: 100%;
|
||||
box-sizing: border-box; }
|
||||
.wmarkdown .data-dictionary-table .search > * {
|
||||
display: table-cell;
|
||||
white-space: nowrap; }
|
||||
.wmarkdown .data-dictionary-table .search .field, .wmarkdown .data-dictionary-table .search .field input {
|
||||
width: 100%;
|
||||
box-sizing: border-box; }
|
||||
.wmarkdown .data-dictionary-table .search > label {
|
||||
font-weight: 900; }
|
||||
.wmarkdown .data-dictionary-table .search > label::after {
|
||||
content: ":";
|
||||
margin-right: .4em; }
|
||||
.wmarkdown .data-dictionary-table th, .wmarkdown .data-dictionary-table td {
|
||||
width: 40%; }
|
||||
.wmarkdown .data-dictionary-table th[data-field=words], .wmarkdown .data-dictionary-table td[data-field=words] {
|
||||
width: 20%; }
|
||||
.wmarkdown .data-dictionary-table td {
|
||||
padding: 1em .4em; }
|
||||
.wmarkdown .data-dictionary-table thead, .wmarkdown .data-dictionary-table tbody {
|
||||
display: block; }
|
||||
.wmarkdown .data-dictionary-table thead tr:not([data-visible=false]), .wmarkdown .data-dictionary-table tbody tr:not([data-visible=false]) {
|
||||
display: table; }
|
||||
.wmarkdown .data-dictionary-table thead, .wmarkdown .data-dictionary-table thead tr, .wmarkdown .data-dictionary-table tbody, .wmarkdown .data-dictionary-table tbody tr {
|
||||
width: 100%; }
|
||||
.wmarkdown .data-dictionary-table tbody {
|
||||
max-height: 30em;
|
||||
overflow: auto; }
|
||||
.wmarkdown .data-dictionary-table tbody > tr:nth-child(2n + 1) > td {
|
||||
background-color: #f7f7f7; }
|
||||
.wmarkdown .data-dictionary-table tbody > tr:nth-child(2n) > td {
|
||||
background-color: #f2f2f2; }
|
||||
.wmarkdown .data-dictionary-table tbody > tr:hover > td {
|
||||
background-color: #fbfbfb; }
|
||||
.wmarkdown .multimedia-box {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
text-align: center; }
|
||||
.wmarkdown .multimedia-box [data-type=image] img, .wmarkdown .multimedia-box [data-type=image] a, .wmarkdown .multimedia-box [data-type=images] img, .wmarkdown .multimedia-box [data-type=images] a {
|
||||
display: none; }
|
||||
.wmarkdown .multimedia-box [data-type=image] .image-style, .wmarkdown .multimedia-box [data-type=images] .image-style {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain; }
|
||||
.wmarkdown .multimedia-box video {
|
||||
width: auto;
|
||||
width: 100%; }
|
||||
.wmarkdown .multimedia-box [data-type=audio] {
|
||||
min-width: 10em; }
|
||||
.wmarkdown .multimedia-box [data-type=audio] > .multimedia-box[data-multiple=false] > span {
|
||||
left: 0em;
|
||||
width: 100%; }
|
||||
.wmarkdown .multimedia-box [data-type=audio] a {
|
||||
display: none; }
|
||||
.wmarkdown .multimedia-box audio {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 10%;
|
||||
width: 80%;
|
||||
margin-top: -6em;
|
||||
box-sizing: border-box;
|
||||
z-index: 20;
|
||||
opacity: .7; }
|
||||
.wmarkdown .multimedia-box .text {
|
||||
position: absolute;
|
||||
bottom: 0em;
|
||||
left: 0em;
|
||||
width: 100%;
|
||||
margin: .5em;
|
||||
text-align: center;
|
||||
text-shadow: 0em 0em 0.1em #222, 0em 0em 0.075em #222, 0em 0em 0.05em #EFEFEF, 0em 0em 0.025em #EFEFEF; }
|
||||
.wmarkdown .multimedia-box [data-type] {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
margin: 1em; }
|
||||
.wmarkdown .multimedia-box[data-multiple=true] > span {
|
||||
width: 25%;
|
||||
height: 10em; }
|
||||
.wmarkdown .multimedia-box[data-multiple=false] > span {
|
||||
width: 80%;
|
||||
height: 25em;
|
||||
text-align: center; }
|
||||
.wmarkdown .multimedia-box[data-multiple] > [data-links-count] {
|
||||
height: auto; }
|
||||
.wmarkdown .multimedia-box[data-multiple] [data-platform] {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 20em;
|
||||
height: 10em;
|
||||
margin: .5em; }
|
||||
.wmarkdown .multimedia-box .multimedia-box [data-type] {
|
||||
position: absolute;
|
||||
top: 0em;
|
||||
left: 0em;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0em; }
|
||||
.wmarkdown .multimedia-box [data-platform], .wmarkdown .multimedia-box[data-multiple=true] > [data-type=audio] > .multimedia-box, .wmarkdown .multimedia-box [data-platform] {
|
||||
width: 20em;
|
||||
height: 10em; }
|
||||
.wmarkdown .multimedia-box [data-links-count='1'] > [data-platform], .wmarkdown .multimedia-box[data-multiple=false] > [data-type=audio] > .multimedia-box {
|
||||
width: 80%;
|
||||
height: 25em; }
|
||||
.wmarkdown .links-group {
|
||||
text-align: center; }
|
||||
.wmarkdown .links-group a {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 6em;
|
||||
height: 7.5em;
|
||||
margin: 1em;
|
||||
overflow: hidden;
|
||||
opacity: .7;
|
||||
transition-duration: 1s;
|
||||
transition-property: color,opacity; }
|
||||
.wmarkdown .links-group a img {
|
||||
display: none; }
|
||||
.wmarkdown .links-group a:hover {
|
||||
opacity: 1;
|
||||
transition-duration: 0.2s; }
|
||||
.wmarkdown .links-group a [data-status] {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0em;
|
||||
left: 0em;
|
||||
width: 6em;
|
||||
height: 6em; }
|
||||
.wmarkdown .links-group a .text {
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0em;
|
||||
bottom: 0em;
|
||||
width: 100%;
|
||||
margin: 0em;
|
||||
text-align: center; }
|
||||
.wmarkdown .links-group a .image-style {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain; }
|
||||
.wmarkdown .special-text-i .text {
|
||||
font-weight: 900; }
|
||||
.wmarkdown .quote {
|
||||
padding: 1em;
|
||||
border: 0.1em dotted #898989; }
|
||||
.wmarkdown .wdoc {
|
||||
position: relative;
|
||||
border: 0.1 0.5em solid #898989;
|
||||
background-color: #f7f7f7;
|
||||
border-radius: .4em; }
|
||||
.wmarkdown .wdoc[data-language] > legend {
|
||||
display: block;
|
||||
padding: 0em .4em; }
|
||||
.wmarkdown .wdoc[data-language] > legend .name {
|
||||
font-weight: 900; }
|
||||
.wmarkdown .wdoc[data-language] > legend .language {
|
||||
margin-left: .4em; }
|
||||
.wmarkdown .wdoc[data-language] > legend .language::before {
|
||||
content: "["; }
|
||||
.wmarkdown .wdoc[data-language] > legend .language::after {
|
||||
content: "]"; }
|
||||
.wmarkdown .wdoc .structure .return-type {
|
||||
margin-right: .4em; }
|
||||
.wmarkdown .wdoc .structure .return-type::before {
|
||||
content: "["; }
|
||||
.wmarkdown .wdoc .structure .return-type::after {
|
||||
content: "]"; }
|
||||
.wmarkdown .wdoc .structure .attributes {
|
||||
display: inline-block;
|
||||
margin: 0em;
|
||||
padding: 0em;
|
||||
list-style-type: none; }
|
||||
.wmarkdown .wdoc .structure .attributes::before {
|
||||
content: "("; }
|
||||
.wmarkdown .wdoc .structure .attributes::after {
|
||||
content: ")"; }
|
||||
.wmarkdown .wdoc .structure .attributes .attribute-status, .wmarkdown .wdoc .structure .attributes .attribute-description, .wmarkdown .wdoc .structure .attributes .return {
|
||||
display: none; }
|
||||
.wmarkdown .wdoc .structure .attributes .attribute-type {
|
||||
margin-left: .4em; }
|
||||
.wmarkdown .wdoc .structure .attributes .attribute-type span {
|
||||
font-style: italic; }
|
||||
.wmarkdown .wdoc .structure .attributes .attribute-type::before {
|
||||
content: "[";
|
||||
margin-right: .2em; }
|
||||
.wmarkdown .wdoc .structure .attributes .attribute-type::after {
|
||||
content: "]";
|
||||
margin-left: .2em; }
|
||||
.wmarkdown .wdoc .structure .attribute + span::before {
|
||||
content: ",";
|
||||
margin-right: .4em; }
|
||||
.wmarkdown .wdoc .structure .attribute[data-status=optional]::after {
|
||||
content: "?"; }
|
||||
.wmarkdown .wdoc .attribute-type > span + span::before {
|
||||
content: ",";
|
||||
margin-right: .4em; }
|
||||
.wmarkdown .wdoc .attributes-data {
|
||||
display: table;
|
||||
width: 100%;
|
||||
margin-top: 1em;
|
||||
box-sizing: border-box; }
|
||||
.wmarkdown .wdoc .attributes-data > span {
|
||||
display: table-row; }
|
||||
.wmarkdown .wdoc .attributes-data > span > span {
|
||||
display: table-cell; }
|
||||
.wmarkdown .wdoc .attributes-data > .return {
|
||||
font-style: italic; }
|
||||
.wmarkdown .wdoc > .data {
|
||||
margin: 0em;
|
||||
margin-top: 1em;
|
||||
padding: 0em;
|
||||
list-style-type: none; }
|
||||
.wmarkdown .wdoc > .data li {
|
||||
padding-bottom: .1em; }
|
||||
.wmarkdown .wdoc > .data li:hover {
|
||||
padding-bottom: 0em;
|
||||
border-bottom: 0.1em dotted #898989; }
|
||||
.wmarkdown .wdoc > .data li > :first-child {
|
||||
display: inline-block;
|
||||
width: 10em;
|
||||
height: 1.2em;
|
||||
overflow: hidden; }
|
||||
.wmarkdown .wdoc > .data li > :first-child::before {
|
||||
content: "@"; }
|
||||
.wmarkdown .wdoc > .data li > :last-child {
|
||||
margin-left: .4em; }
|
||||
.wmarkdown .wdoc div.attributes-data > * > * {
|
||||
padding-bottom: .1em; }
|
||||
.wmarkdown .wdoc div.attributes-data > *:hover > * {
|
||||
padding-bottom: 0em;
|
||||
border-bottom: 0.1em dotted #898989; }
|
||||
.wmarkdown .wdoc [data-with-value=false] {
|
||||
display: none; }
|
||||
.wmarkdown .wdoc .deprecated {
|
||||
font-weight: 900; }
|
||||
.wmarkdown .wdoc .deprecated::before {
|
||||
content: "("; }
|
||||
.wmarkdown .wdoc .deprecated::after {
|
||||
content: ")";
|
||||
margin-right: .4em; }
|
||||
.wmarkdown .wdoc[data-deprecated=true] {
|
||||
opacity: .6;
|
||||
transition-duration: 1s;
|
||||
transition-property: opacity; }
|
||||
.wmarkdown .wdoc[data-deprecated=true]:hover {
|
||||
opacity: 1;
|
||||
transition-duration: 0.2s; }
|
||||
.wmarkdown .wdoc + .wdoc {
|
||||
margin-top: 1em; }
|
||||
.wmarkdown .wmd-table {
|
||||
width: 80%;
|
||||
margin-left: 10%;
|
||||
border-collapse: collapse; }
|
||||
.wmarkdown .wmd-table {
|
||||
border: 0.1em solid #222; }
|
||||
.wmarkdown .wmd-table td, .wmarkdown .wmd-table th {
|
||||
border: 0.1em solid #898989; }
|
||||
.wmarkdown .wmd-table tr td {
|
||||
transition-duration: 1s;
|
||||
transition-property: background-color; }
|
||||
.wmarkdown .wmd-table tr:hover td {
|
||||
transition-duration: 0.2s; }
|
||||
.wmarkdown .wmd-table tbody > tr:nth-child(2n) > td {
|
||||
background-color: #f2f2f2; }
|
||||
.wmarkdown .wmd-table tbody > tr:nth-child(2n + 1) > td {
|
||||
background-color: #e3e3e3; }
|
||||
.wmarkdown .wmd-table tbody > tr:hover > td {
|
||||
background-color: #fafafa; }
|
||||
|
||||
.wmarkdown .MathJax {
|
||||
font-size: 1.3em; }
|
||||
|
||||
/*# sourceMappingURL=WMarkDown.css.map */
|
7
Public/scss/WMarkDown.css.map
Executable file
5
Public/scss/WMarkDown.external.scss
Executable file
@ -0,0 +1,5 @@
|
||||
.wmarkdown{
|
||||
|
||||
.MathJax{font-size : 1.3em;}
|
||||
|
||||
}
|
1
Public/scss/WMarkDown.scss
Executable file
@ -0,0 +1 @@
|
||||
@import "WMarkDown.settings.scss", "WMarkDown.base.scss", "WMarkDown.components.scss", "WMarkDown.external.scss";
|
31
Public/scss/WMarkDown.settings.scss
Executable file
@ -0,0 +1,31 @@
|
||||
// Colors.
|
||||
$color-primary : #2272D4;
|
||||
$color-secondary : #D47222;
|
||||
$color-fore : #222;
|
||||
$color-back : #EFEFEF;
|
||||
$color-grey : mix($color-back, $color-fore, 50%);
|
||||
|
||||
// Fonts.
|
||||
$font-family : "Roboto";
|
||||
$font-mono : "Roboto Mono";
|
||||
$font-icon : "FA5FR";
|
||||
|
||||
// Sizes.
|
||||
$header-height : 4em;
|
||||
$footer-height : 1em;
|
||||
$menu-headers-width : 20%;
|
||||
$menu-files-width : 10%;
|
||||
$content-margin : 5%;
|
||||
$margin-boxes : .5em;
|
||||
$border-size : .1em;
|
||||
$menu-margin-level : 2em;
|
||||
$content-internal-margin : 3em;
|
||||
$dictionary-item-width : 10em;
|
||||
$dictionary-item-height : 10em;
|
||||
$dictionary-link-size : 2em;
|
||||
$border-radius : .3em;
|
||||
|
||||
// Transitions.
|
||||
$transition-in : .2s;
|
||||
$transition-out : 1s;
|
||||
$transition : .5s;
|
7
Public/tests/patterns.html
Normal file
@ -0,0 +1,7 @@
|
||||
<script>
|
||||
|
||||
console.log(/(\#{1,6})([^\r\n\#]+)(\#{1,6})?/.source);
|
||||
|
||||
console.log("Hola. ¿Qué tal? Esto es una prueba".match(/tal/));
|
||||
|
||||
</script>
|
1
Public/update.php
Executable file
@ -0,0 +1 @@
|
||||
<?php trim(shell_exec("git fetch")) && shell_exec("git pull");
|
6
Public/wmd.php
Executable file
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
include __DIR__ . "/../PHP/include.php";
|
||||
include __DIR__ . "/../PHP/WMarkDown.Secrets.php";
|
||||
|
||||
$wmd = new WMarkDown(WMarkDown\Secrets::wmarkdown);
|
34
Public/wmd_scripts.php
Executable file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
include __DIR__ . "/../PHP/include.php";
|
||||
include __DIR__ . "/../PHP/WMarkDown.Secrets.php";
|
||||
|
||||
$wmd = new WMarkDown(array_merge([
|
||||
"action" => "update_scripts",
|
||||
"author" => "KyMAN",
|
||||
"project" => "WMarkDown",
|
||||
"class" => "WMarkDown",
|
||||
"object" => "wmarkdown",
|
||||
"url" => "https://wmarkdown.k3y.pw",
|
||||
"project_author" => "Tarsier,KyMAN",
|
||||
"key_words" => "Whalers,MarkDown,MediaWiki,WMarkDown,documentación",
|
||||
"logo" => "https://wmarkdown.k3y.pw/images/wmarkdown.png",
|
||||
"language" => "es",
|
||||
"ignore_script_paths" => [
|
||||
"/.git",
|
||||
"/.gitignore",
|
||||
"/ArtBook",
|
||||
"/Data",
|
||||
"/HTML",
|
||||
"/JSON",
|
||||
"/Public/css",
|
||||
"/Public/index.html",
|
||||
"/Public/.htaccess",
|
||||
"/Public/es",
|
||||
"/Public/images",
|
||||
"/Public/json",
|
||||
"/Public/scss",
|
||||
"/README.md",
|
||||
"/WMD"
|
||||
]
|
||||
], WMarkDown\Secrets::wmarkdown));
|
16
SQL/KMarkDown.01.remover.lite.sql
Executable file
@ -0,0 +1,16 @@
|
||||
-- Level 2.
|
||||
drop table if exists Logs;
|
||||
drop table if exists Traces;
|
||||
drop table if exists UsersData;
|
||||
drop table if exists IpsData;
|
||||
drop table if exists FilesData;
|
||||
|
||||
-- Level 1.
|
||||
drop table if exists Methods;
|
||||
drop table if exists Sessions;
|
||||
|
||||
-- Level 0.
|
||||
drop table if exists Applications;
|
||||
drop table if exists Users;
|
||||
drop table if exists Ips;
|
||||
drop table if exists Files;
|
120
SQL/KMarkDown.02.generator.lite.sql
Executable file
@ -0,0 +1,120 @@
|
||||
-- Level 0.
|
||||
create table if not exists Applications(
|
||||
id integer not null primary key autoincrement,
|
||||
name varchar(63) not null,
|
||||
date_in datetime not null default (datetime('now')),
|
||||
date_out datetime
|
||||
);
|
||||
|
||||
create table if not exists Users(
|
||||
id integer not null primary key autoincrement,
|
||||
date_in datetime not null default (datetime('now')),
|
||||
date_out datetime
|
||||
);
|
||||
|
||||
create table if not exists Ips(
|
||||
id integer not null primary key autoincrement,
|
||||
address varchar(39) not null,
|
||||
date_in datetime not null default (datetime('now')),
|
||||
date_out datetime
|
||||
);
|
||||
|
||||
create table if not exists Files(
|
||||
id integer not null primary key autoincrement,
|
||||
address varchar(39) not null,
|
||||
date_in datetime not null default (datetime('now')),
|
||||
date_out datetime
|
||||
);
|
||||
|
||||
-- Level 1.
|
||||
create table if not exists Methods(
|
||||
id integer not null primary key autoincrement,
|
||||
application integer not null,
|
||||
name varchar(63) not null,
|
||||
date_in datetime not null default (datetime('now')),
|
||||
date_out datetime,
|
||||
constraint methods_ip foreign key(application) references Applications(id)
|
||||
);
|
||||
|
||||
create table if not exists Sessions(
|
||||
id integer not null primary key autoincrement,
|
||||
'user' integer not null,
|
||||
ip integer not null,
|
||||
date_last datetime not null default (datetime('now')),
|
||||
date_in datetime not null default (datetime('now')),
|
||||
date_out datetime,
|
||||
constraint sessions_user foreign key('user') references Users(id),
|
||||
constraint sessions_ip foreign key(ip) references Ips(id)
|
||||
);
|
||||
|
||||
-- Level 2.
|
||||
create table if not exists Logs(
|
||||
id integer not null primary key autoincrement,
|
||||
'session' integer,
|
||||
'method' integer not null,
|
||||
parameters text not null,
|
||||
error bigint not null,
|
||||
date_in datetime not null default (datetime('now')),
|
||||
date_out datetime,
|
||||
constraint logs_session foreign key('session') references Sessions(id),
|
||||
constraint logs_method foreign key('method') references Methods(id)
|
||||
);
|
||||
|
||||
create table if not exists Traces(
|
||||
id integer not null primary key autoincrement,
|
||||
'session' integer,
|
||||
'method' integer not null,
|
||||
parameters text not null,
|
||||
error bigint not null,
|
||||
trace text not null,
|
||||
message text not null,
|
||||
date_in datetime not null default (datetime('now')),
|
||||
date_out datetime,
|
||||
constraint traces_session foreign key('session') references Sessions(id),
|
||||
constraint traces_method foreign key('method') references Methods(id)
|
||||
);
|
||||
|
||||
create table if not exists UsersData(
|
||||
id integer not null primary key autoincrement,
|
||||
'session' integer,
|
||||
'method' integer not null,
|
||||
'user' integer not null,
|
||||
name varchar(31) not null,
|
||||
password varchar(255) not null,
|
||||
accessible boolean not null default false,
|
||||
deleted datetime,
|
||||
date_in datetime not null default (datetime('now')),
|
||||
date_out datetime,
|
||||
constraint users_session foreign key('session') references Sessions(id),
|
||||
constraint users_method foreign key('method') references Methods(id),
|
||||
constraint users_user foreign key('user') references Users(id)
|
||||
);
|
||||
|
||||
create table if not exists IpsData(
|
||||
id integer not null primary key autoincrement,
|
||||
'session' integer,
|
||||
'method' integer not null,
|
||||
ip integer not null,
|
||||
address varchar(39) not null,
|
||||
accessible boolean not null default true,
|
||||
deleted datetime,
|
||||
date_in datetime not null default (datetime('now')),
|
||||
date_out datetime,
|
||||
constraint ips_session foreign key('session') references Sessions(id),
|
||||
constraint ips_method foreign key('method') references Methods(id),
|
||||
constraint ips_ip foreign key(ip) references Ips(id)
|
||||
);
|
||||
|
||||
create table if not exists FilesData(
|
||||
id integer not null primary key autoincrement,
|
||||
'session' integer,
|
||||
'method' integer not null,
|
||||
file integer not null,
|
||||
'path' varchar(255) not null,
|
||||
deleted datetime,
|
||||
date_in datetime not null default (datetime('now')),
|
||||
date_out datetime,
|
||||
constraint files_session foreign key('session') references Sessions(id),
|
||||
constraint files_method foreign key('method') references Methods(id),
|
||||
constraint files_file foreign key(file) references Files(id)
|
||||
);
|
117
SQL/KMarkDown.03.views.lite.sql
Executable file
@ -0,0 +1,117 @@
|
||||
drop view if exists UsersDataView;
|
||||
create view UsersDataView as
|
||||
select * from UsersData where 'user' in (
|
||||
select id from Users where date_out is null
|
||||
) and id in (
|
||||
select max(id) from UsersData where date_out is null group by 'user'
|
||||
);
|
||||
|
||||
drop view if exists IpsDataView;
|
||||
create view IpsDataView as
|
||||
select * from IpsData where ip in (
|
||||
select id from Ips where date_out is null
|
||||
) and id in (
|
||||
select max(id) from IpsData where date_out is null group by ip
|
||||
);
|
||||
|
||||
drop view if exists SessionsView;
|
||||
create view SessionsView as
|
||||
select
|
||||
sessions.id as id,
|
||||
users.'user' as user_id,
|
||||
users.name as 'user',
|
||||
users.accessible as user_accesible,
|
||||
users.deleted as user_deleted,
|
||||
users.date_in as user_date_in,
|
||||
ips.ip as ip_id,
|
||||
ips.address as ip,
|
||||
ips.accessible as ip_accessible,
|
||||
ips.deleted as deleted,
|
||||
ips.date_in as ip_date_in,
|
||||
sessions.date_last as date_last,
|
||||
sessions.date_in as date_in,
|
||||
sessions.date_out as date_out
|
||||
from Sessions sessions
|
||||
join UsersDataView users on sessions.'user' = users.'user'
|
||||
join IpsDataView ips on sessions.ip = ips.ip;
|
||||
|
||||
drop view if exists MethodsView;
|
||||
create view MethodsView as
|
||||
select
|
||||
methods.id as id,
|
||||
applications.id as application_id,
|
||||
applications.name as application,
|
||||
methods.name as 'method',
|
||||
applications.date_in as application_date_in,
|
||||
methods.date_in as date_in
|
||||
from Methods methods
|
||||
join Applications applications on
|
||||
applications.date_out is null and
|
||||
methods.application = applications.id and
|
||||
methods.date_out is null;
|
||||
|
||||
drop view if exists LogsView;
|
||||
create view LogsView as
|
||||
select
|
||||
logs.id as id,
|
||||
sessions.id as session_id,
|
||||
sessions.user_id as user_id,
|
||||
sessions.'user' as 'user',
|
||||
sessions.user_accesible as user_accesible,
|
||||
sessions.user_deleted as user_deleted,
|
||||
sessions.user_date_in as user_date_in,
|
||||
sessions.ip_id as ip_id,
|
||||
sessions.ip as ip,
|
||||
sessions.ip_accessible as ip_accessible,
|
||||
sessions.deleted as session_deleted,
|
||||
sessions.ip_date_in as ip_date_in,
|
||||
sessions.date_last as date_last,
|
||||
sessions.date_in as session_date_in,
|
||||
sessions.date_out as session_date_out,
|
||||
methods.id as method_id,
|
||||
methods.application_id as application_id,
|
||||
methods.application as application,
|
||||
methods.'method' as 'method',
|
||||
methods.application_date_in as application_date_in,
|
||||
methods.date_in as method_date_in,
|
||||
logs.parameters as parameters,
|
||||
logs.error as error,
|
||||
logs.date_in as date_in,
|
||||
logs.date_out as date_out
|
||||
from Logs logs
|
||||
join MethodsView methods on logs.'method' = methods.id
|
||||
left join SessionsView sessions on logs.'session' = sessions.id;
|
||||
|
||||
drop view if exists TracesView;
|
||||
create view TracesView as
|
||||
select
|
||||
traces.id as id,
|
||||
sessions.id as session_id,
|
||||
sessions.user_id as user_id,
|
||||
sessions.'user' as 'user',
|
||||
sessions.user_accesible as user_accesible,
|
||||
sessions.user_deleted as user_deleted,
|
||||
sessions.user_date_in as user_date_in,
|
||||
sessions.ip_id as ip_id,
|
||||
sessions.ip as ip,
|
||||
sessions.ip_accessible as ip_accessible,
|
||||
sessions.deleted as session_deleted,
|
||||
sessions.ip_date_in as ip_date_in,
|
||||
sessions.date_last as date_last,
|
||||
sessions.date_in as session_date_in,
|
||||
sessions.date_out as session_date_out,
|
||||
methods.id as method_id,
|
||||
methods.application_id as application_id,
|
||||
methods.application as application,
|
||||
methods.'method' as 'method',
|
||||
methods.application_date_in as application_date_in,
|
||||
methods.date_in as method_date_in,
|
||||
traces.parameters as parameters,
|
||||
traces.error as error,
|
||||
traces.trace as trace,
|
||||
traces.message as message,
|
||||
traces.date_in as date_in,
|
||||
traces.date_out as date_out
|
||||
from Traces traces
|
||||
join MethodsView methods on traces.'method' = methods.id
|
||||
left join SessionsView sessions on traces.'session' = sessions.id;
|
0
SQL/KMarkDown.04.default_data.lite.sql
Executable file
1
WMD/JSON/html.files.json
Executable file
@ -0,0 +1 @@
|
||||
{"files":["\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/bugs.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/dictionary.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/example.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/faq.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/gitlab.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/modules\/checks.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/modules\/code_blocks.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/modules\/custom_parameters.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/modules\/font_formats.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/modules\/headers.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/modules\/links.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/modules\/maths.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/modules\/mermaid.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/modules\/multimedia.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/modules\/paragraphs.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/modules.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/projects.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/references.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/settings.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/targets.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/doc\/tarsier.html","\/mnt\/d\/git\/WMarkDown\/Public\/es\/index.html","\/mnt\/d\/git\/WMarkDown\/Public\/index.html"],"directories":["\/JSON","\/es","\/es\/doc","\/es\/doc\/modules"]}
|
36
WMD/dev/ECMAScript/index.w.md
Executable file
@ -0,0 +1,36 @@
|
||||
[[post_data {
|
||||
"author" : "KyMAN",
|
||||
"since" : 20220402,
|
||||
"version" : 20220402
|
||||
}]]
|
||||
# ECMAScript
|
||||
|
||||
[[header_level 0]]
|
||||
[[include /WMD/dev/Public/ecma/WMarkDown.Dictionary.ecma.js.w.md]]
|
||||
|
||||
[[header_level 0]]
|
||||
[[include /WMD/dev/Public/ecma/WMarkDown.Dictionary.old.ecma.js.w.md]]
|
||||
|
||||
[[header_level 0]]
|
||||
[[include /WMD/dev/Public/ecma/WMarkDown.Multimedia.ecma.js.w.md]]
|
||||
|
||||
[[header_level 0]]
|
||||
[[include /WMD/dev/Public/ecma/WMarkDown.WMonitor.ecma.js.w.md]]
|
||||
|
||||
[[header_level 0]]
|
||||
[[include /WMD/dev/Public/ecma/WMarkDown.ecma.js.w.md]]
|
||||
|
||||
|
||||
|
||||
[[html_data {
|
||||
"title" : "ECMAScript - WMarkDown",
|
||||
"url" : "https://wmarkdown.k3y.pw/dev/ECMAScript/index.html",
|
||||
"author" : "Tarsier,KyMAN",
|
||||
"since" : 20220402,
|
||||
"version" : 20220402,
|
||||
"key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,ecmascript",
|
||||
"description" : "Parte ECMAScript del WMarkDown.",
|
||||
"project" : "WMarkDown",
|
||||
"logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png",
|
||||
"language" : "es"
|
||||
}]]
|
164
WMD/dev/PHP/Abstracts/WMarkDown.Abstracts.Modules.php.w.md
Executable file
@ -0,0 +1,164 @@
|
||||
[[post_data {
|
||||
"author" : "KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220
|
||||
}]]
|
||||
# WMarkDown.Abstracts.Modules.php
|
||||
|
||||
```txt
|
||||
/PHP/Abstracts/WMarkDown.Abstracts.Modules.php
|
||||
```
|
||||
|
||||
## [[plain WMarkDown\Abstracts\Modules->__construct]]
|
||||
|
||||
[[wdoc
|
||||
Método constructor.
|
||||
@name WMarkDown\Abstracts\Modules->__construct
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 2d43277d1f2b7ab25c2db22973971d58
|
||||
#$wmarkdown - optional Parámetro $wmarkdown
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Abstracts\Modules->reset]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Abstracts\Modules->reset
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 5f82d3d60a4d86451919b358959747d8
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Abstracts\Modules->set_position]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Abstracts\Modules->set_position
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 89addabe4af4916310567126df002b75
|
||||
#$new_position - optional Parámetro $new_position
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Abstracts\Modules->get_position]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Abstracts\Modules->get_position
|
||||
@see WMarkDown\Abstracts\Modules->get_next_position
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash d7305b2bfc261efbb7759c8f6296a8f5
|
||||
#$string - optional Parámetro $string
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Abstracts\Modules->has_more]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Abstracts\Modules->has_more
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 79e93635e3b869086b808728fa4618db
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Abstracts\Modules->get_from]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Abstracts\Modules->get_from
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 1e994006c697f945d7b9835b509105ef
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Abstracts\Modules->get_length]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Abstracts\Modules->get_length
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 3176996f77eb83b011fa348b54d317ed
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Abstracts\Modules->get_to]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Abstracts\Modules->get_to
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 5983662edccadcb09ce30f9232bcf9f0
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Abstracts\Modules->get_content]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Abstracts\Modules->get_content
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash acde1565e22267a19bfa1eb13dcf2d5d
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Abstracts\Modules->get_html]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Abstracts\Modules->get_html
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 67308d46b9e9c8e3bd3c7083a70a9ceb
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
[[html_data {
|
||||
"title" : "WMarkDown.Abstracts.Modules.php - WMarkDown",
|
||||
"url" : "https://wmarkdown.k3y.pw/PHP/Abstracts/WMarkDown.Abstracts.Modules.php.html",
|
||||
"author" : "Tarsier,KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220,
|
||||
"key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,abstracts,modules",
|
||||
"description" : "WMarkDown.Abstracts.Modules.php del WMarkDown.",
|
||||
"project" : "WMarkDown",
|
||||
"logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png",
|
||||
"language" : "es"
|
||||
}]]
|
55
WMD/dev/PHP/Abstracts/WMarkDown.Abstracts.ScriptsAnalyzer.php.w.md
Executable file
@ -0,0 +1,55 @@
|
||||
[[post_data {
|
||||
"author" : "KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220
|
||||
}]]
|
||||
# WMarkDown.Abstracts.ScriptsAnalyzer.php
|
||||
|
||||
```txt
|
||||
/PHP/Abstracts/WMarkDown.Abstracts.ScriptsAnalyzer.php
|
||||
```
|
||||
|
||||
## [[plain WMarkDown\Abstracts\ScriptsAnalyzer->__construct]]
|
||||
|
||||
[[wdoc
|
||||
Método constructor.
|
||||
@name WMarkDown\Abstracts\ScriptsAnalyzer->__construct
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20220329
|
||||
@access public
|
||||
@hash 0bbc17c8e8a4fd59f816a170eaa052c9
|
||||
#$wmarkdown - optional Parámetro $wmarkdown
|
||||
#$parent - optional Parámetro $parent
|
||||
#$input - required Parámetro $input
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Abstracts\ScriptsAnalyzer->get_data]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Abstracts\ScriptsAnalyzer->get_data
|
||||
@see WMarkDown::string_variables
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20220329
|
||||
@version 20220329
|
||||
@access protected
|
||||
@hash 80cf030f90df75f48f6f7f9671062c30
|
||||
#$extension - optional Parámetro $extension
|
||||
#$wmd_path - optional Parámetro $wmd_path
|
||||
]]
|
||||
|
||||
[[html_data {
|
||||
"title" : "WMarkDown.Abstracts.ScriptsAnalyzer.php - WMarkDown",
|
||||
"url" : "https://wmarkdown.k3y.pw/PHP/Abstracts/WMarkDown.Abstracts.ScriptsAnalyzer.php.html",
|
||||
"author" : "Tarsier,KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220,
|
||||
"key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,abstracts,scripts,analyzer",
|
||||
"description" : "WMarkDown.Abstracts.ScriptsAnalyzer.php del WMarkDown.",
|
||||
"project" : "WMarkDown",
|
||||
"logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png",
|
||||
"language" : "es"
|
||||
}]]
|
115
WMD/dev/PHP/Drivers/WMarkDown.PDO.SQLite.php.w.md
Executable file
@ -0,0 +1,115 @@
|
||||
[[post_data {
|
||||
"author" : "KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220
|
||||
}]]
|
||||
# WMarkDown.PDO.SQLite.php
|
||||
|
||||
```txt
|
||||
/PHP/Drivers/WMarkDown.PDO.SQLite.php
|
||||
```
|
||||
|
||||
## [[plain WMarkDown\PDO\SQLite->close]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\PDO\SQLite->close
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access private
|
||||
@hash 5f8aa97596f575f3d6bb429221445312
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\PDO\SQLite->connect]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\PDO\SQLite->connect
|
||||
@see WMarkDown::string_variables
|
||||
@see WMarkDown->settings
|
||||
@see WMarkDown\PDO\SQLite->close
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access private
|
||||
@hash d0aa13ff85ad69789823f9b972592a9c
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\PDO\SQLite->__construct]]
|
||||
|
||||
[[wdoc
|
||||
Método constructor.
|
||||
@name WMarkDown\PDO\SQLite->__construct
|
||||
@see WMarkDown->settings
|
||||
@see WMarkDown\PDO\SQLite->connect
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 3bd6cb720112886c353b06ac84a3f7ea
|
||||
#$wmarkdown - optional Parámetro $wmarkdown
|
||||
#$input - required Parámetro $input
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\PDO\SQLite->__destruct]]
|
||||
|
||||
[[wdoc
|
||||
Método destructor.
|
||||
@name WMarkDown\PDO\SQLite->__destruct
|
||||
@see WMarkDown\PDO\SQLite->close
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 9f851c6b4bbd8c7e10094f1a091740fa
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\PDO\SQLite::query_variables]]
|
||||
|
||||
[[wdoc
|
||||
Método static.
|
||||
@name WMarkDown\PDO\SQLite::query_variables
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash a5ccc34b70d690defd98cbe3ef0fb34d
|
||||
#$query - optional Parámetro $query
|
||||
#$variables - optional Parámetro $variables
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\PDO\SQLite->query]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\PDO\SQLite->query
|
||||
@see WMarkDown\PDO\SQLite->connect
|
||||
@see WMarkDown\PDO\SQLite::query_variables
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 3149e48366e2cde626334831bd6f8bd5
|
||||
#$query - optional Parámetro $query
|
||||
#$input - required Parámetro $input
|
||||
]]
|
||||
|
||||
[[html_data {
|
||||
"title" : "WMarkDown.PDO.SQLite.php - WMarkDown",
|
||||
"url" : "https://wmarkdown.k3y.pw/PHP/Drivers/WMarkDown.PDO.SQLite.php.html",
|
||||
"author" : "Tarsier,KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220,
|
||||
"key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,DO,SQ,lite",
|
||||
"description" : "WMarkDown.PDO.SQLite.php del WMarkDown.",
|
||||
"project" : "WMarkDown",
|
||||
"logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png",
|
||||
"language" : "es"
|
||||
}]]
|
37
WMD/dev/PHP/Interfaces/WMarkDown.Interfaces.Modules.php.w.md
Executable file
@ -0,0 +1,37 @@
|
||||
[[post_data {
|
||||
"author" : "KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220
|
||||
}]]
|
||||
# WMarkDown.Interfaces.Modules.php
|
||||
|
||||
```txt
|
||||
/PHP/Interfaces/WMarkDown.Interfaces.Modules.php
|
||||
```
|
||||
|
||||
## [[plain WMarkDown\Interfaces\Modules->get_next_position]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Interfaces\Modules->get_next_position
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 3149e48366e2cde626334831bd6f8bd5
|
||||
#$string - optional Parámetro $string
|
||||
]]
|
||||
|
||||
[[html_data {
|
||||
"title" : "WMarkDown.Interfaces.Modules.php - WMarkDown",
|
||||
"url" : "https://wmarkdown.k3y.pw/PHP/Interfaces/WMarkDown.Interfaces.Modules.php.html",
|
||||
"author" : "Tarsier,KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220,
|
||||
"key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,interfaces,modules",
|
||||
"description" : "WMarkDown.Interfaces.Modules.php del WMarkDown.",
|
||||
"project" : "WMarkDown",
|
||||
"logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png",
|
||||
"language" : "es"
|
||||
}]]
|
40
WMD/dev/PHP/Interfaces/WMarkDown.Interfaces.ScriptsAnalyzer.php.w.md
Executable file
@ -0,0 +1,40 @@
|
||||
[[post_data {
|
||||
"author" : "KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220
|
||||
}]]
|
||||
# WMarkDown.Interfaces.ScriptsAnalyzer.php
|
||||
|
||||
```txt
|
||||
/PHP/Interfaces/WMarkDown.Interfaces.ScriptsAnalyzer.php
|
||||
```
|
||||
|
||||
## [[plain WMarkDown\Interfaces\ScriptsAnalyzer->analyze]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Interfaces\ScriptsAnalyzer->analyze
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 3149e48366e2cde626334831bd6f8bd5
|
||||
#$file - optional Parámetro $file
|
||||
#$path - required Parámetro $path
|
||||
#&$languages - optional Parámetro &$languages
|
||||
#$level - optional Parámetro $level
|
||||
]]
|
||||
|
||||
[[html_data {
|
||||
"title" : "WMarkDown.Interfaces.ScriptsAnalyzer.php - WMarkDown",
|
||||
"url" : "https://wmarkdown.k3y.pw/PHP/Interfaces/WMarkDown.Interfaces.ScriptsAnalyzer.php.html",
|
||||
"author" : "Tarsier,KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220,
|
||||
"key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,interfaces,scripts,analyzer",
|
||||
"description" : "WMarkDown.Interfaces.ScriptsAnalyzer.php del WMarkDown.",
|
||||
"project" : "WMarkDown",
|
||||
"logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png",
|
||||
"language" : "es"
|
||||
}]]
|
54
WMD/dev/PHP/Modules/WMarkDown.Modules.Checks.php.w.md
Executable file
@ -0,0 +1,54 @@
|
||||
[[post_data {
|
||||
"author" : "KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220
|
||||
}]]
|
||||
# WMarkDown.Modules.Checks.php
|
||||
|
||||
```txt
|
||||
/PHP/Modules/WMarkDown.Modules.Checks.php
|
||||
```
|
||||
|
||||
## [[plain WMarkDown\Modules\Checks->get_next_position]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\Checks->get_next_position
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 1bf1d56828eb6f3e7d9ea8eabe8eed2a
|
||||
#$string - optional Parámetro $string
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\Checks->process]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\Checks->process
|
||||
@see WMarkDown->get_hash
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 3149e48366e2cde626334831bd6f8bd5
|
||||
#$string - optional Parámetro $string
|
||||
#$modules - optional Parámetro $modules
|
||||
#$level - optional Parámetro $level
|
||||
]]
|
||||
|
||||
[[html_data {
|
||||
"title" : "WMarkDown.Modules.Checks.php - WMarkDown",
|
||||
"url" : "https://wmarkdown.k3y.pw/PHP/Modules/WMarkDown.Modules.Checks.php.html",
|
||||
"author" : "Tarsier,KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220,
|
||||
"key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,modules,checks",
|
||||
"description" : "WMarkDown.Modules.Checks.php del WMarkDown.",
|
||||
"project" : "WMarkDown",
|
||||
"logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png",
|
||||
"language" : "es"
|
||||
}]]
|
55
WMD/dev/PHP/Modules/WMarkDown.Modules.CodeBlocks.php.w.md
Executable file
@ -0,0 +1,55 @@
|
||||
[[post_data {
|
||||
"author" : "KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220
|
||||
}]]
|
||||
# WMarkDown.Modules.CodeBlocks.php
|
||||
|
||||
```txt
|
||||
/PHP/Modules/WMarkDown.Modules.CodeBlocks.php
|
||||
```
|
||||
|
||||
## [[plain WMarkDown\Modules\CodeBlocks->get_next_position]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\CodeBlocks->get_next_position
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 006dc1c9f8ae3ccf78ef52de6b756c5b
|
||||
#$string - optional Parámetro $string
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\CodeBlocks->process]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\CodeBlocks->process
|
||||
@see WMarkDown->settings
|
||||
@see WMarkDown->string_variables
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 80cf030f90df75f48f6f7f9671062c30
|
||||
#$string - optional Parámetro $string
|
||||
#$modules - optional Parámetro $modules
|
||||
#$level - optional Parámetro $level
|
||||
]]
|
||||
|
||||
[[html_data {
|
||||
"title" : "WMarkDown.Modules.CodeBlocks.php - WMarkDown",
|
||||
"url" : "https://wmarkdown.k3y.pw/PHP/Modules/WMarkDown.Modules.CodeBlocks.php.html",
|
||||
"author" : "Tarsier,KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220,
|
||||
"key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,modules,code,blocks",
|
||||
"description" : "WMarkDown.Modules.CodeBlocks.php del WMarkDown.",
|
||||
"project" : "WMarkDown",
|
||||
"logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png",
|
||||
"language" : "es"
|
||||
}]]
|
97
WMD/dev/PHP/Modules/WMarkDown.Modules.CustomParameters.php.w.md
Executable file
@ -0,0 +1,97 @@
|
||||
[[post_data {
|
||||
"author" : "KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220
|
||||
}]]
|
||||
# WMarkDown.Modules.CustomParameters.php
|
||||
|
||||
```txt
|
||||
/PHP/Modules/WMarkDown.Modules.CustomParameters.php
|
||||
```
|
||||
|
||||
## [[plain WMarkDown\Modules\CustomParameters->get_next_position]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\CustomParameters->get_next_position
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20220329
|
||||
@access public
|
||||
@hash fbb5dc26687f441e25a5af5de646d522
|
||||
#$string - optional Parámetro $string
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\CustomParameters->process]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\CustomParameters->process
|
||||
@see WMarkDown::string_variables
|
||||
@see WMarkDown\Modules::format
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash ab51b9f064a1fe85000ecfd6fba5b66d
|
||||
#$string - optional Parámetro $string
|
||||
#$modules - optional Parámetro $modules
|
||||
#$level - optional Parámetro $level
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\CustomParameters->get_menu]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\CustomParameters->get_menu
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 9d2f52569f7c1268194a9cf96134a2fc
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\CustomParameters->get_title]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\CustomParameters->get_title
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 927086813ae7fd266774bc8b2d62300a
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\CustomParameters->get_order]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\CustomParameters->get_order
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 80cf030f90df75f48f6f7f9671062c30
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
[[html_data {
|
||||
"title" : "WMarkDown.Modules.CustomParameters.php - WMarkDown",
|
||||
"url" : "https://wmarkdown.k3y.pw/PHP/Modules/WMarkDown.Modules.CustomParameters.php.html",
|
||||
"author" : "Tarsier,KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220,
|
||||
"key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,modules,custom,parameters",
|
||||
"description" : "WMarkDown.Modules.CustomParameters.php del WMarkDown.",
|
||||
"project" : "WMarkDown",
|
||||
"logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png",
|
||||
"language" : "es"
|
||||
}]]
|
53
WMD/dev/PHP/Modules/WMarkDown.Modules.Escapes.php.w.md
Executable file
@ -0,0 +1,53 @@
|
||||
[[post_data {
|
||||
"author" : "KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220
|
||||
}]]
|
||||
# WMarkDown.Modules.Escapes.php
|
||||
|
||||
```txt
|
||||
/PHP/Modules/WMarkDown.Modules.Escapes.php
|
||||
```
|
||||
|
||||
## [[plain WMarkDown\Modules\Escapes->get_next_position]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\Escapes->get_next_position
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 92d5dfbb743b4c5c78d011af9a9fcb95
|
||||
#$string - optional Parámetro $string
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\Escapes->process]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\Escapes->process
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 80cf030f90df75f48f6f7f9671062c30
|
||||
#$string - optional Parámetro $string
|
||||
#$modules - optional Parámetro $modules
|
||||
#$level - optional Parámetro $level
|
||||
]]
|
||||
|
||||
[[html_data {
|
||||
"title" : "WMarkDown.Modules.Escapes.php - WMarkDown",
|
||||
"url" : "https://wmarkdown.k3y.pw/PHP/Modules/WMarkDown.Modules.Escapes.php.html",
|
||||
"author" : "Tarsier,KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220,
|
||||
"key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,modules,escapes",
|
||||
"description" : "WMarkDown.Modules.Escapes.php del WMarkDown.",
|
||||
"project" : "WMarkDown",
|
||||
"logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png",
|
||||
"language" : "es"
|
||||
}]]
|
54
WMD/dev/PHP/Modules/WMarkDown.Modules.FontFormats.php.w.md
Executable file
@ -0,0 +1,54 @@
|
||||
[[post_data {
|
||||
"author" : "KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220
|
||||
}]]
|
||||
# WMarkDown.Modules.FontFormats.php
|
||||
|
||||
```txt
|
||||
/PHP/Modules/WMarkDown.Modules.FontFormats.php
|
||||
```
|
||||
|
||||
## [[plain WMarkDown\Modules\FontFormats->get_next_position]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\FontFormats->get_next_position
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 58007fe84df88460b7f678d1251bdc2c
|
||||
#$string - optional Parámetro $string
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\FontFormats->process]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\FontFormats->process
|
||||
@see WMarkDown\Modules::format
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 80cf030f90df75f48f6f7f9671062c30
|
||||
#$string - optional Parámetro $string
|
||||
#$modules - optional Parámetro $modules
|
||||
#$level - optional Parámetro $level
|
||||
]]
|
||||
|
||||
[[html_data {
|
||||
"title" : "WMarkDown.Modules.FontFormats.php - WMarkDown",
|
||||
"url" : "https://wmarkdown.k3y.pw/PHP/Modules/WMarkDown.Modules.FontFormats.php.html",
|
||||
"author" : "Tarsier,KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220,
|
||||
"key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,modules,font,formats",
|
||||
"description" : "WMarkDown.Modules.FontFormats.php del WMarkDown.",
|
||||
"project" : "WMarkDown",
|
||||
"logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png",
|
||||
"language" : "es"
|
||||
}]]
|
98
WMD/dev/PHP/Modules/WMarkDown.Modules.Headers.php.w.md
Executable file
@ -0,0 +1,98 @@
|
||||
[[post_data {
|
||||
"author" : "KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220
|
||||
}]]
|
||||
# WMarkDown.Modules.Headers.php
|
||||
|
||||
```txt
|
||||
/PHP/Modules/WMarkDown.Modules.Headers.php
|
||||
```
|
||||
|
||||
## [[plain WMarkDown\Modules\Headers::id]]
|
||||
|
||||
[[wdoc
|
||||
Método static.
|
||||
@name WMarkDown\Modules\Headers::id
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20220329
|
||||
@access public
|
||||
@hash c09ae0b210bf75b78a479db0c6095b7c
|
||||
#$text - optional Parámetro $text
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\Headers->get_next_position]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\Headers->get_next_position
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20220329
|
||||
@access public
|
||||
@hash e35db94096d6575b2b8b72d6b6d65e4a
|
||||
#$string - optional Parámetro $string
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\Headers->process]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\Headers->process
|
||||
@see WMarkDown\Modules::format
|
||||
@see WMarkDown\Modules\Headers::id
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 7c61a5cff2595fb2fe3d2595d2a7aaeb
|
||||
#$string - optional Parámetro $string
|
||||
#$modules - optional Parámetro $modules
|
||||
#$level - optional Parámetro $level
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\Headers->get_id]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\Headers->get_id
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash ed5d32d71c33546a5e0cce942f6e16a6
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\Headers->get_level]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\Headers->get_level
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 67308d46b9e9c8e3bd3c7083a70a9ceb
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
[[html_data {
|
||||
"title" : "WMarkDown.Modules.Headers.php - WMarkDown",
|
||||
"url" : "https://wmarkdown.k3y.pw/PHP/Modules/WMarkDown.Modules.Headers.php.html",
|
||||
"author" : "Tarsier,KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220,
|
||||
"key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,modules,headers",
|
||||
"description" : "WMarkDown.Modules.Headers.php del WMarkDown.",
|
||||
"project" : "WMarkDown",
|
||||
"logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png",
|
||||
"language" : "es"
|
||||
}]]
|
83
WMD/dev/PHP/Modules/WMarkDown.Modules.Includes.php.w.md
Executable file
@ -0,0 +1,83 @@
|
||||
[[post_data {
|
||||
"author" : "KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220
|
||||
}]]
|
||||
# WMarkDown.Modules.Includes.php
|
||||
|
||||
```txt
|
||||
/PHP/Modules/WMarkDown.Modules.Includes.php
|
||||
```
|
||||
|
||||
## [[plain WMarkDown\Modules\Includes->get_next_position]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\Includes->get_next_position
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 032e5f8a37b93e6c9edc645891e5a0cf
|
||||
#$string - optional Parámetro $string
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\Includes->process]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\Includes->process
|
||||
@see WMarkDown\Modules::format
|
||||
@see WMarkDown->load_file
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 2319aae9e652048a15f227fae01c9085
|
||||
#$string - optional Parámetro $string
|
||||
#$modules - optional Parámetro $modules
|
||||
#$level - optional Parámetro $level
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\Includes->get_menu]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\Includes->get_menu
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash cc1d018ac317b53c07b4493072971d87
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
## [[plain WMarkDown\Modules\Includes->get_title]]
|
||||
|
||||
[[wdoc
|
||||
Método object.
|
||||
@name WMarkDown\Modules\Includes->get_title
|
||||
@lang PHP
|
||||
@author KyMAN
|
||||
@since 20211220
|
||||
@version 20211220
|
||||
@access public
|
||||
@hash 80cf030f90df75f48f6f7f9671062c30
|
||||
#return - - Retorno.
|
||||
]]
|
||||
|
||||
[[html_data {
|
||||
"title" : "WMarkDown.Modules.Includes.php - WMarkDown",
|
||||
"url" : "https://wmarkdown.k3y.pw/PHP/Modules/WMarkDown.Modules.Includes.php.html",
|
||||
"author" : "Tarsier,KyMAN",
|
||||
"since" : 20211220,
|
||||
"version" : 20211220,
|
||||
"key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,modules,includes",
|
||||
"description" : "WMarkDown.Modules.Includes.php del WMarkDown.",
|
||||
"project" : "WMarkDown",
|
||||
"logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png",
|
||||
"language" : "es"
|
||||
}]]
|