@ -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 |
||||
|
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 770 B |
After Width: | Height: | Size: 9.2 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 14 KiB |
@ -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> |
@ -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}" |
||||
}]] |
@ -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}" |
||||
}]] |
@ -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" |
||||
} |
@ -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;} |
||||
|
||||
} |
@ -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)); |
||||
} |
||||
|
||||
}; |
@ -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; |
||||
} |
||||
|
||||
}; |
@ -0,0 +1,10 @@ |
||||
<?php |
||||
|
||||
namespace WMarkDown\Interfaces; |
||||
|
||||
interface Modules{ |
||||
|
||||
public function get_next_position($string); |
||||
public function process($string, $modules, $level); |
||||
|
||||
}; |
@ -0,0 +1,9 @@ |
||||
<?php |
||||
|
||||
namespace WMarkDown\Interfaces; |
||||
|
||||
interface ScriptsAnalyzer{ |
||||
|
||||
public function analyze($file, $path = null, &$languages = [], $level = 0); |
||||
|
||||
}; |
@ -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> |
||||
'); |
||||
} |
||||
|
||||
}; |
@ -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> |
||||
'); |
||||
|
||||
} |
||||
|
||||
}; |
@ -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;} |
||||
|
||||
}; |
@ -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]; |
||||
|
||||
} |
||||
|
||||
}; |
@ -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 . '>' |
||||
); |
||||
|
||||
} |
||||
|
||||
}; |
@ -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;} |
||||
|
||||
} |
@ -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;} |
||||
|
||||
}; |
@ -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>'; |
||||
|
||||
} |
||||
|
||||
}; |
@ -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; |
||||
|
||||
} |
||||
|
||||
}; |
@ -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]; |
||||
|
||||
} |
||||
|
||||
}; |
@ -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>'; |
||||
|
||||
} |
||||
|
||||
}; |
@ -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>'; |
||||
|
||||
} |
||||
|
||||
}; |
@ -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]; |
||||
|
||||
} |
||||
|
||||
}; |
@ -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); |
||||
|
||||
} |
||||
|
||||
}; |
@ -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); |
||||
|
||||
} |
||||
|
||||
}; |
@ -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); |
||||
|
||||
} |
||||
|
||||
}; |
@ -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" => []]; |
||||
|
||||
} |
||||
|
||||
}; |
@ -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" => []]; |
||||
|
||||
} |
||||
|
||||
}; |
@ -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); |
||||
} |
||||
|
||||
}; |
@ -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; |
||||
} |
||||
|
||||
}; |
@ -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" |
||||
]); |
||||
|
||||
} |
||||
|
||||
}; |
@ -0,0 +1,7 @@ |
||||
<?php |
||||
|
||||
namespace WMarkDown; |
||||
|
||||
class Sessions{ |
||||
|
||||
} |
@ -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); |
||||
}); |
||||
} |
||||
|
||||
}; |
@ -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; |
@ -0,0 +1 @@ |
||||
Header set Access-Control-Allow-Origin "*" |
@ -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";} |
@ -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(); |
||||
|
||||
}; |
@ -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(); |
||||
|
||||
}; |
@ -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(); |
||||
|
||||
}; |
@ -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(); |
||||
|
||||
}; |
@ -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(); |
||||
|
||||
}; |
@ -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(); |
||||
|
||||
}; |
@ -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(); |
||||
|
||||
}; |
@ -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 + `>`; |
||||
|
||||
}; |
@ -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."; |
After Width: | Height: | Size: 7.0 KiB |
@ -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" |
||||
} |
@ -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"] |
||||
} |
@ -0,0 +1,2 @@ |
||||
User-agent: * |
||||
Allow: / |
@ -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;} |
||||
} |
||||
|
||||
} |
@ -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%);} |
||||
} |
||||
|
||||
} |
@ -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 */ |
@ -0,0 +1,5 @@ |
||||
.wmarkdown{ |
||||
|
||||
.MathJax{font-size : 1.3em;} |
||||
|
||||
} |
@ -0,0 +1 @@ |
||||
@import "WMarkDown.settings.scss", "WMarkDown.base.scss", "WMarkDown.components.scss", "WMarkDown.external.scss"; |
@ -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; |
@ -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> |
@ -0,0 +1 @@ |
||||
<?php trim(shell_exec("git fetch")) && shell_exec("git pull"); |
@ -0,0 +1,6 @@ |
||||
<?php |
||||
|
||||
include __DIR__ . "/../PHP/include.php"; |
||||
include __DIR__ . "/../PHP/WMarkDown.Secrets.php"; |
||||
|
||||
$wmd = new WMarkDown(WMarkDown\Secrets::wmarkdown); |
@ -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)); |
@ -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; |
@ -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) |
||||
); |
@ -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,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"]} |
@ -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" |
||||
}]] |
@ -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" |
||||
}]] |
@ -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" |
||||
}]] |
@ -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" |
||||
}]] |
@ -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" |
||||
}]] |
@ -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" |
||||
}]] |
@ -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" |
||||
}]] |
@ -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" |
||||
}]] |
@ -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" |
||||
}]] |
@ -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" |
||||
}]] |
@ -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" |
||||
}]] |
@ -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" |
||||
}]] |
@ -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" |
||||
}]] |