diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..28a890c --- /dev/null +++ b/.gitignore @@ -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 + diff --git a/ArtBook/capaswmarkdown.svg b/ArtBook/capaswmarkdown.svg new file mode 100755 index 0000000..b6d6c6d --- /dev/null +++ b/ArtBook/capaswmarkdown.svg @@ -0,0 +1,152 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + diff --git a/ArtBook/wmarkdown.png b/ArtBook/wmarkdown.png new file mode 100755 index 0000000..191e10c Binary files /dev/null and b/ArtBook/wmarkdown.png differ diff --git a/ArtBook/wmarkdown.svg b/ArtBook/wmarkdown.svg new file mode 100755 index 0000000..b4d4de5 --- /dev/null +++ b/ArtBook/wmarkdown.svg @@ -0,0 +1,22 @@ + + + + +Created by potrace 1.12, written by Peter Selinger 2001-2015 + + + + + + + + diff --git a/ArtBook/wmarkdown.xcf b/ArtBook/wmarkdown.xcf new file mode 100755 index 0000000..6182eb8 Binary files /dev/null and b/ArtBook/wmarkdown.xcf differ diff --git a/ArtBook/wmarkdown180.png b/ArtBook/wmarkdown180.png new file mode 100755 index 0000000..6dadb08 Binary files /dev/null and b/ArtBook/wmarkdown180.png differ diff --git a/ArtBook/wmarkdown192.png b/ArtBook/wmarkdown192.png new file mode 100755 index 0000000..eba3ec6 Binary files /dev/null and b/ArtBook/wmarkdown192.png differ diff --git a/ArtBook/wmarkdown270.png b/ArtBook/wmarkdown270.png new file mode 100755 index 0000000..74552d1 Binary files /dev/null and b/ArtBook/wmarkdown270.png differ diff --git a/ArtBook/wmarkdown32.png b/ArtBook/wmarkdown32.png new file mode 100755 index 0000000..567ae08 Binary files /dev/null and b/ArtBook/wmarkdown32.png differ diff --git a/ArtBook/wmarkdown512.png b/ArtBook/wmarkdown512.png new file mode 100755 index 0000000..c7d0e64 Binary files /dev/null and b/ArtBook/wmarkdown512.png differ diff --git a/ArtBook/wmarkdown_color.svg b/ArtBook/wmarkdown_color.svg new file mode 100755 index 0000000..baaa087 --- /dev/null +++ b/ArtBook/wmarkdown_color.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/ArtBook/wmarkdown_color.xcf b/ArtBook/wmarkdown_color.xcf new file mode 100755 index 0000000..f4c9e09 Binary files /dev/null and b/ArtBook/wmarkdown_color.xcf differ diff --git a/ArtBook/wmarkdown_color180.png b/ArtBook/wmarkdown_color180.png new file mode 100755 index 0000000..b4ba95d Binary files /dev/null and b/ArtBook/wmarkdown_color180.png differ diff --git a/ArtBook/wmarkdown_color192.png b/ArtBook/wmarkdown_color192.png new file mode 100755 index 0000000..dc97015 Binary files /dev/null and b/ArtBook/wmarkdown_color192.png differ diff --git a/ArtBook/wmarkdown_color270.png b/ArtBook/wmarkdown_color270.png new file mode 100755 index 0000000..89d10d0 Binary files /dev/null and b/ArtBook/wmarkdown_color270.png differ diff --git a/ArtBook/wmarkdown_color32.png b/ArtBook/wmarkdown_color32.png new file mode 100755 index 0000000..a09cd6c Binary files /dev/null and b/ArtBook/wmarkdown_color32.png differ diff --git a/ArtBook/wmarkdown_color512.png b/ArtBook/wmarkdown_color512.png new file mode 100755 index 0000000..07d1129 Binary files /dev/null and b/ArtBook/wmarkdown_color512.png differ diff --git a/HTML/base.wmarkdown.html b/HTML/base.wmarkdown.html new file mode 100755 index 0000000..898dd8e --- /dev/null +++ b/HTML/base.wmarkdown.html @@ -0,0 +1,185 @@ + + + + {title} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ + + WMarkDown + + + WMarkDown + +

+ +
+
+
+ Menu + + +
+
+ Content +
{content}
+
+
+ Files + + +
+
+ + + diff --git a/HTML/file.w.md b/HTML/file.w.md new file mode 100755 index 0000000..d990758 --- /dev/null +++ b/HTML/file.w.md @@ -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}" +}]] diff --git a/HTML/script.w.md b/HTML/script.w.md new file mode 100755 index 0000000..516d7e9 --- /dev/null +++ b/HTML/script.w.md @@ -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}" +}]] diff --git a/JSON/WMarkDown.settings.json b/JSON/WMarkDown.settings.json new file mode 100755 index 0000000..baac168 --- /dev/null +++ b/JSON/WMarkDown.settings.json @@ -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" +} diff --git a/PHP/Abstracts/WMarkDown.Abstracts.Modules.php b/PHP/Abstracts/WMarkDown.Abstracts.Modules.php new file mode 100755 index 0000000..7b1990f --- /dev/null +++ b/PHP/Abstracts/WMarkDown.Abstracts.Modules.php @@ -0,0 +1,51 @@ +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;} + + } diff --git a/PHP/Abstracts/WMarkDown.Abstracts.ScriptsAnalyzer.php b/PHP/Abstracts/WMarkDown.Abstracts.ScriptsAnalyzer.php new file mode 100755 index 0000000..10d8dfa --- /dev/null +++ b/PHP/Abstracts/WMarkDown.Abstracts.ScriptsAnalyzer.php @@ -0,0 +1,42 @@ +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)); + } + + }; diff --git a/PHP/Drivers/WMarkDown.PDO.SQLite.php b/PHP/Drivers/WMarkDown.PDO.SQLite.php new file mode 100755 index 0000000..847b223 --- /dev/null +++ b/PHP/Drivers/WMarkDown.PDO.SQLite.php @@ -0,0 +1,155 @@ +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; + } + + }; diff --git a/PHP/Interfaces/WMarkDown.Interfaces.Modules.php b/PHP/Interfaces/WMarkDown.Interfaces.Modules.php new file mode 100755 index 0000000..6727dcb --- /dev/null +++ b/PHP/Interfaces/WMarkDown.Interfaces.Modules.php @@ -0,0 +1,10 @@ +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 = (' + + '); + } + + }; diff --git a/PHP/Modules/WMarkDown.Modules.CodeBlocks.php b/PHP/Modules/WMarkDown.Modules.CodeBlocks.php new file mode 100755 index 0000000..a352b53 --- /dev/null +++ b/PHP/Modules/WMarkDown.Modules.CodeBlocks.php @@ -0,0 +1,98 @@ + "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 .= '
  • '; + + 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((' +
  • + + {text} + {data} +
  • + '), $data); + + $this->html = (' +
    +                    
    +                    ' . ($is_special ? ('
    +                        
    ' . $this->content . '
    + ') : (' +
      ' . $lines . '
    +
    ' . $this->content . '
    + ')) . ' +
    + '); + + } + + }; diff --git a/PHP/Modules/WMarkDown.Modules.CustomParameters.php b/PHP/Modules/WMarkDown.Modules.CustomParameters.php new file mode 100755 index 0000000..c7ddc99 --- /dev/null +++ b/PHP/Modules/WMarkDown.Modules.CustomParameters.php @@ -0,0 +1,298 @@ +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((' +
    + Por {author}. Creado a fecha {since}. Última modificación a fecha {version}. +
    + '), $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 ? '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"] . ' + + ') : ''; + + break; + case "wmonitor": + $this->html = $this->matches[2][0] ? 'WMonitor' : ''; + break; + case "ignore": + $this->html = '' . $this->matches[2][0] . ''; + break; + case "links_group": + case "links_groups": + + $html = ''; + + break; + case "i": + case "!": + case "icon": + $this->html = preg_match('/^([^ ]+)( ((.+|[\r\n]+)+)?)?/', $this->matches[2][0], $matches) ? ( + '' . + '' . + (empty($matches[3]) ? '' : '' . $matches[3] . '') . + '' + ) : $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], '' . $values[4] . '']); + 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 .= ( + '
  • ' . + '' . $value[0] . '' . + '' . (is_array($value[1]) ? '' . implode('', $value[1]) . '' : $value[1]) . '' . + '
  • ' + ); + }; + + 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 .= ( + '' . + '' . $attribute[0] . '' . + '' . preg_replace('/,/', '', $attribute[1] == "-" ? "ANY" : $attribute[1]) . '' . + '' . $attribute[2] . '' . + '' . ($attribute[3] ? $attribute[3] : '') . '' . + '' + ); + $attributes_html .= ( + '' . + 'return' . + '' . ($return_type == "-" ? "ANY" : $return_type) . '' . + '' . + '' . ($return[$i] && $return[$i][1] ? $return[$i][1] : '') . '' . + '' + ); + + $html .= ( + '
    ' . + '
    ' . + '' . ($return_type == "-" ? "ANY" : $return_type) . '' . + '' . $name . '' . + '' . $attributes_html . '' . + '
    ' . + '
    ' . $attributes_html . '
    ' . + '
    ' + ); + + }; + + $this->html = ( + '
    ' . + '' . + ($deprecated ? ( + '' . + '' . + 'Deprecated' . + '' + ) : '') . + '' . $name . '' . + '' . $language . '' . + '' . + '

    ' . $description . '

    ' . + $html . + '' . + '
    ' + ); + + 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;} + + }; diff --git a/PHP/Modules/WMarkDown.Modules.Escapes.php b/PHP/Modules/WMarkDown.Modules.Escapes.php new file mode 100755 index 0000000..6e98877 --- /dev/null +++ b/PHP/Modules/WMarkDown.Modules.Escapes.php @@ -0,0 +1,27 @@ +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]; + + } + + }; diff --git a/PHP/Modules/WMarkDown.Modules.FontFormats.php b/PHP/Modules/WMarkDown.Modules.FontFormats.php new file mode 100755 index 0000000..aebf309 --- /dev/null +++ b/PHP/Modules/WMarkDown.Modules.FontFormats.php @@ -0,0 +1,52 @@ +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"] . + '' + ); + + } + + }; diff --git a/PHP/Modules/WMarkDown.Modules.Headers.php b/PHP/Modules/WMarkDown.Modules.Headers.php new file mode 100755 index 0000000..b9ba39b --- /dev/null +++ b/PHP/Modules/WMarkDown.Modules.Headers.php @@ -0,0 +1,56 @@ +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 = '' . $html . ''; + + } + + public function get_id(){return "" . $this->id;} + public function get_level(){return 0 | $this->level;} + + } diff --git a/PHP/Modules/WMarkDown.Modules.Includes.php b/PHP/Modules/WMarkDown.Modules.Includes.php new file mode 100755 index 0000000..9afa9f8 --- /dev/null +++ b/PHP/Modules/WMarkDown.Modules.Includes.php @@ -0,0 +1,42 @@ +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 = ( + '
    ' . + 'matches[1][0], 1))) . '">' . + $formatted["content"] . + '
    ' + ); + $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;} + + }; diff --git a/PHP/Modules/WMarkDown.Modules.Links.php b/PHP/Modules/WMarkDown.Modules.Links.php new file mode 100755 index 0000000..2e7f790 --- /dev/null +++ b/PHP/Modules/WMarkDown.Modules.Links.php @@ -0,0 +1,75 @@ +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 ? '' : '' . ($text && $text != $link ? \WMarkDown\Modules::format($this->wmarkdown, $text, ["paragraphs", "links"], $modules)["content"] : $link) . ''; + + } + + }; diff --git a/PHP/Modules/WMarkDown.Modules.Lists.php b/PHP/Modules/WMarkDown.Modules.Lists.php new file mode 100755 index 0000000..2b2bb8f --- /dev/null +++ b/PHP/Modules/WMarkDown.Modules.Lists.php @@ -0,0 +1,133 @@ + $level){ + $closed = true; + $l --; + for($i = 0; !$i || $i < $levels[$l]["levels"]; $i ++) + $html .= ''; + if($levels[$l]["close"]) + $html .= ''; + 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 .= '
  • ' . \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 .= '
  • ' . \WMarkDown\Modules::format($this->wmarkdown, $content, ["paragraphs"], $modules)["content"]; + self::close($html, $levels, $l, 0); + preg_match('/^<([ou]l)(.+|[\r\n])+$/', $html, $tag); + $html .= ''; + + $this->length = strlen($this->matches[0][0]); + $this->to = $this->from + $this->length; + $this->content = $this->matches[1][0]; + $this->html = $html; + + } + + }; diff --git a/PHP/Modules/WMarkDown.Modules.Multimedia.php b/PHP/Modules/WMarkDown.Modules.Multimedia.php new file mode 100755 index 0000000..da63c05 --- /dev/null +++ b/PHP/Modules/WMarkDown.Modules.Multimedia.php @@ -0,0 +1,292 @@ +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 '
    ' . $html . '
    '; + } + + 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 .= '' . $image_text . ''; + + return (' + + ' . $text . ' + + + + ' . ($text !== null ? '' . $text . '' : '') . ' + + '); + } + + 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 .= (' + + '); + + return (' + + + + + ' . ($text !== null ? '' . $text . '' : null) . ' + + '); + } + + 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 .= (' + + '); + + return (' + + + + + ' . (!empty($posters) ? $this->audio_poster([ + "images" => $posters, + "text" => $text + ], $multiple) : ($text !== null ? '' . $text . '' : null)) . ' + + '); + } + + 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 .= (' + + + + '); + elseif(preg_match('/^https?\:\/{2}((www|player)\.)?vimeo\.com\/(video\/)?(\d+)/', $link, $matches) && ($i = self::check($matches, [4]))) + $html .= (' + + + + '); + elseif(preg_match('/^https?\:\/{2}(www\.)?facebook\.com\/((?!\/videos\/).)+\/videos\/(\d+)/', $link, $matches) && ($i = self::check($matches, [3]))) + $html .= (' + + + + '); + elseif(preg_match('/^https?\:\/{2}((www|player)\.)?twitch\.(com|tv)\/(videos\/|\?video\=)(\d+)/', $link, $matches) && ($i = self::check($matches, [5]))) + $html .= (' + + + + '); + else + $j --; + }; + + return '' . $html . ''; + } + + /*public static function process($wmarkdown, $key, $data, $multiple = null){ + return '
    ' . ( + $data && method_exists('\WMarkDown\Modules\Multimedia', $key) ? + \call_user_func('\WMarkDown\Modules\Multimedia::' . $key, $wmarkdown, $data) : + '' + ) . '
    '; + }*/ + + 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]; + + } + + }; diff --git a/PHP/Modules/WMarkDown.Modules.Paragraphs.php b/PHP/Modules/WMarkDown.Modules.Paragraphs.php new file mode 100755 index 0000000..a6c058c --- /dev/null +++ b/PHP/Modules/WMarkDown.Modules.Paragraphs.php @@ -0,0 +1,27 @@ +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 = '

    ' . \WMarkDown\Modules::format($this->wmarkdown, $this->matches[1][0], ["paragraphs"], $modules)["content"] . '

    '; + + } + + }; diff --git a/PHP/Modules/WMarkDown.Modules.Quotes.php b/PHP/Modules/WMarkDown.Modules.Quotes.php new file mode 100755 index 0000000..8581dfa --- /dev/null +++ b/PHP/Modules/WMarkDown.Modules.Quotes.php @@ -0,0 +1,27 @@ +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 = '
    ' . \WMarkDown\Modules::format($this->wmarkdown, substr($this->matches[1][0], 1), ["paragraphs"], $modules)["content"] . '
    '; + + } + + }; diff --git a/PHP/Modules/WMarkDown.Modules.Tables.php b/PHP/Modules/WMarkDown.Modules.Tables.php new file mode 100755 index 0000000..2e4906e --- /dev/null +++ b/PHP/Modules/WMarkDown.Modules.Tables.php @@ -0,0 +1,61 @@ +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 .= '' . \WMarkDown\Modules::format($wmarkdown, trim($cell[3]), ["paragraphs"], $modules)["content"] . ''; + }, $values[2]); + $html = '' . $html . ''; + + 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 = 'matches[1][0] ?? '', " class=\"") !== false ? preg_replace('/( class=\"[^"]+)/', "$1 wmd-table", $attributes) : $attributes . ' class="wmd-table"') . '>' . ( + ($head ? '' . $head . '' : '') . + ($body ? '' . $body . '' : '') . + ($foot ? '' . $foot . '' : '') + ) . ''; + $this->length = strlen($this->matches[0][0]); + $this->to = $this->from + $this->length; + $this->content = $this->matches[1][0]; + + } + + }; diff --git a/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.CSharp.php b/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.CSharp.php new file mode 100755 index 0000000..3d362fc --- /dev/null +++ b/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.CSharp.php @@ -0,0 +1,229 @@ +\}\]\)]|("([^\\\\"]+|\\\\.)*"|\'([^\\\\\']+|\\\\.)*\')/', $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); + + } + + }; diff --git a/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.JS.php b/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.JS.php new file mode 100755 index 0000000..8a46079 --- /dev/null +++ b/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.JS.php @@ -0,0 +1,142 @@ + "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); + + } + + }; diff --git a/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.PHP.php b/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.PHP.php new file mode 100755 index 0000000..70300cd --- /dev/null +++ b/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.PHP.php @@ -0,0 +1,186 @@ + "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); + + } + + }; diff --git a/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.Python.php b/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.Python.php new file mode 100755 index 0000000..525a2fc --- /dev/null +++ b/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.Python.php @@ -0,0 +1,19 @@ +parent->get_wmd_path($file, $path); + + !isset($languages["python"]) && ($languages["python"] = []); + $languages["python"][$i = count($languages["python"])] = ["path" => $wmd_path, "level" => $level, "methods" => []]; + + } + + }; diff --git a/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.SQL.php b/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.SQL.php new file mode 100755 index 0000000..c95e679 --- /dev/null +++ b/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.SQL.php @@ -0,0 +1,17 @@ +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" => []]; + + } + + }; diff --git a/PHP/WMarkDown.Modules.php b/PHP/WMarkDown.Modules.php new file mode 100755 index 0000000..095db09 --- /dev/null +++ b/PHP/WMarkDown.Modules.php @@ -0,0 +1,137 @@ +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 (' +
  • + + ' . $content . ' +
  • + '); + } + + private static function create_file_item($url, $title, $file){ + return (' +
  • + + ' . $title . ' +
  • + '); + } + + 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); + } + + }; diff --git a/PHP/WMarkDown.SQLite.php b/PHP/WMarkDown.SQLite.php new file mode 100755 index 0000000..32e2d88 --- /dev/null +++ b/PHP/WMarkDown.SQLite.php @@ -0,0 +1,127 @@ +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; + } + + }; diff --git a/PHP/WMarkDown.ScriptsAnalyzer.php b/PHP/WMarkDown.ScriptsAnalyzer.php new file mode 100755 index 0000000..c486412 --- /dev/null +++ b/PHP/WMarkDown.ScriptsAnalyzer.php @@ -0,0 +1,401 @@ + "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" + ]); + + } + + }; diff --git a/PHP/WMarkDown.Sessions.php b/PHP/WMarkDown.Sessions.php new file mode 100755 index 0000000..34e1fe9 --- /dev/null +++ b/PHP/WMarkDown.Sessions.php @@ -0,0 +1,7 @@ + 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); + }); + } + + }; diff --git a/PHP/include.php b/PHP/include.php new file mode 100755 index 0000000..25922e1 --- /dev/null +++ b/PHP/include.php @@ -0,0 +1,32 @@ +[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";} diff --git a/Public/ecma/WMarkDown.Dictionary.ecma.js b/Public/ecma/WMarkDown.Dictionary.ecma.js new file mode 100755 index 0000000..b5761a8 --- /dev/null +++ b/Public/ecma/WMarkDown.Dictionary.ecma.js @@ -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 = (` + + ` + dictionary_title + ` + `); + }; + 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 = ``; + + description.forEach(line => html += " " + (line || ``)); + html += ``; + + 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 += ``); + nodes.push((` + + ` + result + ` + ` + process_description(item.description) + ` + ` + html + ` + ` + result + ` + `).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 = (` + + i + Patterns + Results + Words + Meanings + URLs + + `), + 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 += `
  • ` + link + `
  • `); + (results.push ? results : [results]).forEach(word => words += '
  • ' + word + '
  • '); + + body += (` + + ` + i + ` + + + + ` + (item.description.push ? item.description.join(" ") : item.description) + ` + + + `); + }); + + item.setAttribute("class", "data-dictionary-table"); + item.setAttribute("action", window.location.hash); + item.setAttribute("method", "get"); + item.setAttribute("onsubmit", "return false;"); + item.innerHTML = (` +
    + Search + +
    + + ` + header + ` + ` + body + ` + ` + header + ` +
    +
    +
    + `); + } + + 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(); + +}; diff --git a/Public/ecma/WMarkDown.Dictionary.old.ecma.js b/Public/ecma/WMarkDown.Dictionary.old.ecma.js new file mode 100755 index 0000000..4a5239a --- /dev/null +++ b/Public/ecma/WMarkDown.Dictionary.old.ecma.js @@ -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 = ``; + + description.forEach(line => html += " " + (line || ``)); + html += ``; + + 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 += ``); + nodes.push(` + + + ` + result + ` + ` + process_description(item.description) + ` + ` + html + ` + + ` + result + ` + + `); + + 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 = (` + + i + Patterns + Results + Words + Meanings + URLs + + `), + 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 += `
  • ` + link + `
  • `); + (results.push ? results : [results]).forEach(word => words += '
  • ' + word + '
  • '); + + body += (` + + ` + i + ` + + + + ` + (item.description.push ? item.description.join(" ") : item.description) + ` + + + `); + }); + + item.setAttribute("class", "data-dictionary-table"); + item.setAttribute("action", window.location.hash); + item.setAttribute("method", "get"); + item.setAttribute("onsubmit", "return false;"); + item.innerHTML = (` +
    + Search + +
    + + ` + header + ` + ` + body + ` + ` + header + ` +
    +
    +
    + `); + + }; + + 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(); + +}; diff --git a/Public/ecma/WMarkDown.Multimedia.ecma.js b/Public/ecma/WMarkDown.Multimedia.ecma.js new file mode 100755 index 0000000..6342bbc --- /dev/null +++ b/Public/ecma/WMarkDown.Multimedia.ecma.js @@ -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": + // + // + // 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": + // + // 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(); + +}; diff --git a/Public/ecma/WMarkDown.WMonitor.ecma.js b/Public/ecma/WMarkDown.WMonitor.ecma.js new file mode 100755 index 0000000..a923481 --- /dev/null +++ b/Public/ecma/WMarkDown.WMonitor.ecma.js @@ -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 = (` +
    +
    + Monitor + +
    +
    + `); + 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(); + +}; diff --git a/Public/ecma/WMarkDown.ecma.js b/Public/ecma/WMarkDown.ecma.js new file mode 100755 index 0000000..2455722 --- /dev/null +++ b/Public/ecma/WMarkDown.ecma.js @@ -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 (` + + `); + }; + + 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 = (` + + + + + + + `); + // 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 = ``; + }; + + }; + + }); + + }); + + }; + + 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(); + +}; diff --git a/Public/ecma2/WMarkDown.Converter.ecma.js b/Public/ecma2/WMarkDown.Converter.ecma.js new file mode 100644 index 0000000..ac552a8 --- /dev/null +++ b/Public/ecma2/WMarkDown.Converter.ecma.js @@ -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(); + +}; \ No newline at end of file diff --git a/Public/ecma2/WMarkDown.ecma.js b/Public/ecma2/WMarkDown.ecma.js new file mode 100644 index 0000000..aa92b98 --- /dev/null +++ b/Public/ecma2/WMarkDown.ecma.js @@ -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(); + +}; \ No newline at end of file diff --git a/Public/ecma2/converter/WMarkDown.Converter.Modules.ecma.js b/Public/ecma2/converter/WMarkDown.Converter.Modules.ecma.js new file mode 100644 index 0000000..2549580 --- /dev/null +++ b/Public/ecma2/converter/WMarkDown.Converter.Modules.ecma.js @@ -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(); + +}; \ No newline at end of file diff --git a/Public/ecma2/converter/modules/WMarkDown.Converter.Modules.Headers.ecma.js b/Public/ecma2/converter/modules/WMarkDown.Converter.Modules.Headers.ecma.js new file mode 100644 index 0000000..8e42d80 --- /dev/null +++ b/Public/ecma2/converter/modules/WMarkDown.Converter.Modules.Headers.ecma.js @@ -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 => `` + matches[2].trim() + ``; + +}; \ No newline at end of file diff --git a/Public/git_update.php b/Public/git_update.php new file mode 100755 index 0000000..7db4694 --- /dev/null +++ b/Public/git_update.php @@ -0,0 +1,18 @@ +&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."; diff --git a/Public/images/wmarkdown.png b/Public/images/wmarkdown.png new file mode 100755 index 0000000..41f3ec5 Binary files /dev/null and b/Public/images/wmarkdown.png differ diff --git a/Public/json/extension_to_mime.json b/Public/json/extension_to_mime.json new file mode 100755 index 0000000..322275a --- /dev/null +++ b/Public/json/extension_to_mime.json @@ -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" +} diff --git a/Public/json/mime_to_extension.json b/Public/json/mime_to_extension.json new file mode 100755 index 0000000..783b89c --- /dev/null +++ b/Public/json/mime_to_extension.json @@ -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"] +} diff --git a/Public/robots.txt b/Public/robots.txt new file mode 100755 index 0000000..a78466b --- /dev/null +++ b/Public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Allow: / diff --git a/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.base.scssc b/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.base.scssc new file mode 100755 index 0000000..9cdb68b Binary files /dev/null and b/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.base.scssc differ diff --git a/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.components.scssc b/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.components.scssc new file mode 100755 index 0000000..b7fc7fe Binary files /dev/null and b/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.components.scssc differ diff --git a/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.external.scssc b/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.external.scssc new file mode 100755 index 0000000..cadbc22 Binary files /dev/null and b/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.external.scssc differ diff --git a/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.scssc b/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.scssc new file mode 100755 index 0000000..b26c319 Binary files /dev/null and b/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.scssc differ diff --git a/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.settings.scssc b/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.settings.scssc new file mode 100755 index 0000000..f2787d8 Binary files /dev/null and b/Public/scss/.sass-cache/309371c2e53e2e75d0f849591bc510afe499e4cf/WMarkDown.settings.scssc differ diff --git a/Public/scss/WMarkDown.base.scss b/Public/scss/WMarkDown.base.scss new file mode 100755 index 0000000..b36ee90 --- /dev/null +++ b/Public/scss/WMarkDown.base.scss @@ -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;} + } + +} diff --git a/Public/scss/WMarkDown.components.scss b/Public/scss/WMarkDown.components.scss new file mode 100755 index 0000000..ab1f428 --- /dev/null +++ b/Public/scss/WMarkDown.components.scss @@ -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%);} + } + +} diff --git a/Public/scss/WMarkDown.css b/Public/scss/WMarkDown.css new file mode 100755 index 0000000..17fa852 --- /dev/null +++ b/Public/scss/WMarkDown.css @@ -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 */ diff --git a/Public/scss/WMarkDown.css.map b/Public/scss/WMarkDown.css.map new file mode 100755 index 0000000..981daa7 --- /dev/null +++ b/Public/scss/WMarkDown.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AAAA,UAAU;EAEN,OAAO,EAAG,KAAK;EACf,QAAQ,EAAG,QAAQ;EACnB,GAAG,EAAG,GAAG;EACT,IAAI,EAAG,GAAG;EACV,KAAK,EAAG,IAAI;EACZ,MAAM,EAAG,IAAI;EACb,QAAQ,EAAG,MAAM;EAEjB,wBAAK;IAAC,WAAW,ECFN,QAAQ;EDInB,+BAAoB;IAAC,OAAO,EAAG,IAAI;EAEnC,wIAAiE;IAC7D,KAAK,ECdI,OAAO;IDehB,MAAM,EAAG,OAAO;IAChB,eAAe,EAAG,IAAI;IACtB,mBAAmB,ECWT,EAAE;IDVZ,4KAAO;MACH,KAAK,EClBE,OAAO;MDmBd,mBAAmB,ECOd,IAAG;EDJhB,wCAAiB;IAAC,mBAAmB,EAAG,KAAK;EAC7C,8FAA+C;IAC3C,gBAAgB,EAAG,OAAqC;IACxD,MAAM,EAAG,mBAAiC;IAC1C,aAAa,ECHJ,KAAI;IDIb,mBAAmB,EAAG,mCAAmC;IACzD,sHAAO;MACH,gBAAgB,EAAG,OAAuC;MAC1D,YAAY,EC9BL,OAAO;EDkCtB,8BAAmB;IACf,YAAY,EAAG,IAAI;IACnB,WAAW,EC5BN,OAAO;ED8BhB,gDAAmC;IAC/B,OAAO,EAAG,YAAY;IACtB,KAAK,EAAG,GAAG;IACX,UAAU,EAAG,MAAM;EAGvB,uCAAgB;IACZ,OAAO,EAAG,KAAK;IACf,+CAAG;MACC,KAAK,EAAG,IAAI;MACZ,aAAa,EAAG,GAAG;IAEvB,qEAAc;MAAC,aAAa,EAAG,mBAAqC;IACpE,mEAAa;MAAC,aAAa,EAAG,mBAAqC;EAGvE,yEAA0B;IACtB,QAAQ,EAAG,QAAQ;IACnB,IAAI,EAAG,GAAG;IACV,KAAK,EAAG,IAAI;IACZ,QAAQ,EAAG,MAAM;IACjB,UAAU,EAAG,UAAU;EAE3B,oCAAa;IACT,KAAK,EC5DC,OAAO;ID6Db,gBAAgB,EC9DV,IAAI;EDiEd,iBAAM;IACF,GAAG,EAAG,GAAG;IACT,MAAM,ECzDG,GAAG;ID0DZ,OAAO,EAAG,EAAE;IACZ,uBAAK;MACD,MAAM,EAAG,KAAmB;MAC5B,MAAM,EAAG,SAAS;MAClB,WAAW,EAAG,GAAG;MACjB,yBAAC;QACG,OAAO,EAAG,YAAY;QACtB,MAAM,EAAG,IAAI;QACb,gCAAM;UAAC,cAAc,EAAG,MAAM;MAGlC,6BAAK;QACD,OAAO,EAAG,YAAY;QACtB,MAAM,EAAG,QAAQ;MAErB,mCAAW;QAAC,OAAO,EAAG,IAAI;MAC1B,8BAAM;QACF,OAAO,EAAG,YAAY;QACtB,MAAM,EAAG,IAAI;QACb,sGAA2C;UAAC,OAAO,EAAG,IAAI;MAE9D,2BAAG;QACC,KAAK,EAAG,IAAI;QACZ,MAAM,EAAG,IAAI;IAGrB,4BAAU;MACN,QAAQ,EAAG,QAAQ;MACnB,GAAG,EAAG,GAAG;MACT,IAAI,EAAG,GAAG;MACV,KAAK,EAAG,IAAI;MACZ,WAAW,EAAG,KAAK;MACnB,UAAU,EAAG,MAAM;MACnB,+BAAE;QACE,MAAM,EAAG,GAAG;QACZ,OAAO,EAAG,GAAG;QACb,eAAe,EAAG,IAAI;MAE1B,+BAAE;QACE,OAAO,EAAG,YAAY;QACtB,MAAM,EAAG,OAAO;QAChB,WAAW,EAAG,MAAM;IAG5B,8BAAY;MACR,OAAO,EAAG,IAAI;MACd,QAAQ,EAAG,QAAQ;MACnB,GAAG,EAAG,GAAG;MACT,KAAK,EAAG,GAAG;MACX,MAAM,EAAG,SAAS;MAClB,0CAAW;QACP,OAAO,EAAG,YAAY;QACtB,KAAK,EAAG,KAAK;QACb,MAAM,EAAG,IAAI;QACb,gBAAgB,EAAG,IAAI;IAI3B,mCAAM;MACF,mBAAmB,EAAG,2CAA2C;MACjE,uDAAmB;QAAC,MAAM,EAAG,GAAG;MAChC,+CAAW;QAAC,OAAO,EAAG,IAAI;EAKtC,mCAAY;IACR,GAAG,EC7HM,GAAG;ID8HZ,MAAM,EC7HG,GAAG;ID8HZ,KAAK,ECzIC,IAAI;ID0IV,gBAAgB,ECzIV,OAAO;ID0Ib,OAAO,EAAG,EAAE;IACZ,qLAAmC;MAC/B,QAAQ,EAAG,QAAQ;MACnB,GAAG,EC/HC,KAAI;MDgIR,MAAM,EChIF,KAAI;MDiIR,UAAU,EAAG,UAAU;IAE3B,qEAAc;MAAC,OAAO,EAAG,OAA4B;IAEjD,0IAAG;MACC,QAAQ,EAAG,QAAQ;MACnB,GAAG,EAAG,GAAG;MACT,IAAI,EAAG,GAAG;MACV,KAAK,EAAG,IAAI;MACZ,MAAM,EAAG,IAAI;MACb,OAAO,EAAG,GAAG;MACb,QAAQ,EAAG,IAAI;MACf,UAAU,EAAG,UAAU;IAE3B,sIAAE;MACE,MAAM,EAAG,GAAG;MACZ,OAAO,EAAG,GAAG;MACb,eAAe,EAAG,IAAI;MACQ,0MAA8B;QAAC,WAAW,EAAG,GAA2B;MAAxE,0MAA8B;QAAC,WAAW,EAAG,GAA2B;MAAxE,0MAA8B;QAAC,WAAW,EAAG,GAA2B;MAAxE,0MAA8B;QAAC,WAAW,EAAG,GAA2B;MAAxE,0MAA8B;QAAC,WAAW,EAAG,GAA2B;MAAxE,0MAA8B;QAAC,WAAW,EAAG,IAA2B;MAAxE,0MAA8B;QAAC,WAAW,EAAG,IAA2B;IAE1G,sIAAE;MAAC,WAAW,EAAG,MAAM;IACvB,kLAAa;MACT,QAAQ,EAAG,QAAQ;MACnB,GAAG,EAAG,GAAG;MACT,MAAM,EAAG,IAAI;MACb,UAAU,EAAG,MAAM;MACnB,kQAAmB;QAAC,MAAM,EAAG,GAAG;MAChC,kPAAe;QAAC,OAAO,EAAG,IAAI;IAGtC,mEAAe;MACX,IAAI,EChKA,KAAI;MDiKR,KAAK,ECpKK,GAAG;MDqKb,+FAAa;QAAC,IAAI,EClKd,KAAI;IDqKR,6HAAU;MAAC,IAAI,ECtKT,EAAE;IDuKR,mIAAa;MACT,KAAK,EAAG,IAAI;MACZ,YAAY,EAAG,GAAG;MAClB,2IAAG;QAAC,OAAO,EAAG,IAAI;MAEd,iLAAiB;QAAC,OAAO,EAAG,YAAY;MACxC,iLAAiB;QAAC,OAAO,EAAG,IAAI;IAKxC,yHAAU;MAAC,KAAK,EClLV,EAAE;IDmLR,iHAAM;MACF,KAAK,EAAG,IAAI;MACZ,aAAa,EAAG,GAAG;MACnB,yHAAG;QAAC,OAAO,EAAG,IAAI;MAEd,+JAAiB;QAAC,OAAO,EAAG,YAAY;MACxC,+JAAiB;QAAC,OAAO,EAAG,IAAI;IAKxC,+KAAiB;MAAC,OAAO,EAAG,IAAI;IAChC,+KAAiB;MAAC,OAAO,EAAG,YAAY;IAGxC,6JAAiB;MAAC,OAAO,EAAG,IAAI;IAChC,6JAAiB;MAAC,OAAO,EAAG,YAAY;IAE5C,yDAAU;MACN,GAAG,EAAG,GAAG;MACT,IAAI,EAAG,GAAqC;MAC5C,KAAK,EAAG,GAAmC;MAC3C,MAAM,EAAG,GAAG;MACZ,MAAM,EAAG,OAAuB;MAChC,OAAO,EAAG,OAAO;MACjB,QAAQ,EAAG,IAAI;MACf,uEAAM;QAAC,OAAO,EAAG,IAAI;MACrB,yFAAe;QAAC,MAAM,EAAG,GAAG;IAEhC,qDAAQ;MACJ,KAAK,EChND,KAAI;MDiNR,KAAK,ECnNG,GAAG;MDoNX,iFAAa;QAAC,KAAK,EClNf,KAAI;IDoNZ,yDAAU;MACN,MAAM,EAAG,IAAI;MACb,2EAAQ;QACJ,OAAO,EAAG,KAAK;QACf,KAAK,EAAG,IAAI;QACZ,aAAa,EAAG,qBAAuC;QACvD,KAAK,ECzOP,IAAI;QD0OF,WAAW,EAAG,GAAG;QACjB,SAAS,EAAG,KAAK;QACjB,UAAU,EAAG,MAAM;QACnB,UAAU,EAAG,UAAU;IAG/B,6FAA4B;MAAC,OAAO,EAAG,IAAI;EAG/C,iBAAM;IACF,MAAM,EAAG,GAAG;IACZ,MAAM,EC1OG,GAAG;ID2OZ,OAAO,EAAG,EAAE;IACZ,0BAAQ;MACJ,OAAO,EAAG,KAAK;MACf,KAAK,EAAG,IAAI;MACZ,UAAU,EAAG,MAAM;MACnB,SAAS,EAAG,KAAK;MACjB,WAAW,EAAG,GAAG;MACjB,8BAAG;QACC,MAAM,EAAG,KAAK;QACd,WAAW,EAAG,IAAI;MAEtB,8BAAG;QAAC,cAAc,EAAG,MAAM;EAK/B,4DAAsB;IAAC,OAAO,EAAG,CAAC;EAClC,+DAAyB;IAAC,OAAO,EAAG,EAAE;EACtC,6DAAuB;IAAC,OAAO,EAAG,EAAE;EAGpC,+DAAsB;IAAC,OAAO,EAAG,EAAE;EACnC,kEAAyB;IAAC,OAAO,EAAG,CAAC;EACrC,gEAAuB;IAAC,OAAO,EAAG,EAAE;EAGpC,6DAAsB;IAAC,OAAO,EAAG,EAAE;EACnC,gEAAyB;IAAC,OAAO,EAAG,EAAE;EACtC,8DAAuB;IAAC,OAAO,EAAG,CAAC;EAKnC,2CAAU;IAAC,OAAO,EAAG,IAAI;EAGzB,+CAAU;IACN,OAAO,EAAG,KAAK;IACf,QAAQ,EAAG,QAAQ;IACnB,MAAM,EAAG,GAAG;IACZ,KAAK,EAAG,GAAG;IACX,MAAM,EAAG,QAAQ;EAEA,2HAAa;IAAC,OAAO,EAAG,IAAI;EACxC,sKAAgC;IACrC,GAAG,EAAG,GAAG;IACT,IAAI,EAAG,GAAG;IACV,KAAK,EAAG,IAAI;IACZ,MAAM,EAAG,IAAI;IACb,MAAM,EAAG,GAAG;IACZ,OAAO,EAAG,GAAG;IACb,KAAK,EAAG,IAAI;IACZ,MAAM,EAAG,IAAI;EAGb,0EAAqB;IAAC,OAAO,EAAG,KAAK;EACrC,qEAAgB;IAAC,OAAO,EAAG,IAAI;EAC/B,mEAAc;IAAC,OAAO,EAAG,IAAI;EAG7B,6EAAqB;IAAC,OAAO,EAAG,IAAI;EACpC,wEAAgB;IAAC,OAAO,EAAG,KAAK;EAChC,sEAAc;IAAC,OAAO,EAAG,IAAI;EAG7B,2EAAqB;IAAC,OAAO,EAAG,IAAI;EACpC,sEAAgB;IAAC,OAAO,EAAG,IAAI;EAC/B,oEAAc;IAAC,OAAO,EAAG,KAAK;EAIlC,0DAAwB;IAAC,OAAO,EAAG,IAAI;EACvC,oDAAkB;IAAC,SAAS,EAAG,IAAI;EAGnC,oDAAkB;IAAC,OAAO,EAAG,IAAI;EACjC,+CAAa;IAAC,MAAM,EAAG,QAAQ;;AElU7B,wEAAyB;EAC3B,OAAO,EAAG,YAAY;EACtB,MAAM,EAAG,OAAO;EAChB,0FAAK;IAAC,OAAO,EAAG,IAAI;EACpB,oIAAmB;IAAC,MAAM,EAAG,GAAG;AAIpC,sBAAW;EACP,OAAO,EAAG,KAAK;EACf,QAAQ,EAAG,QAAQ;EACnB,KAAK,EAAG,GAAG;EACX,MAAM,EAAG,IAAI;EACb,WAAW,EAAG,GAAG;EACjB,SAAS,EAAG,IAAI;EAChB,QAAQ,EAAG,MAAM;EACjB,UAAU,EAAG,UAAU;EACvB,0CAAqB;IAAC,UAAU,EAAG,IAAI;EACvC,2BAAI;IACA,QAAQ,EAAG,QAAQ;IACnB,GAAG,EAAG,GAAG;IACT,IAAI,EAAG,GAAG;IACV,MAAM,EAAG,GAAG;IACZ,OAAO,EAAG,GAAG;IACb,WAAW,EAAG,MAAM;IACpB,8BAAE;MACE,OAAO,EAAG,YAAY;MACtB,MAAM,EAAG,QAAQ;MACjB,OAAO,EAAG,SAAS;MACnB,gBAAgB,EAAG,OAAkC;MACrD,cAAc,EAAG,MAAM;MACvB,MAAM,EAAG,mBAA8B;MACvC,aAAa,EAAG,IAAI;MACpB,0CAAW;QACP,OAAO,EAAG,IAAI;QACd,WAAW,EAAG,GAAG;QACjB,iDAAQ;UACJ,OAAO,EAAG,GAAG;UACb,YAAY,EAAG,IAAI;EAKnC,6BAAM;IACF,QAAQ,EAAG,QAAQ;IACnB,GAAG,EAAG,GAAG;IACT,IAAI,EAAG,GAAG;IACV,QAAQ,EAAG,MAAM;IACjB,gCAAE;MACE,KAAK,EAAG,IAAI;MACZ,MAAM,EAAG,GAAG;MACZ,UAAU,EAAG,KAAK;MAClB,WAAW,EAAG,GAAG;MACjB,OAAO,EAAG,GAAG;MACb,UAAU,EAAG,UAAU;MAEnB,iDAAe;QAAC,gBAAgB,EAAG,OAA2B;MAC9D,qDAAmB;QAAC,gBAAgB,EAAG,OAA2B;EAI9E,gCAAS;IACL,QAAQ,EAAG,QAAQ;IACnB,GAAG,EAAG,KAAK;IACX,IAAI,EAAG,GAAG;IACV,KAAK,EAAG,GAAG;IACX,UAAU,EAAG,IAAI;IACjB,QAAQ,EAAG,IAAI;EAEb,4DAAK;IAAC,WAAW,ED/DlB,aAAa;ACkEtB,4BAAiB;EACb,UAAU,EAAG,GAAG;EAChB,SAAS,EAAG,KAAK;EACjB,KAAK,EDzEC,OAAkC;EC0Ef,iCAAQ;IAAC,UAAU,EAAG,GAAG;EAAzB,iCAAQ;IAAC,UAAU,EAAG,GAAG;EAAzB,iCAAQ;IAAC,UAAU,EAAG,GAAG;EAAzB,iCAAQ;IAAC,UAAU,EAAG,GAAG;EAAzB,iCAAQ;IAAC,UAAU,EAAG,GAAG;EAAzB,iCAAQ;IAAC,UAAU,EAAG,GAAG;AAGtD,gCAAqB;EACjB,OAAO,EAAG,YAAY;EACtB,QAAQ,EAAG,QAAQ;EACnB,aAAa,EAAG,YAAmB;EACnC,MAAM,EAAG,IAAI;EACb,uDAAsB;IAClB,IAAI,EAAG,IAAI;IACX,KAAK,EAAG,GAAG;EAEf,wDAAuB;IACnB,IAAI,EAAG,GAAG;IACV,KAAK,EAAG,IAAI;EAEhB,uDAAsB;IAClB,GAAG,EAAG,IAAI;IACV,MAAM,EAAG,GAAG;EAEhB,sDAAqB;IACjB,GAAG,EAAG,GAAG;IACT,MAAM,EAAG,IAAI;EAEjB,wDAAuB;IAAC,OAAO,EAAG,IAAI;EACtC,qCAAI;IACA,OAAO,EAAG,KAAK;IACf,QAAQ,EAAG,QAAQ;IACnB,KAAK,EDrFQ,IAAI;ICsFjB,MAAM,EAAG,IAAI;IACb,UAAU,EDtFI,IAAI;ICuFlB,OAAO,EAAG,IAAI;IACd,KAAK,ED5GH,IAAI;IC6GN,WAAW,EAAG,GAAG;IACjB,MAAM,EAAG,gBAA8B;IACvC,gBAAgB,EAAG,yBAAsC;IACzD,QAAQ,EAAG,MAAM;IACjB,UAAU,EAAG,UAAU;IACvB,aAAa,EAAG,GAAG;IACnB,UAAU,EAAG,sBAA0B;IACvC,mDAAW;MAAC,OAAO,EAAG,KAAK;EAE/B,wCAAO;IAAC,OAAO,EAAG,IAAI;EACtB,6CAAY;IACR,MAAM,EAAG,GAAqD;IAC9D,UAAU,EAAG,MAAM;IACnB,QAAQ,EAAG,IAAI;IACf,wDAAU;MACN,OAAO,EAAG,KAAK;MACf,+DAAM;QAAC,UAAU,EAAG,GAAG;EAG/B,uCAAM;IACF,MAAM,EAAG,KAA6B;IACtC,MAAM,EAAG,QAAQ;IACjB,UAAU,EAAG,MAAM;IACnB,WAAW,EAAG,MAAM;IACpB,UAAU,EAAG,IAAI;IACjB,UAAU,EAAG,MAAM;IACnB,2CAAG;MACC,OAAO,EAAG,YAAY;MACtB,KAAK,EDpHG,GAAG;MCqHX,MAAM,EDrHE,GAAG;MCsHX,MAAM,EAAG,QAAQ;MACjB,MAAM,EAAG,gBAA8B;MACvC,gBAAgB,EAAG,IAAI;MACvB,mBAAmB,EAAG,aAAa;MACnC,eAAe,EAAG,KAAK;MACvB,UAAU,EAAG,UAAU;MACvB,aAAa,EAAG,GAA0B;EAIlD,wLAAmF;IAAC,gBAAgB,EAAG,6DAA6D;EACpK,kHAA+C;IAAC,gBAAgB,EAAG,uDAAuD;EAC1H,sHAAmD;IAAC,gBAAgB,EAAG,qEAAqE;EAC5I,8DAA6B;IAAC,gBAAgB,EAAG,iEAAiE;EAClH,uDAAsB;IAAC,gBAAgB,EAAG,uCAAuC;AAIrF,iCAAsB;EAClB,OAAO,EAAG,KAAK;EACf,QAAQ,EAAG,QAAQ;EACnB,0CAAQ;IAAC,MAAM,EAAG,IAAI;EACtB,+SAA4F;IAAC,OAAO,EAAG,IAAI;EAC3G,sDAAoB;IAChB,UAAU,EAAG,SAAS;IACtB,SAAS,EAAG,UAAU;EAE1B,yCAAO;IACH,OAAO,EAAG,KAAK;IACf,KAAK,EAAG,IAAI;IACZ,UAAU,EAAG,UAAU;IACvB,6CAAG;MACC,OAAO,EAAG,UAAU;MACpB,WAAW,EAAG,MAAM;IAEjB,wGAAO;MACV,KAAK,EAAG,IAAI;MACZ,UAAU,EAAG,UAAU;IAE3B,iDAAO;MACH,WAAW,EAAG,GAAG;MACjB,wDAAQ;QACJ,OAAO,EAAG,GAAG;QACb,YAAY,EAAG,IAAI;EAI/B,0EAAK;IACD,KAAK,EAAG,GAAG;IACX,8GAAmB;MAAC,KAAK,EAAG,GAAG;EAEnC,oCAAE;IAAC,OAAO,EAAG,QAAQ;EACrB,gFAAW;IACP,OAAO,EAAG,KAAK;IACf,0IAA4B;MAAC,OAAO,EAAG,KAAK;IAC5C,wKAAI;MAAC,KAAK,EAAG,IAAI;EAErB,uCAAK;IACD,UAAU,EAAG,IAAI;IACjB,QAAQ,EAAG,IAAI;IAEX,mEAAsB;MAAC,gBAAgB,EAAG,OAA2B;IACrE,+DAAkB;MAAC,gBAAgB,EAAG,OAA2B;IACjE,uDAAU;MAAC,gBAAgB,EAAG,OAA2B;AAKrE,0BAAe;EACX,OAAO,EAAG,YAAY;EACtB,QAAQ,EAAG,QAAQ;EACnB,KAAK,EAAG,IAAI;EACZ,UAAU,EAAG,MAAM;EAGf,oMAAK;IAAC,OAAO,EAAG,IAAI;EACpB,qHAAY;IACR,OAAO,EAAG,YAAY;IACtB,KAAK,EAAG,IAAI;IACZ,MAAM,EAAG,IAAI;IACb,mBAAmB,EAAG,aAAa;IACnC,iBAAiB,EAAG,SAAS;IAC7B,eAAe,EAAG,OAAO;EAGjC,gCAAK;IACD,KAAK,EAAG,IAAI;IACZ,KAAK,EAAG,IAAI;EAEhB,4CAAiB;IACb,SAAS,EAAG,IAAI;IAChB,0FAA2C;MACvC,IAAI,EAAG,GAAG;MACV,KAAK,EAAG,IAAI;IAEhB,8CAAC;MAAC,OAAO,EAAG,IAAI;EAEpB,gCAAK;IACD,QAAQ,EAAG,QAAQ;IACnB,GAAG,EAAG,IAAI;IACV,IAAI,EAAG,GAAG;IACV,KAAK,EAAG,GAAG;IACX,UAAU,EAAG,IAAI;IACjB,UAAU,EAAG,UAAU;IACvB,OAAO,EAAG,EAAE;IACZ,OAAO,EAAG,EAAE;EAEhB,gCAAK;IACD,QAAQ,EAAG,QAAQ;IACnB,MAAM,EAAG,GAAG;IACZ,IAAI,EAAG,GAAG;IACV,KAAK,EAAG,IAAI;IACZ,MAAM,EAAG,IAAI;IACb,UAAU,EAAG,MAAM;IACnB,WAAW,EACP,yFAG0B;EAElC,sCAAW;IACP,OAAO,EAAG,YAAY;IACtB,QAAQ,EAAG,QAAQ;IACnB,MAAM,EAAG,GAAG;EAGZ,qDAAM;IACF,KAAK,EAAG,GAAG;IACX,MAAM,EAAG,IAAI;EAIjB,sDAAM;IACF,KAAK,EAAG,GAAG;IACX,MAAM,EAAG,IAAI;IACb,UAAU,EAAG,MAAM;EAG3B,8DAAmC;IAAC,MAAM,EAAG,IAAI;EACjD,yDAAgC;IAC5B,OAAO,EAAG,YAAY;IACtB,QAAQ,EAAG,QAAQ;IACnB,KAAK,EAAG,IAAI;IACZ,MAAM,EAAG,IAAI;IACb,MAAM,EAAG,IAAI;EAED,sDAAW;IACvB,QAAQ,EAAG,QAAQ;IACnB,GAAG,EAAG,GAAG;IACT,IAAI,EAAG,GAAG;IACV,KAAK,EAAG,IAAI;IACZ,MAAM,EAAG,IAAI;IACb,MAAM,EAAG,GAAG;EAEhB,4KAAuF;IACnF,KAAK,EAAG,IAAI;IACZ,MAAM,EAAG,IAAI;EAEjB,0JAA+F;IAC3F,KAAK,EAAG,GAAG;IACX,MAAM,EAAG,IAAI;AAIrB,uBAAY;EACR,UAAU,EAAG,MAAM;EACnB,yBAAC;IACG,OAAO,EAAG,YAAY;IACtB,QAAQ,EAAG,QAAQ;IACnB,KAAK,EAAG,GAAG;IACX,MAAM,EAAG,KAAK;IACd,MAAM,EAAG,GAAG;IACZ,QAAQ,EAAG,MAAM;IACjB,OAAO,EAAG,EAAE;IACZ,mBAAmB,ED/Rb,EAAE;ICgSR,mBAAmB,EAAG,aAAa;IACnC,6BAAG;MAAC,OAAO,EAAG,IAAI;IAClB,+BAAO;MACH,OAAO,EAAG,CAAC;MACX,mBAAmB,EDrSlB,IAAG;ICuSR,uCAAa;MACT,OAAO,EAAG,KAAK;MACf,QAAQ,EAAG,QAAQ;MACnB,GAAG,EAAG,GAAG;MACT,IAAI,EAAG,GAAG;MACV,KAAK,EAAG,GAAG;MACX,MAAM,EAAG,GAAG;IAEhB,+BAAK;MACD,OAAO,EAAG,KAAK;MACf,QAAQ,EAAG,QAAQ;MACnB,IAAI,EAAG,GAAG;MACV,MAAM,EAAG,GAAG;MACZ,KAAK,EAAG,IAAI;MACZ,MAAM,EAAG,GAAG;MACZ,UAAU,EAAG,MAAM;IAEvB,sCAAY;MACR,OAAO,EAAG,YAAY;MACtB,KAAK,EAAG,IAAI;MACZ,MAAM,EAAG,IAAI;MACb,mBAAmB,EAAG,aAAa;MACnC,iBAAiB,EAAG,SAAS;MAC7B,eAAe,EAAG,OAAO;AAKrC,gCAAqB;EAAC,WAAW,EAAG,GAAG;AAEvC,iBAAM;EACF,OAAO,EAAG,GAAG;EACb,MAAM,EAAG,oBAAuB;AAGpC,gBAAK;EACD,QAAQ,EAAG,QAAQ;EACnB,MAAM,EAAG,uBAAwB;EACjC,gBAAgB,EAAG,OAA2B;EAC9C,aAAa,EAAG,IAAI;EACpB,wCAAuB;IACnB,OAAO,EAAG,KAAK;IACf,OAAO,EAAG,QAAQ;IAClB,8CAAK;MAAC,WAAW,EAAG,GAAG;IACvB,kDAAS;MACL,WAAW,EAAG,IAAI;MAClB,0DAAS;QAAC,OAAO,EAAG,GAAG;MACvB,yDAAQ;QAAC,OAAO,EAAG,GAAG;EAI1B,wCAAY;IACR,YAAY,EAAG,IAAI;IACnB,gDAAS;MAAC,OAAO,EAAG,GAAG;IACvB,+CAAQ;MAAC,OAAO,EAAG,GAAG;EAE1B,uCAAW;IACP,OAAO,EAAG,YAAY;IACtB,MAAM,EAAG,GAAG;IACZ,OAAO,EAAG,GAAG;IACb,eAAe,EAAG,IAAI;IACtB,+CAAS;MAAC,OAAO,EAAG,GAAG;IACvB,8CAAQ;MAAC,OAAO,EAAG,GAAG;IACtB,0KAAgD;MAAC,OAAO,EAAG,IAAI;IAC/D,uDAAe;MACX,WAAW,EAAG,IAAI;MAClB,4DAAI;QAAC,UAAU,EAAG,MAAM;MACxB,+DAAS;QACL,OAAO,EAAG,GAAG;QACb,YAAY,EAAG,IAAI;MAEvB,8DAAQ;QACJ,OAAO,EAAG,GAAG;QACb,WAAW,EAAG,IAAI;EAI9B,qDAAuB;IACnB,OAAO,EAAG,GAAG;IACb,YAAY,EAAG,IAAI;EAEvB,mEAAuC;IAAC,OAAO,EAAG,GAAG;EAEzD,sDAAiC;IAC7B,OAAO,EAAG,GAAG;IACb,YAAY,EAAG,IAAI;EAEvB,iCAAgB;IACZ,OAAO,EAAG,KAAK;IACf,KAAK,EAAG,IAAI;IACZ,UAAU,EAAG,GAAG;IAChB,UAAU,EAAG,UAAU;IACvB,wCAAM;MACF,OAAO,EAAG,SAAS;MACnB,+CAAM;QAAC,OAAO,EAAG,UAAU;IAE/B,2CAAS;MAAC,UAAU,EAAG,MAAM;EAEjC,wBAAO;IACH,MAAM,EAAG,GAAG;IACZ,UAAU,EAAG,GAAG;IAChB,OAAO,EAAG,GAAG;IACb,eAAe,EAAG,IAAI;IACtB,2BAAE;MACE,cAAc,EAAG,IAAI;MACrB,iCAAO;QACH,cAAc,EAAG,GAAG;QACpB,aAAa,EAAG,oBAAuB;MAE3C,0CAAc;QACV,OAAO,EAAG,YAAY;QACtB,KAAK,EAAG,IAAI;QACZ,MAAM,EAAG,KAAK;QACd,QAAQ,EAAG,MAAM;QACjB,kDAAS;UAAC,OAAO,EAAG,GAAG;MAE3B,yCAAa;QAAC,WAAW,EAAG,IAAI;EAIpC,4CAAG;IAAC,cAAc,EAAG,IAAI;EACzB,kDAAS;IACL,cAAc,EAAG,GAAG;IACpB,aAAa,EAAG,oBAAuB;EAG/C,wCAAuB;IAAC,OAAO,EAAG,IAAI;EACtC,4BAAW;IACP,WAAW,EAAG,GAAG;IACjB,oCAAS;MAAC,OAAO,EAAG,GAAG;IACvB,mCAAQ;MACJ,OAAO,EAAG,GAAG;MACb,YAAY,EAAG,IAAI;EAG3B,sCAAuB;IACnB,OAAO,EAAG,EAAE;IACZ,mBAAmB,ED/ab,EAAE;ICgbR,mBAAmB,EAAG,OAAO;IAC7B,4CAAO;MACH,OAAO,EAAG,CAAC;MACX,mBAAmB,EDpblB,IAAG;ECubZ,wBAAO;IAAC,UAAU,EAAG,GAAG;AAG5B,qBAAU;EACN,KAAK,EAAG,GAAG;EACX,WAAW,EAAG,GAAG;EACjB,eAAe,EAAG,QAAQ;EAC1B,qBAAC;IAAC,MAAM,EAAG,gBAAsB;EACjC,kDAAK;IAAC,MAAM,EAAG,mBAAsB;EACrC,2BAAK;IACD,mBAAmB,EDhcb,EAAE;ICicR,mBAAmB,EAAG,gBAAgB;EAE1C,iCAAW;IAAC,mBAAmB,EDpctB,IAAG;ECqcZ,mDAAyB;IAAC,gBAAgB,EAAG,OAA2B;EACxE,uDAA6B;IAAC,gBAAgB,EAAG,OAA2B;EAC5E,2CAAiB;IAAC,gBAAgB,EAAG,OAA2B;;ACjepE,mBAAQ;EAAC,SAAS,EAAG,KAAK", +"sources": ["WMarkDown.base.scss","WMarkDown.settings.scss","WMarkDown.components.scss","WMarkDown.external.scss"], +"names": [], +"file": "WMarkDown.css" +} diff --git a/Public/scss/WMarkDown.external.scss b/Public/scss/WMarkDown.external.scss new file mode 100755 index 0000000..a4d08d5 --- /dev/null +++ b/Public/scss/WMarkDown.external.scss @@ -0,0 +1,5 @@ +.wmarkdown{ + + .MathJax{font-size : 1.3em;} + +} diff --git a/Public/scss/WMarkDown.scss b/Public/scss/WMarkDown.scss new file mode 100755 index 0000000..00babf7 --- /dev/null +++ b/Public/scss/WMarkDown.scss @@ -0,0 +1 @@ +@import "WMarkDown.settings.scss", "WMarkDown.base.scss", "WMarkDown.components.scss", "WMarkDown.external.scss"; diff --git a/Public/scss/WMarkDown.settings.scss b/Public/scss/WMarkDown.settings.scss new file mode 100755 index 0000000..d75e1f6 --- /dev/null +++ b/Public/scss/WMarkDown.settings.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; diff --git a/Public/tests/patterns.html b/Public/tests/patterns.html new file mode 100644 index 0000000..78f7710 --- /dev/null +++ b/Public/tests/patterns.html @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/Public/update.php b/Public/update.php new file mode 100755 index 0000000..fb0f016 --- /dev/null +++ b/Public/update.php @@ -0,0 +1 @@ + "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)); diff --git a/SQL/KMarkDown.01.remover.lite.sql b/SQL/KMarkDown.01.remover.lite.sql new file mode 100755 index 0000000..c06b20b --- /dev/null +++ b/SQL/KMarkDown.01.remover.lite.sql @@ -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; \ No newline at end of file diff --git a/SQL/KMarkDown.02.generator.lite.sql b/SQL/KMarkDown.02.generator.lite.sql new file mode 100755 index 0000000..2d45cdb --- /dev/null +++ b/SQL/KMarkDown.02.generator.lite.sql @@ -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) +); diff --git a/SQL/KMarkDown.03.views.lite.sql b/SQL/KMarkDown.03.views.lite.sql new file mode 100755 index 0000000..9858940 --- /dev/null +++ b/SQL/KMarkDown.03.views.lite.sql @@ -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; \ No newline at end of file diff --git a/SQL/KMarkDown.04.default_data.lite.sql b/SQL/KMarkDown.04.default_data.lite.sql new file mode 100755 index 0000000..e69de29 diff --git a/WMD/JSON/html.files.json b/WMD/JSON/html.files.json new file mode 100755 index 0000000..0c2d6bf --- /dev/null +++ b/WMD/JSON/html.files.json @@ -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"]} \ No newline at end of file diff --git a/WMD/dev/ECMAScript/index.w.md b/WMD/dev/ECMAScript/index.w.md new file mode 100755 index 0000000..4e82872 --- /dev/null +++ b/WMD/dev/ECMAScript/index.w.md @@ -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" +}]] diff --git a/WMD/dev/PHP/Abstracts/WMarkDown.Abstracts.Modules.php.w.md b/WMD/dev/PHP/Abstracts/WMarkDown.Abstracts.Modules.php.w.md new file mode 100755 index 0000000..fe2c7f5 --- /dev/null +++ b/WMD/dev/PHP/Abstracts/WMarkDown.Abstracts.Modules.php.w.md @@ -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" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Abstracts/WMarkDown.Abstracts.ScriptsAnalyzer.php.w.md b/WMD/dev/PHP/Abstracts/WMarkDown.Abstracts.ScriptsAnalyzer.php.w.md new file mode 100755 index 0000000..0675c43 --- /dev/null +++ b/WMD/dev/PHP/Abstracts/WMarkDown.Abstracts.ScriptsAnalyzer.php.w.md @@ -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" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Drivers/WMarkDown.PDO.SQLite.php.w.md b/WMD/dev/PHP/Drivers/WMarkDown.PDO.SQLite.php.w.md new file mode 100755 index 0000000..4fd851e --- /dev/null +++ b/WMD/dev/PHP/Drivers/WMarkDown.PDO.SQLite.php.w.md @@ -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" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Interfaces/WMarkDown.Interfaces.Modules.php.w.md b/WMD/dev/PHP/Interfaces/WMarkDown.Interfaces.Modules.php.w.md new file mode 100755 index 0000000..780f578 --- /dev/null +++ b/WMD/dev/PHP/Interfaces/WMarkDown.Interfaces.Modules.php.w.md @@ -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" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Interfaces/WMarkDown.Interfaces.ScriptsAnalyzer.php.w.md b/WMD/dev/PHP/Interfaces/WMarkDown.Interfaces.ScriptsAnalyzer.php.w.md new file mode 100755 index 0000000..878b757 --- /dev/null +++ b/WMD/dev/PHP/Interfaces/WMarkDown.Interfaces.ScriptsAnalyzer.php.w.md @@ -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" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Modules/WMarkDown.Modules.Checks.php.w.md b/WMD/dev/PHP/Modules/WMarkDown.Modules.Checks.php.w.md new file mode 100755 index 0000000..41a79df --- /dev/null +++ b/WMD/dev/PHP/Modules/WMarkDown.Modules.Checks.php.w.md @@ -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" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Modules/WMarkDown.Modules.CodeBlocks.php.w.md b/WMD/dev/PHP/Modules/WMarkDown.Modules.CodeBlocks.php.w.md new file mode 100755 index 0000000..39dfa24 --- /dev/null +++ b/WMD/dev/PHP/Modules/WMarkDown.Modules.CodeBlocks.php.w.md @@ -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" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Modules/WMarkDown.Modules.CustomParameters.php.w.md b/WMD/dev/PHP/Modules/WMarkDown.Modules.CustomParameters.php.w.md new file mode 100755 index 0000000..2275479 --- /dev/null +++ b/WMD/dev/PHP/Modules/WMarkDown.Modules.CustomParameters.php.w.md @@ -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" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Modules/WMarkDown.Modules.Escapes.php.w.md b/WMD/dev/PHP/Modules/WMarkDown.Modules.Escapes.php.w.md new file mode 100755 index 0000000..0234313 --- /dev/null +++ b/WMD/dev/PHP/Modules/WMarkDown.Modules.Escapes.php.w.md @@ -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" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Modules/WMarkDown.Modules.FontFormats.php.w.md b/WMD/dev/PHP/Modules/WMarkDown.Modules.FontFormats.php.w.md new file mode 100755 index 0000000..6d75e5b --- /dev/null +++ b/WMD/dev/PHP/Modules/WMarkDown.Modules.FontFormats.php.w.md @@ -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" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Modules/WMarkDown.Modules.Headers.php.w.md b/WMD/dev/PHP/Modules/WMarkDown.Modules.Headers.php.w.md new file mode 100755 index 0000000..03f943d --- /dev/null +++ b/WMD/dev/PHP/Modules/WMarkDown.Modules.Headers.php.w.md @@ -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" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Modules/WMarkDown.Modules.Includes.php.w.md b/WMD/dev/PHP/Modules/WMarkDown.Modules.Includes.php.w.md new file mode 100755 index 0000000..47a3619 --- /dev/null +++ b/WMD/dev/PHP/Modules/WMarkDown.Modules.Includes.php.w.md @@ -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" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Modules/WMarkDown.Modules.Links.php.w.md b/WMD/dev/PHP/Modules/WMarkDown.Modules.Links.php.w.md new file mode 100755 index 0000000..9eb45c9 --- /dev/null +++ b/WMD/dev/PHP/Modules/WMarkDown.Modules.Links.php.w.md @@ -0,0 +1,54 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.Modules.Links.php + +```txt +/PHP/Modules/WMarkDown.Modules.Links.php +``` + +## [[plain WMarkDown\Modules\Links->get_next_position]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Links->get_next_position +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 8cb49b364f113fca44385b0e3b14c7be +#$string - optional Parámetro $string +]] + +## [[plain WMarkDown\Modules\Links->process]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Links->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.Links.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/Modules/WMarkDown.Modules.Links.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,modules,links", + "description" : "WMarkDown.Modules.Links.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Modules/WMarkDown.Modules.Lists.php.w.md b/WMD/dev/PHP/Modules/WMarkDown.Modules.Lists.php.w.md new file mode 100755 index 0000000..3b94dd0 --- /dev/null +++ b/WMD/dev/PHP/Modules/WMarkDown.Modules.Lists.php.w.md @@ -0,0 +1,92 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.Modules.Lists.php + +```txt +/PHP/Modules/WMarkDown.Modules.Lists.php +``` + +## [[plain WMarkDown\Modules\Lists::close]] + +[[wdoc +Método static. +@name WMarkDown\Modules\Lists::close +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 1a63dec4f15a49ba95c0f14d976db871 +#&$html - optional Parámetro &$html +#&$levels - optional Parámetro &$levels +#&$l - optional Parámetro &$l +#$level - optional Parámetro $level +#return - - Retorno. +]] + +## [[plain WMarkDown\Modules\Lists::open]] + +[[wdoc +Método static. +@name WMarkDown\Modules\Lists::open +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 5cd1642fdc7ba67cdb29a8b60de2863c +#&$html - optional Parámetro &$html +#&$levels - optional Parámetro &$levels +#&$l - optional Parámetro &$l +#$level - optional Parámetro $level +#$header - optional Parámetro $header +]] + +## [[plain WMarkDown\Modules\Lists->get_next_position]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Lists->get_next_position +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 9ee80a64973ce5aac7853a7f99f3588a +#$string - optional Parámetro $string +]] + +## [[plain WMarkDown\Modules\Lists->process]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Lists->process +@see WMarkDown\Modules\Lists::open +@see WMarkDown\Modules::format +@see WMarkDown\Modules\Lists::close +@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.Lists.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/Modules/WMarkDown.Modules.Lists.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,modules,lists", + "description" : "WMarkDown.Modules.Lists.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Modules/WMarkDown.Modules.Multimedia.php.w.md b/WMD/dev/PHP/Modules/WMarkDown.Modules.Multimedia.php.w.md new file mode 100755 index 0000000..a59f9b8 --- /dev/null +++ b/WMD/dev/PHP/Modules/WMarkDown.Modules.Multimedia.php.w.md @@ -0,0 +1,210 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.Modules.Multimedia.php + +```txt +/PHP/Modules/WMarkDown.Modules.Multimedia.php +``` + +## [[plain WMarkDown\Modules\Multimedia->get_next_position]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Multimedia->get_next_position +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 1045b077e60f4fece7c8d2470370d998 +#$string - optional Parámetro $string +]] + +## [[plain WMarkDown\Modules\Multimedia::multimedia_box]] + +[[wdoc +Método static. +@name WMarkDown\Modules\Multimedia::multimedia_box +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 24442742629079b0bf10b24ffb974e27 +#$html - optional Parámetro $html +#$multiple - optional Parámetro $multiple +#return - - Retorno. +]] + +## [[plain WMarkDown\Modules\Multimedia->image]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Multimedia->image +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash dd851ccf9f5de2193ad6a1cb9f73f381 +#$data - optional Parámetro $data +]] + +## [[plain WMarkDown\Modules\Multimedia->images]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Multimedia->images +@see WMarkDown\Modules\Multimedia->image +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 2e19c8119173c49e8272f3a37f309842 +#$data - optional Parámetro $data +]] + +## [[plain WMarkDown\Modules\Multimedia->video]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Multimedia->video +@see WMarkDown->get_mime +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash f0d1712cf2e574f899b871eabb35e1a9 +#$data - optional Parámetro $data +]] + +## [[plain WMarkDown\Modules\Multimedia->videos]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Multimedia->videos +@see WMarkDown\Modules\Multimedia->video +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash d9e15108fb2d7a967cfcfd2f2dab8f56 +#$data - optional Parámetro $data +]] + +## [[plain WMarkDown\Modules\Multimedia->audio_poster]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Multimedia->audio_poster +@see WMarkDown\Modules\Multimedia::multimedia_box +@see WMarkDown\Modules\Multimedia->image +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash d9b0aaeaccb3dbd105e7a1d9d66dcbb6 +#$data - optional Parámetro $data +#return - - Retorno. +]] + +## [[plain WMarkDown\Modules\Multimedia->audio]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Multimedia->audio +@see WMarkDown->get_mime +@see WMarkDown\Modules\Multimedia->audio_poster +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash c40b26ed7ae0ed6d4b7e3a2682084221 +#$data - optional Parámetro $data +#$multiple - required Parámetro $multiple +]] + +## [[plain WMarkDown\Modules\Multimedia->audios]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Multimedia->audios +@see WMarkDown\Modules\Multimedia->audio +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash b292daaf4711fb227b0216ada47f24e5 +#$data - optional Parámetro $data +]] + +## [[plain WMarkDown\Modules\Multimedia::check]] + +[[wdoc +Método static. +@name WMarkDown\Modules\Multimedia::check +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 419059d25e98816c1c2a0f12af90353b +#$matches - optional Parámetro $matches +#$is - optional Parámetro $is +#return - - Retorno. +]] + +## [[plain WMarkDown\Modules\Multimedia->embed]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Multimedia->embed +@see WMarkDown\Modules\Multimedia::check +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash f2a7a70ee60baebea8033426cdf636d7 +#$links - optional Parámetro $links +#return - - Retorno. +]] + +## [[plain WMarkDown\Modules\Multimedia->process]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Multimedia->process +@see WMarkDown\Modules\Multimedia::multimedia_box +@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.Multimedia.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/Modules/WMarkDown.Modules.Multimedia.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,modules,multimedia", + "description" : "WMarkDown.Modules.Multimedia.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Modules/WMarkDown.Modules.Paragraphs.php.w.md b/WMD/dev/PHP/Modules/WMarkDown.Modules.Paragraphs.php.w.md new file mode 100755 index 0000000..8ef4d59 --- /dev/null +++ b/WMD/dev/PHP/Modules/WMarkDown.Modules.Paragraphs.php.w.md @@ -0,0 +1,54 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.Modules.Paragraphs.php + +```txt +/PHP/Modules/WMarkDown.Modules.Paragraphs.php +``` + +## [[plain WMarkDown\Modules\Paragraphs->get_next_position]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Paragraphs->get_next_position +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 2c0d78ea1b89b13f37fb7a357dcf94c1 +#$string - optional Parámetro $string +]] + +## [[plain WMarkDown\Modules\Paragraphs->process]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Paragraphs->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.Paragraphs.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/Modules/WMarkDown.Modules.Paragraphs.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,modules,paragraphs", + "description" : "WMarkDown.Modules.Paragraphs.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Modules/WMarkDown.Modules.Quotes.php.w.md b/WMD/dev/PHP/Modules/WMarkDown.Modules.Quotes.php.w.md new file mode 100755 index 0000000..c58d36b --- /dev/null +++ b/WMD/dev/PHP/Modules/WMarkDown.Modules.Quotes.php.w.md @@ -0,0 +1,54 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.Modules.Quotes.php + +```txt +/PHP/Modules/WMarkDown.Modules.Quotes.php +``` + +## [[plain WMarkDown\Modules\Quotes->get_next_position]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Quotes->get_next_position +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 4a92e98c86379a166f999f93995d796e +#$string - optional Parámetro $string +]] + +## [[plain WMarkDown\Modules\Quotes->process]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Quotes->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.Quotes.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/Modules/WMarkDown.Modules.Quotes.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,modules,quotes", + "description" : "WMarkDown.Modules.Quotes.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/Modules/WMarkDown.Modules.Tables.php.w.md b/WMD/dev/PHP/Modules/WMarkDown.Modules.Tables.php.w.md new file mode 100755 index 0000000..8a219d6 --- /dev/null +++ b/WMD/dev/PHP/Modules/WMarkDown.Modules.Tables.php.w.md @@ -0,0 +1,55 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.Modules.Tables.php + +```txt +/PHP/Modules/WMarkDown.Modules.Tables.php +``` + +## [[plain WMarkDown\Modules\Tables->get_next_position]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Tables->get_next_position +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash e34573a95a9ac2fa5d3e1bcebbe140b2 +#$string - optional Parámetro $string +]] + +## [[plain WMarkDown\Modules\Tables->process]] + +[[wdoc +Método object. +@name WMarkDown\Modules\Tables->process +@see WMarkDown\Modules::format +@see WMarkDown->load_file +@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.Tables.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/Modules/WMarkDown.Modules.Tables.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,modules,tables", + "description" : "WMarkDown.Modules.Tables.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.CSharp.php.w.md b/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.CSharp.php.w.md new file mode 100755 index 0000000..bb0711a --- /dev/null +++ b/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.CSharp.php.w.md @@ -0,0 +1,109 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.ScriptsAnalyzer.CSharp.php + +```txt +/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.CSharp.php +``` + +## [[plain WMarkDown\ScriptsAnalyzer\CSharp::get_i]] + +[[wdoc +Método static. +@name WMarkDown\ScriptsAnalyzer\CSharp::get_i +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 41821e0ea8096b6c0216695996d2731f +#&$methods - optional Parámetro &$methods +#$name - optional Parámetro $name +#return - - Retorno. +]] + +## [[plain WMarkDown\ScriptsAnalyzer\CSharp::get_parameter]] + +[[wdoc +Método static. +@name WMarkDown\ScriptsAnalyzer\CSharp::get_parameter +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash b507bf6ffe5e557ee5d0cb2ef3a9a1f2 +#&$parameter - optional Parámetro &$parameter +#$value - optional Parámetro $value +]] + +## [[plain WMarkDown\ScriptsAnalyzer\CSharp::get_parameters]] + +[[wdoc +Método static. +@name WMarkDown\ScriptsAnalyzer\CSharp::get_parameters +@see WMarkDown\ScriptsAnalyzer\CSharp::get_parameter +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash c820e1d09fc208b1347e1ef69efaec6b +#&$content - optional Parámetro &$content +#$i - optional Parámetro $i +#return - - Retorno. +]] + +## [[plain WMarkDown\ScriptsAnalyzer\CSharp::get_body]] + +[[wdoc +Método static. +@name WMarkDown\ScriptsAnalyzer\CSharp::get_body +@see +@lang PHP +@author KyMAN +@since 20211220 +@version 20220402 +@access private +@hash d47975d20ad9f3f4d05bd058de85566a +#&$content - optional Parámetro &$content +]] + +## [[plain WMarkDown\ScriptsAnalyzer\CSharp->analyze]] + +[[wdoc +Método object. +@name WMarkDown\ScriptsAnalyzer\CSharp->analyze +@see WMarkDown\ScriptsAnalyzer::get_content +@see WMarkDown\ScriptsAnalyzer\CSharp->get_data +@see WMarkDown\ScriptsAnalyzer\CSharp::get_parameters +@see WMarkDown\ScriptsAnalyzer\CSharp::get_body +@see WMarkDown\ScriptsAnalyzer\CSharp::remove_blocks +@see WMarkDown::save_file +@lang PHP +@author KyMAN +@since 20220329 +@version 20220329 +@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.ScriptsAnalyzer.CSharp.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.CSharp.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,scripts,analyzer,C,sharp", + "description" : "WMarkDown.ScriptsAnalyzer.CSharp.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.JS.php.w.md b/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.JS.php.w.md new file mode 100755 index 0000000..f384327 --- /dev/null +++ b/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.JS.php.w.md @@ -0,0 +1,59 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.ScriptsAnalyzer.JS.php + +```txt +/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.JS.php +``` + +## [[plain WMarkDown\ScriptsAnalyzer\JS::get_parameters]] + +[[wdoc +Método static. +@name WMarkDown\ScriptsAnalyzer\JS::get_parameters +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 7814b78cf4087e76bcf4c2e34018e6ba +#$block - optional Parámetro $block +#return - - Retorno. +]] + +## [[plain WMarkDown\ScriptsAnalyzer\JS->analyze]] + +[[wdoc +Método object. +@name WMarkDown\ScriptsAnalyzer\JS->analyze +@see WMarkDown\ScriptsAnalyzer::get_content +@see WMarkDown::string_variables +@see WMarkDown\ScriptsAnalyzer\JS::get_parameters +@see WMarkDown::save_file +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 80cf030f90df75f48f6f7f9671062c30 +#$file - optional Parámetro $file +#$path - required Parámetro $path +#&$languages - optional Parámetro &$languages +#$level - optional Parámetro $level +]] + +[[html_data { + "title" : "WMarkDown.ScriptsAnalyzer.JS.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.JS.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,scripts,analyzer,JS", + "description" : "WMarkDown.ScriptsAnalyzer.JS.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.PHP.php.w.md b/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.PHP.php.w.md new file mode 100755 index 0000000..0fad178 --- /dev/null +++ b/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.PHP.php.w.md @@ -0,0 +1,42 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.ScriptsAnalyzer.PHP.php + +```txt +/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.PHP.php +``` + +## [[plain WMarkDown\ScriptsAnalyzer\PHP->analyze]] + +[[wdoc +Método object. +@name WMarkDown\ScriptsAnalyzer\PHP->analyze +@see WMarkDown\ScriptsAnalyzer::get_content +@see WMarkDown::string_variables +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 827275a6b1c89e1f4e579f80a5ad876b +#$file - optional Parámetro $file +#$path - required Parámetro $path +#&$languages - optional Parámetro &$languages +#$level - optional Parámetro $level +]] + +[[html_data { + "title" : "WMarkDown.ScriptsAnalyzer.PHP.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.PHP.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,scripts,analyzer,PHP", + "description" : "WMarkDown.ScriptsAnalyzer.PHP.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.Python.php.w.md b/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.Python.php.w.md new file mode 100755 index 0000000..e79b451 --- /dev/null +++ b/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.Python.php.w.md @@ -0,0 +1,41 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.ScriptsAnalyzer.Python.php + +```txt +/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.Python.php +``` + +## [[plain WMarkDown\ScriptsAnalyzer\Python->analyze]] + +[[wdoc +Método object. +@name WMarkDown\ScriptsAnalyzer\Python->analyze +@see WMarkDown\ScriptsAnalyzer::get_content +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 80cf030f90df75f48f6f7f9671062c30 +#$file - optional Parámetro $file +#$path - required Parámetro $path +#&$languages - optional Parámetro &$languages +#$level - optional Parámetro $level +]] + +[[html_data { + "title" : "WMarkDown.ScriptsAnalyzer.Python.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.Python.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,scripts,analyzer,python", + "description" : "WMarkDown.ScriptsAnalyzer.Python.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.SQL.php.w.md b/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.SQL.php.w.md new file mode 100755 index 0000000..8f74db6 --- /dev/null +++ b/WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.SQL.php.w.md @@ -0,0 +1,40 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.ScriptsAnalyzer.SQL.php + +```txt +/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.SQL.php +``` + +## [[plain WMarkDown\ScriptsAnalyzer\SQL->analyze]] + +[[wdoc +Método object. +@name WMarkDown\ScriptsAnalyzer\SQL->analyze +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 80cf030f90df75f48f6f7f9671062c30 +#$file - optional Parámetro $file +#$path - required Parámetro $path +#&$languages - optional Parámetro &$languages +#$level - optional Parámetro $level +]] + +[[html_data { + "title" : "WMarkDown.ScriptsAnalyzer.SQL.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.SQL.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,scripts,analyzer,SQL", + "description" : "WMarkDown.ScriptsAnalyzer.SQL.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/WMarkDown.Modules.php.w.md b/WMD/dev/PHP/WMarkDown.Modules.php.w.md new file mode 100755 index 0000000..2b53a8e --- /dev/null +++ b/WMD/dev/PHP/WMarkDown.Modules.php.w.md @@ -0,0 +1,130 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.Modules.php + +```txt +/PHP/WMarkDown.Modules.php +``` + +## [[plain WMarkDown\Modules->add]] + +[[wdoc +Método object. +@name WMarkDown\Modules->add +@see WMarkDown->settings +@see WMarkDown->get_root +@see WMarkDown\Modules->add +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash f154c9732abc15df7b999f9c15809fda +#$modules - optional Parámetro $modules +#$overwrite - required Parámetro $overwrite +]] + +## [[plain WMarkDown\Modules->__construct]] + +[[wdoc +Método constructor. +@name WMarkDown\Modules->__construct +@see WMarkDown\Modules->add +@see WMarkDown->settings +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 1ed1c745cce48022e4e34202b586a03d +#$wmarkdown - optional Parámetro $wmarkdown +#$excludes - optional Parámetro $excludes +]] + +## [[plain WMarkDown\Modules->create_menu_item]] + +[[wdoc +Método object. +@name WMarkDown\Modules->create_menu_item +@see WMarkDown->get_hash +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 4febb42131050a1d35fef03f33ef6ffe +#$level - optional Parámetro $level +#$id - optional Parámetro $id +#$content - optional Parámetro $content +]] + +## [[plain WMarkDown\Modules::create_file_item]] + +[[wdoc +Método static. +@name WMarkDown\Modules::create_file_item +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 00b74b884c0d7c5198eafe71e06540b9 +#$url - optional Parámetro $url +#$title - optional Parámetro $title +#$file - optional Parámetro $file +#return - - Retorno. +]] + +## [[plain WMarkDown\Modules->prepare]] + +[[wdoc +Método object. +@name WMarkDown\Modules->prepare +@see WMarkDown->settings +@see WMarkDown\Modules->create_menu_item +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash dd3072e8320dbf89f12432d82299ca75 +#$string - optional Parámetro $string +#$master - optional Parámetro $master +#$level - optional Parámetro $level +#return - - Retorno. +]] + +## [[plain WMarkDown\Modules::format]] + +[[wdoc +Método static. +@name WMarkDown\Modules::format +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 80cf030f90df75f48f6f7f9671062c30 +#$wmarkdown - optional Parámetro $wmarkdown +#$string - optional Parámetro $string +#$excludes - optional Parámetro $excludes +#$master - required Parámetro $master +#$level - optional Parámetro $level +#return - - Retorno. +]] + +[[html_data { + "title" : "WMarkDown.Modules.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/WMarkDown.Modules.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,modules", + "description" : "WMarkDown.Modules.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/WMarkDown.SQLite.php.w.md b/WMD/dev/PHP/WMarkDown.SQLite.php.w.md new file mode 100755 index 0000000..8f69341 --- /dev/null +++ b/WMD/dev/PHP/WMarkDown.SQLite.php.w.md @@ -0,0 +1,125 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.SQLite.php + +```txt +/PHP/WMarkDown.SQLite.php +``` + +## [[plain WMarkDown\SQLite->connect]] + +[[wdoc +Método object. +@name WMarkDown\SQLite->connect +@see WMarkDown->settings +@see WMarkDown\SQLite->close +@see WMarkDown\SQLite->query +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash a73c04cd47c624a4756e9a7b7ad4802d +]] + +## [[plain WMarkDown\SQLite->__construct]] + +[[wdoc +Método constructor. +@name WMarkDown\SQLite->__construct +@see WMarkDown\SQLite->connect +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash e3f72cc43c1f3ffa01ee3b4844e88530 +#$wmarkdown - optional Parámetro $wmarkdown +]] + +## [[plain WMarkDown\SQLite->close]] + +[[wdoc +Método object. +@name WMarkDown\SQLite->close +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 5c2431077a54a99a89fa345ec3f9edbe +]] + +## [[plain WMarkDown\SQLite->__destruct]] + +[[wdoc +Método destructor. +@name WMarkDown\SQLite->__destruct +@see WMarkDown\SQLite->close +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash f4344e7c0a8b023bc7dcf1a575c206bc +]] + +## [[plain WMarkDown\SQLite->is_connected]] + +[[wdoc +Método object. +@name WMarkDown\SQLite->is_connected +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 4435b2aec99a4ed9b8a3113d6d0972ae +#return - - Retorno. +]] + +## [[plain WMarkDown\SQLite->reconnect]] + +[[wdoc +Método object. +@name WMarkDown\SQLite->reconnect +@see WMarkDown\SQLite->close +@see WMarkDown\SQLite->connect +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash e256a8b280c994ddb0d2bc8ef31026bc +]] + +## [[plain WMarkDown\SQLite->query]] + +[[wdoc +Método object. +@name WMarkDown\SQLite->query +@see WMarkDown\SQLite->is_connected +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 3149e48366e2cde626334831bd6f8bd5 +#$query - optional Parámetro $query +]] + +[[html_data { + "title" : "WMarkDown.SQLite.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/WMarkDown.SQLite.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,SQ,lite", + "description" : "WMarkDown.SQLite.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/WMarkDown.ScriptsAnalyzer.php.w.md b/WMD/dev/PHP/WMarkDown.ScriptsAnalyzer.php.w.md new file mode 100755 index 0000000..90f9014 --- /dev/null +++ b/WMD/dev/PHP/WMarkDown.ScriptsAnalyzer.php.w.md @@ -0,0 +1,276 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.ScriptsAnalyzer.php + +```txt +/PHP/WMarkDown.ScriptsAnalyzer.php +``` + +## [[plain WMarkDown\ScriptsAnalyzer->__construct]] + +[[wdoc +Método constructor. +@name WMarkDown\ScriptsAnalyzer->__construct +@see WMarkDown->get_ignore_file_paths +@see WMarkDown->get_root +@see WMarkDown->settings +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access public +@hash cbfd25de23b5994ff2e1917f28314a29 +#$wmarkdown - optional Parámetro $wmarkdown +#$input - optional Parámetro $input +]] + +## [[plain WMarkDown\ScriptsAnalyzer::get_content]] + +[[wdoc +Método static. +@name WMarkDown\ScriptsAnalyzer::get_content +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access public +@hash 3bb68b3fdc75a456123c85db00b04d59 +#$file - optional Parámetro $file +#$path - optional Parámetro $path +#return - - Retorno. +]] + +## [[plain WMarkDown\ScriptsAnalyzer->get_wmd_path]] + +[[wdoc +Método object. +@name WMarkDown\ScriptsAnalyzer->get_wmd_path +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access public +@hash c18a3e801312251adc6203a0a43b8bd3 +#$file - optional Parámetro $file +#$path - optional Parámetro $path +#return - - Retorno. +]] + +## [[plain WMarkDown\ScriptsAnalyzer->write]] + +[[wdoc +Método object. +@name WMarkDown\ScriptsAnalyzer->write +@see WMarkDown\ScriptsAnalyzer->get_wmd_path +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash d611a8a4b1a361b770bbaef731908e82 +#$file - optional Parámetro $file +#$path - optional Parámetro $path +#$content - optional Parámetro $content +]] + +## [[plain WMarkDown\ScriptsAnalyzer::get_properties]] + +[[wdoc +Método static. +@name WMarkDown\ScriptsAnalyzer::get_properties +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash d3a4f5ca6026cee50f68122edfb5495d +#$value - optional Parámetro $value +#return - - Retorno. +]] + +## [[plain WMarkDown\ScriptsAnalyzer::get_attributes]] + +[[wdoc +Método static. +@name WMarkDown\ScriptsAnalyzer::get_attributes +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash e9d6420690aee5e87871839cd2bf9fa1 +#$wdoc - optional Parámetro $wdoc +#return - - Retorno. +]] + +## [[plain WMarkDown\ScriptsAnalyzer::set_parameter]] + +[[wdoc +Método static. +@name WMarkDown\ScriptsAnalyzer::set_parameter +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash ade6acc9c02f97999fa9da1b772fd038 +#$parameter - optional Parámetro $parameter +#return - - Retorno. +]] + +## [[plain WMarkDown\ScriptsAnalyzer::set_return]] + +[[wdoc +Método static. +@name WMarkDown\ScriptsAnalyzer::set_return +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash 2201ec09a48a33e9f406571d4f2bf513 +#$return - optional Parámetro $return +#return - - Retorno. +]] + +## [[plain WMarkDown\ScriptsAnalyzer->update_wdoc]] + +[[wdoc +Método object. +@name WMarkDown\ScriptsAnalyzer->update_wdoc +@see WMarkDown\ScriptsAnalyzer::set_return +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash e40b880a5de2d9491f68aa8b152930a9 +#&$wdoc - optional Parámetro &$wdoc +#$current - optional Parámetro $current +#$new - optional Parámetro $new +#return - - Retorno. +]] + +## [[plain WMarkDown\ScriptsAnalyzer->add_method]] + +[[wdoc +Método object. +@name WMarkDown\ScriptsAnalyzer->add_method +@see WMarkDown\ScriptsAnalyzer::set_parameter +@see WMarkDown\ScriptsAnalyzer::set_return +@see WMarkDown::string_variables +@see WMarkDown\ScriptsAnalyzer::get_attributes +@see WMarkDown\ScriptsAnalyzer->update_wdoc +@see WmarkDown::string_variables +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access public +@hash 06bc12e8291a79801ab690d3a61f31ac +#$wmd - optional Parámetro $wmd +#$last - optional Parámetro $last +#$variables - optional Parámetro $variables +#return - - Retorno. +]] + +## [[plain WMarkDown\ScriptsAnalyzer->get_commons]] + +[[wdoc +Método object. +@name WMarkDown\ScriptsAnalyzer->get_commons +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash 5e892e156464e9dea944496cbbcbbe38 +#return - - Retorno. +]] + +## [[plain WMarkDown\ScriptsAnalyzer->analyze]] + +[[wdoc +Método object. +@name WMarkDown\ScriptsAnalyzer->analyze +@see WMarkDown\ScriptsAnalyzer->get_commons +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash 2f7ca49347c5e1fdd7e99a43470ef155 +#$class - optional Parámetro $class +#$object - optional Parámetro $object +#$file - optional Parámetro $file +#$path - optional Parámetro $path +#&$languages - optional Parámetro &$languages +#$i - optional Parámetro $i +]] + +## [[plain WMarkDown\ScriptsAnalyzer->build]] + +[[wdoc +Método object. +@name WMarkDown\ScriptsAnalyzer->build +@see WMarkDown\ScriptsAnalyzer->build +@see WMarkDown\ScriptsAnalyzer->analyze +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash d89a7b59af6b42b2c915acdf9797629e +#$path - optional Parámetro $path +#&$languages - optional Parámetro &$languages +#$i - optional Parámetro $i +]] + +## [[plain WMarkDown\ScriptsAnalyzer->write_wmd]] + +[[wdoc +Método object. +@name WMarkDown\ScriptsAnalyzer->write_wmd +@see WMarkDown::save_file +@see WMarkDown::string_variables +@lang PHP +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash e48b5b2a47b221d81db6c38ac8cfc0ba +#$path - optional Parámetro $path +#$content - optional Parámetro $content +#$variables - optional Parámetro $variables +]] + +## [[plain WMarkDown\ScriptsAnalyzer->update_files]] + +[[wdoc +Método object. +@name WMarkDown\ScriptsAnalyzer->update_files +@see WMarkDown\ScriptsAnalyzer->build +@see WMarkDown\ScriptsAnalyzer->write_wmd +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 80cf030f90df75f48f6f7f9671062c30 +]] + +[[html_data { + "title" : "WMarkDown.ScriptsAnalyzer.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/WMarkDown.ScriptsAnalyzer.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,scripts,analyzer", + "description" : "WMarkDown.ScriptsAnalyzer.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/WMarkDown.Secrets.php.w.md b/WMD/dev/PHP/WMarkDown.Secrets.php.w.md new file mode 100755 index 0000000..fae8d0e --- /dev/null +++ b/WMD/dev/PHP/WMarkDown.Secrets.php.w.md @@ -0,0 +1,23 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20220329, + "version" : 20220329 +}]] +# WMarkDown.Secrets.php + +```txt +/PHP/WMarkDown.Secrets.php +``` + +[[html_data { + "title" : "WMarkDown.Secrets.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/WMarkDown.Secrets.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20220329, + "version" : 20220329, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,secrets", + "description" : "WMarkDown.Secrets.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/dev/PHP/WMarkDown.Sessions.php.w.md b/WMD/dev/PHP/WMarkDown.Sessions.php.w.md new file mode 100755 index 0000000..f11acca --- /dev/null +++ b/WMD/dev/PHP/WMarkDown.Sessions.php.w.md @@ -0,0 +1,23 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.Sessions.php + +```txt +/PHP/WMarkDown.Sessions.php +``` + +[[html_data { + "title" : "WMarkDown.Sessions.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/WMarkDown.Sessions.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,sessions", + "description" : "WMarkDown.Sessions.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/dev/PHP/WMarkDown.php.w.md b/WMD/dev/PHP/WMarkDown.php.w.md new file mode 100755 index 0000000..f692ef0 --- /dev/null +++ b/WMD/dev/PHP/WMarkDown.php.w.md @@ -0,0 +1,336 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.php + +```txt +/PHP/WMarkDown.php +``` + +## [[plain \WMarkDown->get_value]] + +[[wdoc +Método object. +@name \WMarkDown->get_value +@see WMarkDown->get_value +@lang PHP +@author KyMAN +@since 20211220 +@version 20220402 +@access private +@hash f364f736918b82d4898cd88e47f15e4c +#$name - optional Parámetro $name +#$nulls - optional Parámetro $nulls +#return - - Retorno. +]] + +## [[plain \WMarkDown->default_value]] + +[[wdoc +Método object. +@name \WMarkDown->default_value +@see WMarkDown->get_value +@lang PHP +@author KyMAN +@since 20211220 +@version 20220402 +@access private +@hash babfeec68007e4764b01b858558eeb54 +#$default - optional Parámetro $default +#$nulls - optional Parámetro $nulls +#return - - Retorno. +]] + +## [[plain \WMarkDown::is_dictionary]] + +[[wdoc +Método static. +@name \WMarkDown::is_dictionary +@lang PHP +@author KyMAN +@since 20211220 +@version 20220402 +@access public +@hash 00187b2c026417175c2bb214a22ccc5c +#$value - optional Parámetro $value +#return - - Retorno. +]] + +## [[plain \WMarkDown->settings]] + +[[wdoc +Método object. +@name \WMarkDown->settings +@see WMarkDown->get_value +@see WMarkDown->default_value +@see WMarkDown::is_dictionary +@lang PHP +@author KyMAN +@since 20211220 +@version 20220402 +@access public +@hash 255e0a1673b703a9a18b04241e3cb4a3 +#$names - required Parámetro $names +#$inputs - required Parámetro $inputs +#$default - required Parámetro $default +#$nulls - required Parámetro $nulls +#return - - Retorno. +]] + +## [[plain \WMarkDown::string_variables]] + +[[wdoc +Método static. +@name \WMarkDown::string_variables +@lang PHP +@author KyMAN +@since 20211220 +@version 20220402 +@access public +@hash 28319d66f8cda86a0244090b89dc7439 +#$string - optional Parámetro $string +#$variables - required Parámetro $variables +#$default - required Parámetro $default +]] + +## [[plain \WMarkDown::remove_directory]] + +[[wdoc +Método static. +@name \WMarkDown::remove_directory +@see WMarkDown::remove_directory +@lang PHP +@author KyMAN +@since 20211220 +@version 20220402 +@access private +@hash c17d5d982ddd816918d095935eb69d13 +#$path - optional Parámetro $path +]] + +## [[plain \WMarkDown->remove_current_html_files]] + +[[wdoc +Método object. +@name \WMarkDown->remove_current_html_files +@see WMarkDown->settings +@see WMarkDown::remove_directory +@lang PHP +@author KyMAN +@since 20211220 +@version 20220402 +@access private +@hash 9433c2cea359b6f4b9c1b0f50a3d90fd +]] + +## [[plain \WMarkDown::save_file]] + +[[wdoc +Método static. +@name \WMarkDown::save_file +@lang PHP +@author KyMAN +@since 20211220 +@version 20220402 +@access public +@hash dfd1d4c893e888045752a497ff310e82 +#$path - optional Parámetro $path +#$content - optional Parámetro $content +]] + +## [[plain \WMarkDown->create_html_files]] + +[[wdoc +Método object. +@name \WMarkDown->create_html_files +@see WMarkDown->create_html_files +@see WMarkDown::save_file +@see WMarkDown::string_variables +@see WMarkDown\Modules::format +@lang PHP +@author KyMAN +@since 20211220 +@version 20220402 +@access private +@hash b3e7594be61be6e4dcc79ada52623c83 +#$path - required Parámetro $path +]] + +## [[plain \WMarkDown->request]] + +[[wdoc +Método object. +@name \WMarkDown->request +@lang PHP +@author KyMAN +@since 20211220 +@version 20220402 +@access private +@hash e046243f993e8d52f92804177a984b41 +#$parameters - optional Parámetro $parameters +]] + +## [[plain \WMarkDown->get_ignore_file_paths]] + +[[wdoc +Método object. +@name \WMarkDown->get_ignore_file_paths +@lang PHP +@author KyMAN +@since 20211220 +@version 20220402 +@access public +@hash e55c8c983ae483eced630d9cdcbd0293 +#return - - Retorno. +]] + +## [[plain \WMarkDown->__construct]] + +[[wdoc +Método constructor. +@name \WMarkDown->__construct +@see WMarkDown->settings +@see WMarkDown->request +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 5c62ceb363401fc49608849d81fc276d +#$input - required Parámetro $input +]] + +## [[plain \WMarkDown->get_root]] + +[[wdoc +Método object. +@name \WMarkDown->get_root +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash bf215793f8e71f02956e6cb2b6439d84 +#return - - Retorno. +]] + +## [[plain \WMarkDown->get_wmarkdown_root]] + +[[wdoc +Método object. +@name \WMarkDown->get_wmarkdown_root +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 3d4b08413487b467904fa865407c1922 +#return - - Retorno. +]] + +## [[plain \WMarkDown->get_hash]] + +[[wdoc +Método object. +@name \WMarkDown->get_hash +@see WMarkDown->settings +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash c659518558d8d5adccbb759edc528b7e +#return - - Retorno. +]] + +## [[plain \WMarkDown->load_file]] + +[[wdoc +Método object. +@name \WMarkDown->load_file +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash ebe86d5868efc6298240434faebff065 +#$path - optional Parámetro $path +#return - - Retorno. +]] + +## [[plain \WMarkDown->get_documentation_path]] + +[[wdoc +Método object. +@name \WMarkDown->get_documentation_path +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash ab48259cc3831e25ab674649b1b1095d +#return - - Retorno. +]] + +## [[plain \WMarkDown->get_mime]] + +[[wdoc +Método object. +@name \WMarkDown->get_mime +@see WMarkDown->settings +@see WMarkDown->load_file +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 55e9552037509fdd25146eb5c16e15f3 +#$path - optional Parámetro $path +#return - - Retorno. +]] + +## [[plain \WMarkDown->get_extensions]] + +[[wdoc +Método object. +@name \WMarkDown->get_extensions +@see WMarkDown->settings +@see WMarkDown->load +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 8e6768e0d78fc741a4f10a61fe967524 +#$mime - optional Parámetro $mime +#return - - Retorno. +]] + +## [[plain \WMarkDown::string_to_pattern]] + +[[wdoc +Método static. +@name \WMarkDown::string_to_pattern +@lang PHP +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 80cf030f90df75f48f6f7f9671062c30 +#$string - optional Parámetro $string +]] + +[[html_data { + "title" : "WMarkDown.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/WMarkDown.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,main", + "description" : "WMarkDown.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/PHP/include.php.w.md b/WMD/dev/PHP/include.php.w.md new file mode 100755 index 0000000..f4345b0 --- /dev/null +++ b/WMD/dev/PHP/include.php.w.md @@ -0,0 +1,23 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# include.php + +```txt +/PHP/include.php +``` + +[[html_data { + "title" : "include.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/PHP/include.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,main", + "description" : "include.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/dev/PHP/index.w.md b/WMD/dev/PHP/index.w.md new file mode 100755 index 0000000..9bb1935 --- /dev/null +++ b/WMD/dev/PHP/index.w.md @@ -0,0 +1,123 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20220402, + "version" : 20220402 +}]] +# PHP + +[[header_level 0]] +[[include /WMD/dev/PHP/Abstracts/WMarkDown.Abstracts.Modules.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Abstracts/WMarkDown.Abstracts.ScriptsAnalyzer.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Drivers/WMarkDown.PDO.SQLite.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Interfaces/WMarkDown.Interfaces.Modules.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Interfaces/WMarkDown.Interfaces.ScriptsAnalyzer.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Modules/WMarkDown.Modules.Checks.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Modules/WMarkDown.Modules.CodeBlocks.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Modules/WMarkDown.Modules.CustomParameters.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Modules/WMarkDown.Modules.Escapes.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Modules/WMarkDown.Modules.FontFormats.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Modules/WMarkDown.Modules.Headers.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Modules/WMarkDown.Modules.Includes.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Modules/WMarkDown.Modules.Links.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Modules/WMarkDown.Modules.Lists.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Modules/WMarkDown.Modules.Multimedia.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Modules/WMarkDown.Modules.Paragraphs.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Modules/WMarkDown.Modules.Quotes.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/Modules/WMarkDown.Modules.Tables.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.CSharp.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.JS.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.PHP.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.Python.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.SQL.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/WMarkDown.Modules.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/WMarkDown.SQLite.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/WMarkDown.ScriptsAnalyzer.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/WMarkDown.Secrets.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/WMarkDown.Sessions.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/WMarkDown.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/PHP/include.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/Public/git_update.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/Public/update.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/Public/wmd.php.w.md]] + +[[header_level 0]] +[[include /WMD/dev/Public/wmd_scripts.php.w.md]] + + + +[[html_data { + "title" : "PHP - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/dev/PHP/index.html", + "author" : "Tarsier,KyMAN", + "since" : 20220402, + "version" : 20220402, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,php", + "description" : "Parte PHP del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/dev/Public/ecma/WMarkDown.Dictionary.ecma.js.w.md b/WMD/dev/Public/ecma/WMarkDown.Dictionary.ecma.js.w.md new file mode 100755 index 0000000..3480474 --- /dev/null +++ b/WMD/dev/Public/ecma/WMarkDown.Dictionary.ecma.js.w.md @@ -0,0 +1,211 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.Dictionary.ecma.js + +```txt +/Public/ecma/WMarkDown.Dictionary.ecma.js +``` + +## [[plain WMarkDown.Dictionary.construct]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.construct +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash e5a6f191432eb8ff69dcdcb69daa6876 +]] + +## [[plain WMarkDown.Dictionary.scroll_event_function]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.scroll_event_function +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash ae1c625da7650df0dbbb45f7a08712f6 +#event - optional Parámetro event +]] + +## [[plain WMarkDown.Dictionary.autosearch]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.autosearch +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash aaa4fa0b6907540a54b0d30c110856d9 +#return - - Retorno. +]] + +## [[plain WMarkDown.Dictionary.start]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.start +@see WMarkDown.settings +@see WMarkDown.threads_add +@see WMarkDown.Dictionary.scroll_event_function +@see WMarkDown.Dictionary.autosearch +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 99ed475c408df36df26fdde13ab26c9c +]] + +## [[plain WMarkDown.Dictionary.process_description]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.process_description +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 277eb480552ec7b2212d9ca7558abb8c +#description - optional Parámetro description +#return - - Retorno. +]] + +## [[plain WMarkDown.Dictionary.mount]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.mount +@see WMarkDown.Dictionary.mount +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash 7fac5d7729457dd2fbedab1ce8e103bb +#dictionary - optional Parámetro dictionary +#item - optional Parámetro item +#return - - Retorno. +]] + +## [[plain WMarkDown.Dictionary.load]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.load +@see WMarkDown.load_file +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash f7ce9037e1d657cef88571bdf064662a +#files - optional Parámetro files +#i - optional Parámetro i +#callback - optional Parámetro callback +#dictionary - optional Parámetro dictionary +#patterns_used - optional Parámetro patterns_used +]] + +## [[plain WMarkDown.Dictionary.build]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.build +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220402 +@access public +@hash 299e294eb355eb377940f5df89242dc5 +#return - - Retorno. +]] + +## [[plain WMarkDown.Dictionary.load_links]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.load_links +@see WMarkDown.Dictionary.load +@see WMarkDown.Dictionary.mount +@see WMarkDown.Dictionary.scroll_event_function +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash 526e856292c1db0d21b0cabec2029174 +#links - optional Parámetro links +#callback - optional Parámetro callback +#return - - Retorno. +]] + +## [[plain WMarkDown.Dictionary.show]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.show +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash c9c5d29f1915f37d7f59f8f70df7d3af +#element - optional Parámetro element +#event - optional Parámetro event +]] + +## [[plain WMarkDown.Dictionary.hide]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.hide +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 62399cdf7aeae208d560aeb92d754d77 +#element - optional Parámetro element +#event - optional Parámetro event +#return - - Retorno. +]] + +## [[plain WMarkDown.Dictionary.search]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.search +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220329 +@access public +@hash 6fd780a8bbfef5a1414398d042f7a17e +#element - optional Parámetro element +#event - optional Parámetro event +]] + +[[html_data { + "title" : "WMarkDown.Dictionary.ecma.js - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/Public/ecma/WMarkDown.Dictionary.ecma.js.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,dictionary,ecma", + "description" : "WMarkDown.Dictionary.ecma.js del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/Public/ecma/WMarkDown.Dictionary.old.ecma.js.w.md b/WMD/dev/Public/ecma/WMarkDown.Dictionary.old.ecma.js.w.md new file mode 100755 index 0000000..561c908 --- /dev/null +++ b/WMD/dev/Public/ecma/WMarkDown.Dictionary.old.ecma.js.w.md @@ -0,0 +1,173 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.Dictionary.old.ecma.js + +```txt +/Public/ecma/WMarkDown.Dictionary.old.ecma.js +``` + +## [[plain WMarkDown.Dictionary.construct]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.construct +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash e5a6f191432eb8ff69dcdcb69daa6876 +]] + +## [[plain WMarkDown.Dictionary.scroll_event_function]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.scroll_event_function +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash ae1c625da7650df0dbbb45f7a08712f6 +#event - optional Parámetro event +]] + +## [[plain WMarkDown.Dictionary.autosearch]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.autosearch +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash aaa4fa0b6907540a54b0d30c110856d9 +#return - - Retorno. +]] + +## [[plain WMarkDown.Dictionary.start]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.start +@see WMarkDown.threads_add +@see WMarkDown.Dictionary.scroll_event_function +@see WMarkDown.Dictionary.autosearch +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 6d92c9d2ca39b28f29ab9b8caa1fe868 +]] + +## [[plain WMarkDown.Dictionary.process_description]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.process_description +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 277eb480552ec7b2212d9ca7558abb8c +#description - optional Parámetro description +#return - - Retorno. +]] + +## [[plain WMarkDown.Dictionary.mount]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.mount +@see WMarkDown.Dictionary.mount +@see WMarkDown.Dictionary.process_description +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash d11292930e99d68baa84dd1cadc7ca57 +#dictionary - optional Parámetro dictionary +#item - optional Parámetro item +#return - - Retorno. +]] + +## [[plain WMarkDown.Dictionary.build]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.build +@see WMarkDown.utf8_decode +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 58a7a76a7c94bcb9525ab9725d5fadab +]] + +## [[plain WMarkDown.Dictionary.show]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.show +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash c9c5d29f1915f37d7f59f8f70df7d3af +#element - optional Parámetro element +#event - optional Parámetro event +]] + +## [[plain WMarkDown.Dictionary.hide]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.hide +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 62399cdf7aeae208d560aeb92d754d77 +#element - optional Parámetro element +#event - optional Parámetro event +#return - - Retorno. +]] + +## [[plain WMarkDown.Dictionary.search]] + +[[wdoc +Método object. +@name WMarkDown.Dictionary.search +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 8d551722a91f2f88b3b85e025fc09301 +#element - optional Parámetro element +#event - optional Parámetro event +]] + +[[html_data { + "title" : "WMarkDown.Dictionary.old.ecma.js - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/Public/ecma/WMarkDown.Dictionary.old.ecma.js.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,dictionary,old,ecma", + "description" : "WMarkDown.Dictionary.old.ecma.js del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/Public/ecma/WMarkDown.Multimedia.ecma.js.w.md b/WMD/dev/Public/ecma/WMarkDown.Multimedia.ecma.js.w.md new file mode 100755 index 0000000..3969984 --- /dev/null +++ b/WMD/dev/Public/ecma/WMarkDown.Multimedia.ecma.js.w.md @@ -0,0 +1,180 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.Multimedia.ecma.js + +```txt +/Public/ecma/WMarkDown.Multimedia.ecma.js +``` + +## [[plain WMarkDown.Multimedia.construct]] + +[[wdoc +Método object. +@name WMarkDown.Multimedia.construct +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash e5a6f191432eb8ff69dcdcb69daa6876 +]] + +## [[plain WMarkDown.Multimedia.error]] + +[[wdoc +Método object. +@name WMarkDown.Multimedia.error +@see WMarkDown.Multimedia.error +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 0c8711a0bdab4af3aeaeb4bb741c8953 +#element - optional Parámetro element +#type - optional Parámetro type +#return - - Retorno. +]] + +## [[plain WMarkDown.Multimedia.image_try_next]] + +[[wdoc +Método object. +@name WMarkDown.Multimedia.image_try_next +@see WMarkDown.Multimedia.error +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 8cfaae54bc3da5c2b29c47847266a8b2 +#element - optional Parámetro element +#event - optional Parámetro event +]] + +## [[plain WMarkDown.Multimedia.video_try_next]] + +[[wdoc +Método object. +@name WMarkDown.Multimedia.video_try_next +@see WMarkDown.Multimedia.error +@see WMarkDown.get_mime +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash dccf8cc17d06fcb2c146df38e990a0a6 +#element - optional Parámetro element +#event - optional Parámetro event +]] + +## [[plain WMarkDown.Multimedia.audio_try_next]] + +[[wdoc +Método object. +@name WMarkDown.Multimedia.audio_try_next +@see WMarkDown.Multimedia.error +@see WMarkDown.get_mime +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 44a557b773171ac079d2bb37caadbba1 +#element - optional Parámetro element +#event - optional Parámetro event +]] + +## [[plain WMarkDown.Multimedia.embed_try]] + +[[wdoc +Método object. +@name WMarkDown.Multimedia.embed_try +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 535ff2fe2424efa61b251b65aef52710 +#embed - optional Parámetro embed +]] + +## [[plain WMarkDown.Multimedia.execute_in_range]] + +[[wdoc +Método object. +@name WMarkDown.Multimedia.execute_in_range +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 25c467d2b49a5c75478de6881cc2dfb8 +#item - optional Parámetro item +#range - optional Parámetro range +#callback - optional Parámetro callback +]] + +## [[plain WMarkDown.Multimedia.on_scroll]] + +[[wdoc +Método object. +@name WMarkDown.Multimedia.on_scroll +@see WMarkDown.settings +@see WMarkDown.Multimedia.execute_in_range +@see WMarkDown.Multimedia.embed_try +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 38fbced3217ce1e93859c65024759e05 +#event - optional Parámetro event +]] + +## [[plain WMarkDown.Multimedia.start]] + +[[wdoc +Método object. +@name WMarkDown.Multimedia.start +@see WMarkDown.Multimedia.on_scroll +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 4627af6894344fbf574db9c0765b99a8 +]] + +## [[plain WMarkDown.Multimedia.go]] + +[[wdoc +Método object. +@name WMarkDown.Multimedia.go +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 9ed4a3b7ef9f9e13face372ba5945fd1 +#element - optional Parámetro element +#event - optional Parámetro event +#return - - Retorno. +]] + +[[html_data { + "title" : "WMarkDown.Multimedia.ecma.js - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/Public/ecma/WMarkDown.Multimedia.ecma.js.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,multimedia,ecma", + "description" : "WMarkDown.Multimedia.ecma.js del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/Public/ecma/WMarkDown.WMonitor.ecma.js.w.md b/WMD/dev/Public/ecma/WMarkDown.WMonitor.ecma.js.w.md new file mode 100755 index 0000000..2ed51a0 --- /dev/null +++ b/WMD/dev/Public/ecma/WMarkDown.WMonitor.ecma.js.w.md @@ -0,0 +1,107 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.WMonitor.ecma.js + +```txt +/Public/ecma/WMarkDown.WMonitor.ecma.js +``` + +## [[plain WMarkDown.WMonitor.construct]] + +[[wdoc +Método object. +@name WMarkDown.WMonitor.construct +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash e5a6f191432eb8ff69dcdcb69daa6876 +]] + +## [[plain WMarkDown.WMonitor.start]] + +[[wdoc +Método object. +@name WMarkDown.WMonitor.start +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash badb31d9c5cdd37cdb7ccfe09efce054 +]] + +## [[plain WMarkDown.WMonitor.build]] + +[[wdoc +Método object. +@name WMarkDown.WMonitor.build +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 546fea56bb007349b9f83f9ef154c5ec +]] + +## [[plain WMarkDown.WMonitor.set_like]] + +[[wdoc +Método object. +@name WMarkDown.WMonitor.set_like +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash bd7b14e6b6f897c69fbdcf465a6949f7 +#item - optional Parámetro item +#event - optional Parámetro event +]] + +## [[plain WMarkDown.WMonitor.set_dislike]] + +[[wdoc +Método object. +@name WMarkDown.WMonitor.set_dislike +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 321a1dbe2c2369add52a0d38dcbcb6b2 +#item - optional Parámetro item +#event - optional Parámetro event +]] + +## [[plain WMarkDown.WMonitor.view_comments]] + +[[wdoc +Método object. +@name WMarkDown.WMonitor.view_comments +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 3b4c38986d3b25f808e5e3a34345508a +#item - optional Parámetro item +#event - optional Parámetro event +]] + +[[html_data { + "title" : "WMarkDown.WMonitor.ecma.js - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/Public/ecma/WMarkDown.WMonitor.ecma.js.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,W,monitor,ecma", + "description" : "WMarkDown.WMonitor.ecma.js del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/Public/ecma/WMarkDown.ecma.js.w.md b/WMD/dev/Public/ecma/WMarkDown.ecma.js.w.md new file mode 100755 index 0000000..4ef878c --- /dev/null +++ b/WMD/dev/Public/ecma/WMarkDown.ecma.js.w.md @@ -0,0 +1,677 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# WMarkDown.ecma.js + +```txt +/Public/ecma/WMarkDown.ecma.js +``` + +## [[plain WMarkDown.null_or_undefined]] + +[[wdoc +Método object. +@name WMarkDown.null_or_undefined +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 719d9b7663b42ce8e70a4b651eb27d92 +#value - optional Parámetro value +#return - - Retorno. +]] + +## [[plain WMarkDown.settings_priority]] + +[[wdoc +Método object. +@name WMarkDown.settings_priority +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 5f1cb4e5159145f28dc6b9176b2c2ef4 +#inputs - optional Parámetro inputs +#return - - Retorno. +]] + +## [[plain WMarkDown.settings_get]] + +[[wdoc +Método object. +@name WMarkDown.settings_get +@see WMarkDown.settings_get +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash fe0a7d362aaeef0b12064ba82d808ce1 +#name - optional Parámetro name +#nulls - optional Parámetro nulls +#return - - Retorno. +]] + +## [[plain WMarkDown.default_value]] + +[[wdoc +Método object. +@name WMarkDown.default_value +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220329 +@access public +@hash 203537f60a2642724eeb3056fb32ada8 +#_default - optional Parámetro _default +#nulls - optional Parámetro nulls +#return - - Retorno. +]] + +## [[plain WMarkDown.settings]] + +[[wdoc +Método object. +@name WMarkDown.settings +@see WMarkDown.default_value +@see WMarkDown.settings +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220329 +@access public +@hash ce4b1849bd16337efcf307777cfe8ab5 +#names - optional Parámetro names +#inputs - optional Parámetro inputs +#_default - optional Parámetro _default +#nulls - optional Parámetro nulls +#return - - Retorno. +]] + +## [[plain WMarkDown.threads_function]] + +[[wdoc +Método object. +@name WMarkDown.threads_function +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220402 +@access private +@hash fa1425dcfd7cec563a43fc5a7ea55c99 +#return - - Retorno. +]] + +## [[plain WMarkDown.threads_add]] + +[[wdoc +Método object. +@name WMarkDown.threads_add +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash b365c2a5f45eb543ed5b15de52f04648 +#method - optional Parámetro method +#return - - Retorno. +]] + +## [[plain WMarkDown.threads_remove]] + +[[wdoc +Método object. +@name WMarkDown.threads_remove +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220329 +@access public +@hash e005119bc808e1eefdbfec228fac6441 +#i - optional Parámetro i +#return - - Retorno. +]] + +## [[plain WMarkDown.threads_start]] + +[[wdoc +Método object. +@name WMarkDown.threads_start +@see WMarkDown.settings +@see WMarkDown.threads_function +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220329 +@access public +@hash 816ee190018372985bf43d483170f2b9 +#frames_per_second - optional Parámetro frames_per_second +#return - - Retorno. +]] + +## [[plain WMarkDown.threads_stop]] + +[[wdoc +Método object. +@name WMarkDown.threads_stop +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash c1b6d79c278d28a090faf96255fa0c34 +]] + +## [[plain WMarkDown.is_dom_item]] + +[[wdoc +Método object. +@name WMarkDown.is_dom_item +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash d74ca80e1e1c93a10c0f602e0763d8d4 +#item - optional Parámetro item +#return - - Retorno. +]] + +## [[plain WMarkDown.preload]] + +[[wdoc +Método object. +@name WMarkDown.preload +@see WMarkDown.is_dom_item +@see WMarkDown.settings +@see WMarkDown.threads_add +@see WMarkDown.threads_remove +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220329 +@access public +@hash 8b2279c54e645f3a338a8fa813db2df0 +#selector - optional Parámetro selector +#callback - optional Parámetro callback +]] + +## [[plain WMarkDown.screen_size_change]] + +[[wdoc +Método object. +@name WMarkDown.screen_size_change +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash 4497c42635c8170e38a2515395520694 +]] + +## [[plain WMarkDown.preload_wmarkdown]] + +[[wdoc +Método object. +@name WMarkDown.preload_wmarkdown +@see WMarkDown.preload +@see WMarkDown.settings +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220329 +@access public +@hash d833f77ac9317d5ff47191eb66c181f8 +#callback - optional Parámetro callback +]] + +## [[plain WMarkDown.start]] + +[[wdoc +Método object. +@name WMarkDown.start +@see WMarkDown.threads_start +@see WMarkDown.settings +@see WMarkDown.preload_wmarkdown +@see WMarkDown.querySelector +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220402 +@access public +@hash 6fdeca7c7e3bb413d320c55f0bcbd5a5 +]] + +## [[plain WMarkDown.construct]] + +[[wdoc +Método object. +@name WMarkDown.construct +@see WMarkDown.settings +@see WMarkDown.start +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220329 +@access private +@hash 23f2e46e44efbd6ac2d11fbc2f56da2e +]] + +## [[plain WMarkDown.get_menu]] + +[[wdoc +Método object. +@name WMarkDown.get_menu +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 57030174df482ca026e2c315f62ef397 +#menu - optional Parámetro menu +#return - - Retorno. +]] + +## [[plain WMarkDown.show_menu]] + +[[wdoc +Método object. +@name WMarkDown.show_menu +@see WMarkDown.show_menu +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220402 +@access public +@hash 7425c1d3f4ed9439b357d193c8d6249e +#element - optional Parámetro element +#event - optional Parámetro event +#return - - Retorno. +]] + +## [[plain WMarkDown.hide_menu]] + +[[wdoc +Método object. +@name WMarkDown.hide_menu +@see WMarkDown.show_menu +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 89853a01ea140deee1f4afa4796c23f7 +#element - optional Parámetro element +#event - optional Parámetro event +#return - - Retorno. +]] + +## [[plain WMarkDown.block_code_scroll]] + +[[wdoc +Método object. +@name WMarkDown.block_code_scroll +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash e15d01e7ae6e66e51b094400f9917559 +#element - optional Parámetro element +#event - optional Parámetro event +#return - - Retorno. +]] + +## [[plain WMarkDown.deploy]] + +[[wdoc +Método object. +@name WMarkDown.deploy +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 126d7df46c0cedd81f22315ae7bd7ae1 +#element - optional Parámetro element +#event - optional Parámetro event +#deployed - optional Parámetro deployed +]] + +## [[plain WMarkDown.hash]] + +[[wdoc +Método object. +@name WMarkDown.hash +@see WMarkDown.settings +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 3afc8b6e84550facf2f18f1c5328bf13 +#return - - Retorno. +]] + +## [[plain WMarkDown.utf8_encode]] + +[[wdoc +Método object. +@name WMarkDown.utf8_encode +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 790e30a79a4ef7bfff15c81f39b47e8e +#string - optional Parámetro string +#return - - Retorno. +]] + +## [[plain WMarkDown.utf8_decode]] + +[[wdoc +Método object. +@name WMarkDown.utf8_decode +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash e8caada331645e3625625b921d19833f +#string - optional Parámetro string +#return - - Retorno. +]] + +## [[plain WMarkDown.load_file]] + +[[wdoc +Método object. +@name WMarkDown.load_file +@see WMarkDown.settings +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220329 +@access public +@hash ec66239af05893016982925090595d06 +#url - optional Parámetro url +#callback - optional Parámetro callback +#return - - Retorno. +]] + +## [[plain WMarkDown.send]] + +[[wdoc +Método object. +@name WMarkDown.send +@see WMarkDown.settings +@see WMarkDown.send +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20220329 +@access public +@hash 6721d3e91f06e705d34d25e0616932cb +#variables - optional Parámetro variables +#callback - optional Parámetro callback +]] + +## [[plain WMarkDown.get_mime]] + +[[wdoc +Método object. +@name WMarkDown.get_mime +@see WMarkDown.settings +@see WMarkDown.load_file +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 299794b149b91b1df2b84aabe2ad429f +#path - optional Parámetro path +#callback - optional Parámetro callback +]] + +## [[plain WMarkDown.get_extensions]] + +[[wdoc +Método object. +@name WMarkDown.get_extensions +@see WMarkDown.settings +@see WMarkDown.load_file +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash a3542ee707ed11865be5e9d44649d1b2 +#mime - optional Parámetro mime +#callback - optional Parámetro callback +]] + +## [[plain WMarkDown.is_mobile]] + +[[wdoc +Método object. +@name WMarkDown.is_mobile +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 45f68c710c885ae6d3bb7da1fba67929 +#return - - Retorno. +]] + +## [[plain WMarkDown.multiplier_mouse_down]] + +[[wdoc +Método object. +@name WMarkDown.multiplier_mouse_down +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash cfb1aaa0fd2dd1f3ba80a813da93b60e +#item - optional Parámetro item +#event - optional Parámetro event +#return - - Retorno. +]] + +## [[plain WMarkDown.multiplier_mouse_up]] + +[[wdoc +Método object. +@name WMarkDown.multiplier_mouse_up +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash b62caabe9881695439f2b67cadc6ed35 +#item - optional Parámetro item +#event - optional Parámetro event +#return - - Retorno. +]] + +## [[plain WMarkDown.multiplier_delimiter]] + +[[wdoc +Método object. +@name WMarkDown.multiplier_delimiter +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash f2cf256d238594bd42bc752c4b91b9ed +#position - optional Parámetro position +#total - optional Parámetro total +#return - - Retorno. +]] + +## [[plain WMarkDown.multiplier_resize]] + +[[wdoc +Método object. +@name WMarkDown.multiplier_resize +@see WMarkDown.settings +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access private +@hash 2179f4812d8ba42a708383b07bacaca5 +]] + +## [[plain WMarkDown.multiplier_change]] + +[[wdoc +Método object. +@name WMarkDown.multiplier_change +@see WMarkDown.settings +@see WMarkDown.multiplier_delimiter +@see WMarkDown.multiplier_resize +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 9c1a7bf584ec99a2341272915ebf4499 +#item - optional Parámetro item +#event - optional Parámetro event +]] + +## [[plain WMarkDown.multiplier_less]] + +[[wdoc +Método object. +@name WMarkDown.multiplier_less +@see WMarkDown.multiplier_delimiter +@see WMarkDown.multiplier_resize +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 48abf0b5bd77a1ebb236fb742bf4b5da +#item - optional Parámetro item +#event - optional Parámetro event +]] + +## [[plain WMarkDown.multiplier_more]] + +[[wdoc +Método object. +@name WMarkDown.multiplier_more +@see WMarkDown.multiplier_delimiter +@see WMarkDown.multiplier_resize +@lang ECMAScript +@author KyMAN +@since 20211220 +@version 20211220 +@access public +@hash 79219078cbf718e3068a42bf0adcbdd5 +#item - optional Parámetro item +#event - optional Parámetro event +]] + +## [[plain WMarkDown.button]] + +[[wdoc +Método object. +@name WMarkDown.button +@lang ECMAScript +@author KyMAN +@since 20220329 +@version 20220329 +@access public +@hash 755f92f116770ef86552e81f3a9de277 +#name - optional Parámetro name +#action - optional Parámetro action +#default_text - optional Parámetro default_text +#return - - Retorno. +]] + +## [[plain WMarkDown.view_show]] + +[[wdoc +Método object. +@name WMarkDown.view_show +@lang ECMAScript +@author KyMAN +@since 20220329 +@version 20220329 +@access public +@hash d737f64cfb700f0c6caad5ee990f52ed +#item - optional Parámetro item +#event - optional Parámetro event +#key - optional Parámetro key +#return - - Retorno. +]] + +## [[plain WMarkDown.go_to_item]] + +[[wdoc +Método object. +@name WMarkDown.go_to_item +@lang ECMAScript +@author KyMAN +@since 20220329 +@version 20220329 +@access public +@hash d65689190a1a07e31be6aaec4ea10f48 +#item - optional Parámetro item +#event - optional Parámetro event +#return - - Retorno. +]] + +## [[plain WMarkDown.on_ready]] + +[[wdoc +Método object. +@name WMarkDown.on_ready +@lang ECMAScript +@author KyMAN +@since 20220329 +@version 20220329 +@access public +@hash 7bea42a3fb6c9579ab6b92bf32fb82f3 +#callback - optional Parámetro callback +#return - - Retorno. +]] + +## [[plain WMarkDown.remove_on_ready]] + +[[wdoc +Método object. +@name WMarkDown.remove_on_ready +@lang ECMAScript +@author KyMAN +@since 20220329 +@version 20220329 +@access public +@hash e005119bc808e1eefdbfec228fac6441 +#i - optional Parámetro i +#return - - Retorno. +]] + +[[html_data { + "title" : "WMarkDown.ecma.js - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/Public/ecma/WMarkDown.ecma.js.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,cma", + "description" : "WMarkDown.ecma.js del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] \ No newline at end of file diff --git a/WMD/dev/Public/git_update.php.w.md b/WMD/dev/Public/git_update.php.w.md new file mode 100755 index 0000000..dcb758a --- /dev/null +++ b/WMD/dev/Public/git_update.php.w.md @@ -0,0 +1,23 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# git_update.php + +```txt +/Public/git_update.php +``` + +[[html_data { + "title" : "git_update.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/Public/git_update.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,main", + "description" : "git_update.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/dev/Public/update.php.w.md b/WMD/dev/Public/update.php.w.md new file mode 100755 index 0000000..7c3eb85 --- /dev/null +++ b/WMD/dev/Public/update.php.w.md @@ -0,0 +1,23 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# update.php + +```txt +/Public/update.php +``` + +[[html_data { + "title" : "update.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/Public/update.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,main", + "description" : "update.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/dev/Public/wmd.php.w.md b/WMD/dev/Public/wmd.php.w.md new file mode 100755 index 0000000..df8d382 --- /dev/null +++ b/WMD/dev/Public/wmd.php.w.md @@ -0,0 +1,23 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# wmd.php + +```txt +/Public/wmd.php +``` + +[[html_data { + "title" : "wmd.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/Public/wmd.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,main", + "description" : "wmd.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/dev/Public/wmd_scripts.php.w.md b/WMD/dev/Public/wmd_scripts.php.w.md new file mode 100755 index 0000000..ae9a0fa --- /dev/null +++ b/WMD/dev/Public/wmd_scripts.php.w.md @@ -0,0 +1,23 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211220, + "version" : 20211220 +}]] +# wmd_scripts.php + +```txt +/Public/wmd_scripts.php +``` + +[[html_data { + "title" : "wmd_scripts.php - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/Public/wmd_scripts.php.html", + "author" : "Tarsier,KyMAN", + "since" : 20211220, + "version" : 20211220, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,main", + "description" : "wmd_scripts.php del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/dev/SQLite/index.w.md b/WMD/dev/SQLite/index.w.md new file mode 100755 index 0000000..8286d51 --- /dev/null +++ b/WMD/dev/SQLite/index.w.md @@ -0,0 +1,33 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20220402, + "version" : 20220402 +}]] +# SQLite + +[[header_level 0]] +[[include /WMD/dev/SQL/KMarkDown.01.remover.lite.sql.w.md]] + +[[header_level 0]] +[[include /WMD/dev/SQL/KMarkDown.02.generator.lite.sql.w.md]] + +[[header_level 0]] +[[include /WMD/dev/SQL/KMarkDown.03.views.lite.sql.w.md]] + +[[header_level 0]] +[[include /WMD/dev/SQL/KMarkDown.04.default_data.lite.sql.w.md]] + + + +[[html_data { + "title" : "SQLite - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/dev/SQLite/index.html", + "author" : "Tarsier,KyMAN", + "since" : 20220402, + "version" : 20220402, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,sqlite", + "description" : "Parte SQLite del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/dev/index.w.md b/WMD/dev/index.w.md new file mode 100755 index 0000000..954959c --- /dev/null +++ b/WMD/dev/index.w.md @@ -0,0 +1,274 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20220402, + "version" : 20220402 +}]] + +# PHP + +- [/dev/PHP#WMarkDown-Abstracts-Modules-php-2 /PHP/Abstracts/WMarkDown.Abstracts.Modules.php] + - [/dev/PHP#WMarkDown-Abstracts-Modules-construct-2 WMarkDown\\Abstracts\\Modules->\_\_construct] + - [/dev/PHP#WMarkDown-Abstracts-Modules-reset-2 WMarkDown\\Abstracts\\Modules->reset] + - [/dev/PHP#WMarkDown-Abstracts-Modules-set-position-2 WMarkDown\\Abstracts\\Modules->set\_position] + - [/dev/PHP#WMarkDown-Abstracts-Modules-get-position-2 WMarkDown\\Abstracts\\Modules->get\_position] + - [/dev/PHP#WMarkDown-Abstracts-Modules-has-more-2 WMarkDown\\Abstracts\\Modules->has\_more] + - [/dev/PHP#WMarkDown-Abstracts-Modules-get-from-2 WMarkDown\\Abstracts\\Modules->get\_from] + - [/dev/PHP#WMarkDown-Abstracts-Modules-get-length-2 WMarkDown\\Abstracts\\Modules->get\_length] + - [/dev/PHP#WMarkDown-Abstracts-Modules-get-to-2 WMarkDown\\Abstracts\\Modules->get\_to] + - [/dev/PHP#WMarkDown-Abstracts-Modules-get-content-2 WMarkDown\\Abstracts\\Modules->get\_content] + - [/dev/PHP#WMarkDown-Abstracts-Modules-get-html-2 WMarkDown\\Abstracts\\Modules->get\_html] +- [/dev/PHP#WMarkDown-Abstracts-ScriptsAnalyzer-php-2 /PHP/Abstracts/WMarkDown.Abstracts.ScriptsAnalyzer.php] + - [/dev/PHP#WMarkDown-Abstracts-ScriptsAnalyzer-construct-2 WMarkDown\\Abstracts\\ScriptsAnalyzer->\_\_construct] + - [/dev/PHP#WMarkDown-Abstracts-ScriptsAnalyzer-get-data-2 WMarkDown\\Abstracts\\ScriptsAnalyzer->get\_data] +- [/dev/PHP#WMarkDown-PDO-SQLite-php-2 /PHP/Drivers/WMarkDown.PDO.SQLite.php] + - [/dev/PHP#WMarkDown-PDO-SQLite-close-2 WMarkDown\\PDO\\SQLite->close] + - [/dev/PHP#WMarkDown-PDO-SQLite-connect-2 WMarkDown\\PDO\\SQLite->connect] + - [/dev/PHP#WMarkDown-PDO-SQLite-construct-2 WMarkDown\\PDO\\SQLite->\_\_construct] + - [/dev/PHP#WMarkDown-PDO-SQLite-destruct-2 WMarkDown\\PDO\\SQLite->\_\_destruct] + - [/dev/PHP#WMarkDown-PDO-SQLite-query-variables-2 WMarkDown\\PDO\\SQLite::query\_variables] + - [/dev/PHP#WMarkDown-PDO-SQLite-query-2 WMarkDown\\PDO\\SQLite->query] +- [/dev/PHP#WMarkDown-Interfaces-Modules-php-2 /PHP/Interfaces/WMarkDown.Interfaces.Modules.php] + - [/dev/PHP#WMarkDown-Interfaces-Modules-get-next-position-2 WMarkDown\\Interfaces\\Modules->get\_next\_position] +- [/dev/PHP#WMarkDown-Interfaces-ScriptsAnalyzer-php-2 /PHP/Interfaces/WMarkDown.Interfaces.ScriptsAnalyzer.php] + - [/dev/PHP#WMarkDown-Interfaces-ScriptsAnalyzer-analyze-2 WMarkDown\\Interfaces\\ScriptsAnalyzer->analyze] +- [/dev/PHP#WMarkDown-Modules-Checks-php-2 /PHP/Modules/WMarkDown.Modules.Checks.php] + - [/dev/PHP#WMarkDown-Modules-Checks-get-next-position-2 WMarkDown\\Modules\\Checks->get\_next\_position] + - [/dev/PHP#WMarkDown-Modules-Checks-process-2 WMarkDown\\Modules\\Checks->process] +- [/dev/PHP#WMarkDown-Modules-CodeBlocks-php-2 /PHP/Modules/WMarkDown.Modules.CodeBlocks.php] + - [/dev/PHP#WMarkDown-Modules-CodeBlocks-get-next-position-2 WMarkDown\\Modules\\CodeBlocks->get\_next\_position] + - [/dev/PHP#WMarkDown-Modules-CodeBlocks-process-2 WMarkDown\\Modules\\CodeBlocks->process] +- [/dev/PHP#WMarkDown-Modules-CustomParameters-php-2 /PHP/Modules/WMarkDown.Modules.CustomParameters.php] + - [/dev/PHP#WMarkDown-Modules-CustomParameters-get-next-position-2 WMarkDown\\Modules\\CustomParameters->get\_next\_position] + - [/dev/PHP#WMarkDown-Modules-CustomParameters-process-2 WMarkDown\\Modules\\CustomParameters->process] + - [/dev/PHP#WMarkDown-Modules-CustomParameters-get-menu-2 WMarkDown\\Modules\\CustomParameters->get\_menu] + - [/dev/PHP#WMarkDown-Modules-CustomParameters-get-title-2 WMarkDown\\Modules\\CustomParameters->get\_title] + - [/dev/PHP#WMarkDown-Modules-CustomParameters-get-order-2 WMarkDown\\Modules\\CustomParameters->get\_order] +- [/dev/PHP#WMarkDown-Modules-Escapes-php-2 /PHP/Modules/WMarkDown.Modules.Escapes.php] + - [/dev/PHP#WMarkDown-Modules-Escapes-get-next-position-2 WMarkDown\\Modules\\Escapes->get\_next\_position] + - [/dev/PHP#WMarkDown-Modules-Escapes-process-2 WMarkDown\\Modules\\Escapes->process] +- [/dev/PHP#WMarkDown-Modules-FontFormats-php-2 /PHP/Modules/WMarkDown.Modules.FontFormats.php] + - [/dev/PHP#WMarkDown-Modules-FontFormats-get-next-position-2 WMarkDown\\Modules\\FontFormats->get\_next\_position] + - [/dev/PHP#WMarkDown-Modules-FontFormats-process-2 WMarkDown\\Modules\\FontFormats->process] +- [/dev/PHP#WMarkDown-Modules-Headers-php-2 /PHP/Modules/WMarkDown.Modules.Headers.php] + - [/dev/PHP#WMarkDown-Modules-Headers-id-2 WMarkDown\\Modules\\Headers::id] + - [/dev/PHP#WMarkDown-Modules-Headers-get-next-position-2 WMarkDown\\Modules\\Headers->get\_next\_position] + - [/dev/PHP#WMarkDown-Modules-Headers-process-2 WMarkDown\\Modules\\Headers->process] + - [/dev/PHP#WMarkDown-Modules-Headers-get-id-2 WMarkDown\\Modules\\Headers->get\_id] + - [/dev/PHP#WMarkDown-Modules-Headers-get-level-2 WMarkDown\\Modules\\Headers->get\_level] +- [/dev/PHP#WMarkDown-Modules-Includes-php-2 /PHP/Modules/WMarkDown.Modules.Includes.php] + - [/dev/PHP#WMarkDown-Modules-Includes-get-next-position-2 WMarkDown\\Modules\\Includes->get\_next\_position] + - [/dev/PHP#WMarkDown-Modules-Includes-process-2 WMarkDown\\Modules\\Includes->process] + - [/dev/PHP#WMarkDown-Modules-Includes-get-menu-2 WMarkDown\\Modules\\Includes->get\_menu] + - [/dev/PHP#WMarkDown-Modules-Includes-get-title-2 WMarkDown\\Modules\\Includes->get\_title] +- [/dev/PHP#WMarkDown-Modules-Links-php-2 /PHP/Modules/WMarkDown.Modules.Links.php] + - [/dev/PHP#WMarkDown-Modules-Links-get-next-position-2 WMarkDown\\Modules\\Links->get\_next\_position] + - [/dev/PHP#WMarkDown-Modules-Links-process-2 WMarkDown\\Modules\\Links->process] +- [/dev/PHP#WMarkDown-Modules-Lists-php-2 /PHP/Modules/WMarkDown.Modules.Lists.php] + - [/dev/PHP#WMarkDown-Modules-Lists-close-2 WMarkDown\\Modules\\Lists::close] + - [/dev/PHP#WMarkDown-Modules-Lists-open-2 WMarkDown\\Modules\\Lists::open] + - [/dev/PHP#WMarkDown-Modules-Lists-get-next-position-2 WMarkDown\\Modules\\Lists->get\_next\_position] + - [/dev/PHP#WMarkDown-Modules-Lists-process-2 WMarkDown\\Modules\\Lists->process] +- [/dev/PHP#WMarkDown-Modules-Multimedia-php-2 /PHP/Modules/WMarkDown.Modules.Multimedia.php] + - [/dev/PHP#WMarkDown-Modules-Multimedia-get-next-position-2 WMarkDown\\Modules\\Multimedia->get\_next\_position] + - [/dev/PHP#WMarkDown-Modules-Multimedia-multimedia-box-2 WMarkDown\\Modules\\Multimedia::multimedia\_box] + - [/dev/PHP#WMarkDown-Modules-Multimedia-image-2 WMarkDown\\Modules\\Multimedia->image] + - [/dev/PHP#WMarkDown-Modules-Multimedia-images-2 WMarkDown\\Modules\\Multimedia->images] + - [/dev/PHP#WMarkDown-Modules-Multimedia-video-2 WMarkDown\\Modules\\Multimedia->video] + - [/dev/PHP#WMarkDown-Modules-Multimedia-videos-2 WMarkDown\\Modules\\Multimedia->videos] + - [/dev/PHP#WMarkDown-Modules-Multimedia-audio-poster-2 WMarkDown\\Modules\\Multimedia->audio\_poster] + - [/dev/PHP#WMarkDown-Modules-Multimedia-audio-2 WMarkDown\\Modules\\Multimedia->audio] + - [/dev/PHP#WMarkDown-Modules-Multimedia-audios-2 WMarkDown\\Modules\\Multimedia->audios] + - [/dev/PHP#WMarkDown-Modules-Multimedia-check-2 WMarkDown\\Modules\\Multimedia::check] + - [/dev/PHP#WMarkDown-Modules-Multimedia-embed-2 WMarkDown\\Modules\\Multimedia->embed] + - [/dev/PHP#WMarkDown-Modules-Multimedia-process-2 WMarkDown\\Modules\\Multimedia->process] +- [/dev/PHP#WMarkDown-Modules-Paragraphs-php-2 /PHP/Modules/WMarkDown.Modules.Paragraphs.php] + - [/dev/PHP#WMarkDown-Modules-Paragraphs-get-next-position-2 WMarkDown\\Modules\\Paragraphs->get\_next\_position] + - [/dev/PHP#WMarkDown-Modules-Paragraphs-process-2 WMarkDown\\Modules\\Paragraphs->process] +- [/dev/PHP#WMarkDown-Modules-Quotes-php-2 /PHP/Modules/WMarkDown.Modules.Quotes.php] + - [/dev/PHP#WMarkDown-Modules-Quotes-get-next-position-2 WMarkDown\\Modules\\Quotes->get\_next\_position] + - [/dev/PHP#WMarkDown-Modules-Quotes-process-2 WMarkDown\\Modules\\Quotes->process] +- [/dev/PHP#WMarkDown-Modules-Tables-php-2 /PHP/Modules/WMarkDown.Modules.Tables.php] + - [/dev/PHP#WMarkDown-Modules-Tables-get-next-position-2 WMarkDown\\Modules\\Tables->get\_next\_position] + - [/dev/PHP#WMarkDown-Modules-Tables-process-2 WMarkDown\\Modules\\Tables->process] +- [/dev/PHP#WMarkDown-ScriptsAnalyzer-CSharp-php-2 /PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.CSharp.php] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-CSharp-get-parameter-2 WMarkDown\\ScriptsAnalyzer\\CSharp::get\_parameter] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-CSharp-get-parameters-2 WMarkDown\\ScriptsAnalyzer\\CSharp::get\_parameters] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-CSharp-get-body-2 WMarkDown\\ScriptsAnalyzer\\CSharp::get\_body] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-CSharp-analyze-2 WMarkDown\\ScriptsAnalyzer\\CSharp->analyze] +- [/dev/PHP#WMarkDown-ScriptsAnalyzer-JS-php-2 /PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.JS.php] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-JS-get-parameters-2 WMarkDown\\ScriptsAnalyzer\\JS::get\_parameters] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-JS-analyze-2 WMarkDown\\ScriptsAnalyzer\\JS->analyze] +- [/dev/PHP#WMarkDown-ScriptsAnalyzer-PHP-php-2 /PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.PHP.php] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-PHP-analyze-2 WMarkDown\\ScriptsAnalyzer\\PHP->analyze] +- [/dev/PHP#WMarkDown-ScriptsAnalyzer-Python-php-2 /PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.Python.php] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-Python-analyze-2 WMarkDown\\ScriptsAnalyzer\\Python->analyze] +- [/dev/PHP#WMarkDown-ScriptsAnalyzer-SQL-php-2 /PHP/ScriptsAnalyzer/WMarkDown.ScriptsAnalyzer.SQL.php] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-SQL-analyze-2 WMarkDown\\ScriptsAnalyzer\\SQL->analyze] +- [/dev/PHP#WMarkDown-Modules-php-2 /PHP/WMarkDown.Modules.php] + - [/dev/PHP#WMarkDown-Modules-add-2 WMarkDown\\Modules->add] + - [/dev/PHP#WMarkDown-Modules-construct-2 WMarkDown\\Modules->\_\_construct] + - [/dev/PHP#WMarkDown-Modules-create-menu-item-2 WMarkDown\\Modules->create\_menu\_item] + - [/dev/PHP#WMarkDown-Modules-create-file-item-2 WMarkDown\\Modules::create\_file\_item] + - [/dev/PHP#WMarkDown-Modules-prepare-2 WMarkDown\\Modules->prepare] + - [/dev/PHP#WMarkDown-Modules-format-2 WMarkDown\\Modules::format] +- [/dev/PHP#WMarkDown-SQLite-php-2 /PHP/WMarkDown.SQLite.php] + - [/dev/PHP#WMarkDown-SQLite-connect-2 WMarkDown\\SQLite->connect] + - [/dev/PHP#WMarkDown-SQLite-construct-2 WMarkDown\\SQLite->\_\_construct] + - [/dev/PHP#WMarkDown-SQLite-close-2 WMarkDown\\SQLite->close] + - [/dev/PHP#WMarkDown-SQLite-destruct-2 WMarkDown\\SQLite->\_\_destruct] + - [/dev/PHP#WMarkDown-SQLite-is-connected-2 WMarkDown\\SQLite->is\_connected] + - [/dev/PHP#WMarkDown-SQLite-reconnect-2 WMarkDown\\SQLite->reconnect] + - [/dev/PHP#WMarkDown-SQLite-query-2 WMarkDown\\SQLite->query] +- [/dev/PHP#WMarkDown-ScriptsAnalyzer-php-2 /PHP/WMarkDown.ScriptsAnalyzer.php] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-construct-2 WMarkDown\\ScriptsAnalyzer->\_\_construct] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-get-content-2 WMarkDown\\ScriptsAnalyzer::get\_content] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-get-wmd-path-2 WMarkDown\\ScriptsAnalyzer->get\_wmd\_path] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-write-2 WMarkDown\\ScriptsAnalyzer->write] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-get-properties-2 WMarkDown\\ScriptsAnalyzer::get\_properties] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-get-attributes-2 WMarkDown\\ScriptsAnalyzer::get\_attributes] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-set-parameter-2 WMarkDown\\ScriptsAnalyzer::set\_parameter] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-set-return-2 WMarkDown\\ScriptsAnalyzer::set\_return] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-update-wdoc-2 WMarkDown\\ScriptsAnalyzer->update\_wdoc] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-add-method-2 WMarkDown\\ScriptsAnalyzer->add\_method] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-get-commons-2 WMarkDown\\ScriptsAnalyzer->get\_commons] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-analyze-2 WMarkDown\\ScriptsAnalyzer->analyze] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-build-2 WMarkDown\\ScriptsAnalyzer->build] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-write-wmd-2 WMarkDown\\ScriptsAnalyzer->write\_wmd] + - [/dev/PHP#WMarkDown-ScriptsAnalyzer-update-files-2 WMarkDown\\ScriptsAnalyzer->update\_files] +- [/dev/PHP#WMarkDown-Secrets-php-2 /PHP/WMarkDown.Secrets.php] +- [/dev/PHP#WMarkDown-Sessions-php-2 /PHP/WMarkDown.Sessions.php] +- [/dev/PHP#WMarkDown-php-2 /PHP/WMarkDown.php] + - [/dev/PHP#-WMarkDown-get-value-2 \\WMarkDown->get\_value] + - [/dev/PHP#-WMarkDown-default-value-2 \\WMarkDown->default\_value] + - [/dev/PHP#-WMarkDown-is-dictionary-2 \\WMarkDown::is\_dictionary] + - [/dev/PHP#-WMarkDown-settings-2 \\WMarkDown->settings] + - [/dev/PHP#-WMarkDown-string-variables-2 \\WMarkDown::string\_variables] + - [/dev/PHP#-WMarkDown-remove-directory-2 \\WMarkDown::remove\_directory] + - [/dev/PHP#-WMarkDown-remove-current-html-files-2 \\WMarkDown->remove\_current\_html\_files] + - [/dev/PHP#-WMarkDown-save-file-2 \\WMarkDown::save\_file] + - [/dev/PHP#-WMarkDown-create-html-files-2 \\WMarkDown->create\_html\_files] + - [/dev/PHP#-WMarkDown-request-2 \\WMarkDown->request] + - [/dev/PHP#-WMarkDown-get-ignore-file-paths-2 \\WMarkDown->get\_ignore\_file\_paths] + - [/dev/PHP#-WMarkDown-construct-2 \\WMarkDown->\_\_construct] + - [/dev/PHP#-WMarkDown-get-root-2 \\WMarkDown->get\_root] + - [/dev/PHP#-WMarkDown-get-wmarkdown-root-2 \\WMarkDown->get\_wmarkdown\_root] + - [/dev/PHP#-WMarkDown-get-hash-2 \\WMarkDown->get\_hash] + - [/dev/PHP#-WMarkDown-load-file-2 \\WMarkDown->load\_file] + - [/dev/PHP#-WMarkDown-get-documentation-path-2 \\WMarkDown->get\_documentation\_path] + - [/dev/PHP#-WMarkDown-get-mime-2 \\WMarkDown->get\_mime] + - [/dev/PHP#-WMarkDown-get-extensions-2 \\WMarkDown->get\_extensions] + - [/dev/PHP#-WMarkDown-string-to-pattern-2 \\WMarkDown::string\_to\_pattern] +- [/dev/PHP#include-php-2 /PHP/include.php] +- [/dev/PHP#git-update-php-2 /Public/git_update.php] +- [/dev/PHP#update-php-2 /Public/update.php] +- [/dev/PHP#wmd-php-2 /Public/wmd.php] +- [/dev/PHP#wmd-scripts-php-2 /Public/wmd_scripts.php] + +# ECMAScript + +- [/dev/ECMAScript#WMarkDown-Dictionary-ecma-js-2 /Public/ecma/WMarkDown.Dictionary.ecma.js] + - [/dev/ECMAScript#WMarkDown-Dictionary-construct-2 WMarkDown.Dictionary.construct] + - [/dev/ECMAScript#WMarkDown-Dictionary-scroll-event-function-2 WMarkDown.Dictionary.scroll\_event\_function] + - [/dev/ECMAScript#WMarkDown-Dictionary-autosearch-2 WMarkDown.Dictionary.autosearch] + - [/dev/ECMAScript#WMarkDown-Dictionary-start-2 WMarkDown.Dictionary.start] + - [/dev/ECMAScript#WMarkDown-Dictionary-process-description-2 WMarkDown.Dictionary.process\_description] + - [/dev/ECMAScript#WMarkDown-Dictionary-mount-2 WMarkDown.Dictionary.mount] + - [/dev/ECMAScript#WMarkDown-Dictionary-load-2 WMarkDown.Dictionary.load] + - [/dev/ECMAScript#WMarkDown-Dictionary-build-2 WMarkDown.Dictionary.build] + - [/dev/ECMAScript#WMarkDown-Dictionary-load-links-2 WMarkDown.Dictionary.load\_links] + - [/dev/ECMAScript#WMarkDown-Dictionary-build-2 WMarkDown.Dictionary.build] + - [/dev/ECMAScript#WMarkDown-Dictionary-show-2 WMarkDown.Dictionary.show] + - [/dev/ECMAScript#WMarkDown-Dictionary-hide-2 WMarkDown.Dictionary.hide] + - [/dev/ECMAScript#WMarkDown-Dictionary-search-2 WMarkDown.Dictionary.search] +- [/dev/ECMAScript#WMarkDown-Dictionary-old-ecma-js-2 /Public/ecma/WMarkDown.Dictionary.old.ecma.js] + - [/dev/ECMAScript#WMarkDown-Dictionary-construct-2 WMarkDown.Dictionary.construct] + - [/dev/ECMAScript#WMarkDown-Dictionary-scroll-event-function-2 WMarkDown.Dictionary.scroll\_event\_function] + - [/dev/ECMAScript#WMarkDown-Dictionary-autosearch-2 WMarkDown.Dictionary.autosearch] + - [/dev/ECMAScript#WMarkDown-Dictionary-start-2 WMarkDown.Dictionary.start] + - [/dev/ECMAScript#WMarkDown-Dictionary-process-description-2 WMarkDown.Dictionary.process\_description] + - [/dev/ECMAScript#WMarkDown-Dictionary-mount-2 WMarkDown.Dictionary.mount] + - [/dev/ECMAScript#WMarkDown-Dictionary-build-2 WMarkDown.Dictionary.build] + - [/dev/ECMAScript#WMarkDown-Dictionary-show-2 WMarkDown.Dictionary.show] + - [/dev/ECMAScript#WMarkDown-Dictionary-hide-2 WMarkDown.Dictionary.hide] + - [/dev/ECMAScript#WMarkDown-Dictionary-search-2 WMarkDown.Dictionary.search] +- [/dev/ECMAScript#WMarkDown-Multimedia-ecma-js-2 /Public/ecma/WMarkDown.Multimedia.ecma.js] + - [/dev/ECMAScript#WMarkDown-Multimedia-construct-2 WMarkDown.Multimedia.construct] + - [/dev/ECMAScript#WMarkDown-Multimedia-error-2 WMarkDown.Multimedia.error] + - [/dev/ECMAScript#WMarkDown-Multimedia-image-try-next-2 WMarkDown.Multimedia.image\_try\_next] + - [/dev/ECMAScript#WMarkDown-Multimedia-video-try-next-2 WMarkDown.Multimedia.video\_try\_next] + - [/dev/ECMAScript#WMarkDown-Multimedia-audio-try-next-2 WMarkDown.Multimedia.audio\_try\_next] + - [/dev/ECMAScript#WMarkDown-Multimedia-embed-try-2 WMarkDown.Multimedia.embed\_try] + - [/dev/ECMAScript#WMarkDown-Multimedia-execute-in-range-2 WMarkDown.Multimedia.execute\_in\_range] + - [/dev/ECMAScript#WMarkDown-Multimedia-on-scroll-2 WMarkDown.Multimedia.on\_scroll] + - [/dev/ECMAScript#WMarkDown-Multimedia-start-2 WMarkDown.Multimedia.start] + - [/dev/ECMAScript#WMarkDown-Multimedia-go-2 WMarkDown.Multimedia.go] +- [/dev/ECMAScript#WMarkDown-WMonitor-ecma-js-2 /Public/ecma/WMarkDown.WMonitor.ecma.js] + - [/dev/ECMAScript#WMarkDown-WMonitor-construct-2 WMarkDown.WMonitor.construct] + - [/dev/ECMAScript#WMarkDown-WMonitor-start-2 WMarkDown.WMonitor.start] + - [/dev/ECMAScript#WMarkDown-WMonitor-build-2 WMarkDown.WMonitor.build] + - [/dev/ECMAScript#WMarkDown-WMonitor-set-like-2 WMarkDown.WMonitor.set\_like] + - [/dev/ECMAScript#WMarkDown-WMonitor-set-dislike-2 WMarkDown.WMonitor.set\_dislike] + - [/dev/ECMAScript#WMarkDown-WMonitor-view-comments-2 WMarkDown.WMonitor.view\_comments] +- [/dev/ECMAScript#WMarkDown-ecma-js-2 /Public/ecma/WMarkDown.ecma.js] + - [/dev/ECMAScript#WMarkDown-null-or-undefined-2 WMarkDown.null\_or\_undefined] + - [/dev/ECMAScript#WMarkDown-settings-priority-2 WMarkDown.settings\_priority] + - [/dev/ECMAScript#WMarkDown-default-value-2 WMarkDown.default\_value] + - [/dev/ECMAScript#WMarkDown-settings-2 WMarkDown.settings] + - [/dev/ECMAScript#WMarkDown-threads-function-2 WMarkDown.threads\_function] + - [/dev/ECMAScript#WMarkDown-threads-add-2 WMarkDown.threads\_add] + - [/dev/ECMAScript#WMarkDown-threads-remove-2 WMarkDown.threads\_remove] + - [/dev/ECMAScript#WMarkDown-threads-start-2 WMarkDown.threads\_start] + - [/dev/ECMAScript#WMarkDown-threads-stop-2 WMarkDown.threads\_stop] + - [/dev/ECMAScript#WMarkDown-is-dom-item-2 WMarkDown.is\_dom\_item] + - [/dev/ECMAScript#WMarkDown-preload-2 WMarkDown.preload] + - [/dev/ECMAScript#WMarkDown-screen-size-change-2 WMarkDown.screen\_size\_change] + - [/dev/ECMAScript#WMarkDown-button-2 WMarkDown.button] + - [/dev/ECMAScript#WMarkDown-preload-wmarkdown-2 WMarkDown.preload\_wmarkdown] + - [/dev/ECMAScript#WMarkDown-start-2 WMarkDown.start] + - [/dev/ECMAScript#WMarkDown-construct-2 WMarkDown.construct] + - [/dev/ECMAScript#WMarkDown-get-menu-2 WMarkDown.get\_menu] + - [/dev/ECMAScript#WMarkDown-show-menu-2 WMarkDown.show\_menu] + - [/dev/ECMAScript#WMarkDown-hide-menu-2 WMarkDown.hide\_menu] + - [/dev/ECMAScript#WMarkDown-show-menu-2 WMarkDown.show\_menu] + - [/dev/ECMAScript#WMarkDown-block-code-scroll-2 WMarkDown.block\_code\_scroll] + - [/dev/ECMAScript#WMarkDown-deploy-2 WMarkDown.deploy] + - [/dev/ECMAScript#WMarkDown-hash-2 WMarkDown.hash] + - [/dev/ECMAScript#WMarkDown-utf8-encode-2 WMarkDown.utf8\_encode] + - [/dev/ECMAScript#WMarkDown-utf8-decode-2 WMarkDown.utf8\_decode] + - [/dev/ECMAScript#WMarkDown-load-file-2 WMarkDown.load\_file] + - [/dev/ECMAScript#WMarkDown-send-2 WMarkDown.send] + - [/dev/ECMAScript#WMarkDown-get-mime-2 WMarkDown.get\_mime] + - [/dev/ECMAScript#WMarkDown-get-extensions-2 WMarkDown.get\_extensions] + - [/dev/ECMAScript#WMarkDown-is-mobile-2 WMarkDown.is\_mobile] + - [/dev/ECMAScript#WMarkDown-multiplier-mouse-down-2 WMarkDown.multiplier\_mouse\_down] + - [/dev/ECMAScript#WMarkDown-multiplier-mouse-up-2 WMarkDown.multiplier\_mouse\_up] + - [/dev/ECMAScript#WMarkDown-multiplier-delimiter-2 WMarkDown.multiplier\_delimiter] + - [/dev/ECMAScript#WMarkDown-multiplier-resize-2 WMarkDown.multiplier\_resize] + - [/dev/ECMAScript#WMarkDown-multiplier-change-2 WMarkDown.multiplier\_change] + - [/dev/ECMAScript#WMarkDown-multiplier-less-2 WMarkDown.multiplier\_less] + - [/dev/ECMAScript#WMarkDown-multiplier-more-2 WMarkDown.multiplier\_more] + - [/dev/ECMAScript#WMarkDown-view-show-2 WMarkDown.view\_show] + - [/dev/ECMAScript#WMarkDown-go-to-item-2 WMarkDown.go\_to\_item] + - [/dev/ECMAScript#WMarkDown-on-ready-2 WMarkDown.on\_ready] + - [/dev/ECMAScript#WMarkDown-remove-on-ready-2 WMarkDown.remove\_on\_ready] + +# SQLite + +- [/dev/SQLite#KMarkDown-01-remover-lite-sql-2 /SQL/KMarkDown.01.remover.lite.sql] +- [/dev/SQLite#KMarkDown-02-generator-lite-sql-2 /SQL/KMarkDown.02.generator.lite.sql] +- [/dev/SQLite#KMarkDown-03-views-lite-sql-2 /SQL/KMarkDown.03.views.lite.sql] +- [/dev/SQLite#KMarkDown-04-default-data-lite-sql-2 /SQL/KMarkDown.04.default_data.lite.sql] + + +[[html_data { + "title" : "Código - WMarkDown", + "url" : "https://wmarkdown.k3y.pw/dev/index.html", + "author" : "Tarsier,KyMAN", + "since" : 20220402, + "version" : 20220402, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación,developt,desarrollo,programación,todo,all", + "description" : "Parte Todo del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/bugs.w.md b/WMD/es/doc/bugs.w.md new file mode 100755 index 0000000..e2c34ce --- /dev/null +++ b/WMD/es/doc/bugs.w.md @@ -0,0 +1,163 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210502, + "version" : 20220402 +}]] +# Bugs + +Aquí se documentarán todos los Bugs encontrados hasta la fecha y se determinará si está arreglado o +no. También pueden salir en los objetivos de los miembros del proyecto. Los Bugs que aparecen solo +serán los reportados o los encontrados por el propio equipo durante el desarrollo, pruebas o +funcionamiento del mismo. + +> La gestión de realización de los Bugs siguer el mismo patrón de los objetivos, donde cada Checkbox +es cada uno de los miembros de Whalers: Tarsier y KyMAN consecutivamente. + +## Hash Alphabet bloqueado por Array + +Si estableces un Array de caracteres en el Hash Alphabet, el método WMarkDown::get\_hash se bloquea. +Con esto también se vio el riesgo que supone permitir cualquier tipo de caracter por lo que para +arreglar esta observación es importante generar un limitador de caracteres que puede partir una vez +cargadas las configuraciones dejando al parámetro "hash\_alphabet" como un parámetro global privado +de la configuración ya gestionado. + +- [ ] [X] Arreglar el bloqueo por Array del "hash_alphabet". +- [ ] [X] Gestionar de forma global los caracteres del "hash_alphabet". + +## Formatos sin escapes + +Cuando queremos poner un guión bajo u otro caracter usado para formatos de línea, éstos son +substituídos, cuando hay un par, por el formato en cuestión. Requieren de un sistema de escape +urgente pues están dañando la sintaxis del texto. + +- [ ] [X] Escapar caracteres de formato y de línea. + +## Bloque de código no reconocido + +Existe un problema a la hora de interpretar un bloque de código, en este caso en el fichero de FAQ, +donde hay dos bloques y toma al primero como párrafo, lo que elimina el formato de los bloques +siguientes. + +- [ ] [X] Arreglar el problema de los bloques de código. + +> El problema estaba en que no seleccionaba el primer bloque, sino el último. + +## Fallo de escape de estilos + +Los escapes de los estilos salen reflejados también en el menú. También fallan los niveles ante la +inclusión de ficheros por herencia del último nivel utilizado. + +- [ ] [X] Corregir en el menú los escapes de los estilos. +- [ ] [X] Corregir niveles heredados. + +> *Parte de los Bugs se ven por la librería del Syntax Highlighter actual.* + +## Fallo última línea CodeBlocks + +A veces desaparece la última línea en los CodeBlocks. + +- [ ] [X] Encontrar y corregir el Bug. + +> El problema residía en el Scroll Hidden del elemento padre del bloque de código en SCSS. + +## Click central imágenes multimedia + +Cuando hacemos Click con el botón central del ratón nos da un error en la página que incluso nos +llega a salir de la vista actual y en ocasiones, no dejando regresar con el Back. + +- [ ] [ ] Arreglar el botón central de los elementos multimedia. + +## Anidación listado numérico + +Hay un Bug en la anidación de listado numérico cuando éste es con más de un caracter Hash, dando +como título dicha línea. Un ejemplo puede ser el siguiente: + +```md +Lista numérica con anidación con Bug: + +# elemento1. +# elemento2. +## Elemento2.1 +## Elemento2.2 +## Elemento2.3 +# elemento3. +# ... +# elementoN. +``` + +En este ejemplo, los elementos anidados en el punto 2 serán títulos dentro de una lista que continúa +el orden numérico como si no estuvieran anidados, sino que pertenecieran al primer nivel de la +lista. + +- [ ] [ ] Arreglar el problema de anidación. + +## wmd.php no tira a la primera + +El archivo "wmd.php" no tira a la primera, es como que requiere de que exista el "html.files.json". + +- [ ] [ ] Arreglar este problema. + +## 2022040200 - Error en el evento automático del logo + +Hay un evento que se genera automáticamente con ECMA que determina si se cargó correctamente el logo +o no. En caso de no haber sido cargado correctamente, éste desaparecerá. El caso es que no funciona. + +[ ] [X] Arreglar el Bug. + +> [[! note NOTA]]: El problema se encontraba en que el evento se generaba una vez se cargaba la +página Web, con el problema consiguiente de que ya pudo haber saltado el evento de carga de la +imagen y por tanto, no afectar realmente al estado del mismo. Para solucionarlo lo que había que +hacer es crear un objeto Image el cual tenga el mismo SRC y aplicarle el evento a éste y los efectos +al original. + +```js + +const 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")); + +``` + +## 20221012 - file_get_contents directory + +Hay un error en la actual línra 229 del fichero /PHP/WMarkDown.php en la cual se +determina que se está intentando hacer una lectura de un directorio como fichero. + +```php +public function load_file($path){ + foreach(["", $this->root, $this->wmarkdown_root] as $root) + if(file_exists($file = $root . $path)) + return file_get_contents($file); + return null; +} +``` + +- [ ] [X] Localizar el problema. +- [ ] [X] Arreglarlo. + +```php +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; +} +``` + +[[html_data { + "title" : "WMarkDown - Bugs", + "url" : "https://wmarkdown.k3y.pw/es/doc/bugs.html", + "author" : "Tarsier, KyMAN", + "since" : 20210511, + "version" : 20220402, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,bugs,errores,fallos", + "description" : "Bugs encontrados en WMarkDown. Descripción y estado de los mismos.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/dictionary.w.md b/WMD/es/doc/dictionary.w.md new file mode 100755 index 0000000..28d2076 --- /dev/null +++ b/WMD/es/doc/dictionary.w.md @@ -0,0 +1,153 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210516, + "version" : 20210519 +}]] +# Diccionario + +[[data_dictionary { + "dictionary" : [{ + "pattern" : "/\\bky ?man\\b/gi", + "result" : "KyMAN", + "description" : [ + "Programador. Trabaja los lenguajes Python, PHP, JavaScript, CSS (CSS y SCSS), SQL ", + "(SQLite, MySQL (MariaDB) y SQL Server)" + ], + "links" : [ + "https://git.k3y.pw/KyMAN/", + "https://git.a3do.net/KyMAN/", + "https://www.youtube.com/channel/UCCAWOt-AxTyAiFWBgyb3X9Q", + "https://github.com/0KyMAN0" + ] + }, { + "pattern" : "/\\btarsi(er)?\\b/gi", + "result" : "Tarsier", + "description" : [ + "Algo de todo." + ], + "links" : [ + "https://git.k3y.pw/Tarsier/" + ] + }, { + "pattern" : "/\\bmark ?down\\b/gi", + "result" : "MarkDown", + "description" : [ + "Simple lenguaje de marcas de texto para documentar. se suele usar en proyectos Git." + ], + "links" : [ + "https://es.wikipedia.org/wiki/Markdown", + "https://markdown.es/" + ] + }, { + "pattern" : "/\\bmedia ?wiki\\b/gi", + "result" : "MediaWiki", + "description" : [ + "CMS PHP muy extendido para gestionar información y documentación con un pequeño ", + "lenguaje de marcas de texto para su procesamiento. Como referencias tendríamos ", + "Wikipedia, HiddenWiki, etc." + ], + "links" : [ + "https://www.mediawiki.org/", + "https://es.wikipedia.org/wiki/MediaWiki" + ] + }, { + "pattern" : ["/\\bwmarkdown\\b/gi", "/\\bwmd\\b/gi"], + "result" : ["WMarkDown", "WMD"], + "description" : [ + "Pequeño sistema para documentación de proyectos que mezcla los lenguajes de marcas ", + "de texto MarkDown y MediaWiki con HTML y texto plano." + ], + "links" : [ + "https://wmarkdown.k3y.pw/", + "https://git.k3y.pw/Whalers/WMarkDown" + ] + }, { + "pattern" : ["/\\blaz(y|ying|yed|ies)?\\b/gi", "/\\blazya?ble\\b/gi"], + "result" : ["Laz$1", "Lazyable"], + "words" : ["Lazy", "Lazying", "Lazyed", "Lazyable"], + "description" : [ + "Sistema que permite la carga de elementos según se acerquen a su visualización, ", + "permitiendo que el código, por lo general, HTML, exista para servicios de indexación ", + "y SEO, pero la información del elemento solo sea cargada cuando el usuario vaya a ", + "visualizarlo. Para SEO suele ayudarse de la etiqueta HTML NOSCRIPT." + ], + "links" : [ + "https://developer.mozilla.org/en-US/docs/Web/Performance/Lazy_loading", + "https://www.w3schools.com/tags/att_img_loading.asp", + "https://web.dev/browser-level-image-lazy-loading/" + ] + }, { + "pattern" : "/\\blatex\\b/gi", + "result" : "LaTeX", + "description" : [ + "Notación matemática para formulación. A partir de una notación de texto dibuja ", + "las fórmulas en formato visual matemático." + ], + "links" : [ + "https://es.wikipedia.org/wiki/LaTeX", + "https://www.latex-project.org/" + ] + }, { + "pattern" : ["/\\bjavascript\\b/gi", "/\\bjs\\b/gi"], + "result" : ["JavaScript", "JS"], + "description" : [ + "Lenguaje basado en el estándar ECMAScript, siendo el más popular. Es usado ", + "comúnmente en navegadores aunque puede estar en otros entornos." + ], + "links" : [ + "https://developer.mozilla.org/es/docs/Web/JavaScript", + "https://es.wikipedia.org/wiki/JavaScript", + "https://desarrolloweb.com/home/javascript", + "https://www.javascript.com/", + "https://lenguajejs.com/" + ] + }, { + "pattern" : "/\\bes?cma ?(s|script)?( ?(\\d+))\\b/gi", + "result" : "ECMAScript $3", + "words" : "ECMAScript", + "description" : [ + "Lenguaje basado en el estándar ECMAScript, siendo el más popular. Es usado ", + "comúnmente en navegadores aunque puede estar en otros entornos." + ], + "links" : [ + "https://developer.mozilla.org/es/docs/Web/JavaScript", + "https://es.wikipedia.org/wiki/JavaScript", + "https://desarrolloweb.com/home/javascript", + "https://www.javascript.com/", + "https://lenguajejs.com/" + ] + }, { + "pattern" : "/\\f(\\. ?)?a(\\. ?)?q\\.?\\b/gi", + "result" : "FAQ", + "description" : [ + "Del inglés Frequency Asked and Questions, Preguntas y Questiones Frecuentes o ", + "simplemente Preguntas Frecuentes." + ], + "links" : [ + "https://es.wikipedia.org/wiki/Preguntas_frecuentes", + "https://www.significados.com/faq/", + "https://www.prestashop.com/es/blog/que-es-faq" + ] + }, { + "pattern" : "/\\brequired\\b/gi", + "result" : "Required", + "description" : "Determina que es obligatorio." + }, { + "pattern" : "/\\boptional\\b/gi", + "result" : "Optional", + "description" : "Determina que es opcional." + }] +}]] + +[[html_data { + "title" : "WMarkDown - Parámetros customizados", + "url" : "https://wmarkdown.k3y.pw/es/doc/modules/dictionary.html", + "author" : "Tarsier, KyMAN", + "since" : 20210516, + "version" : 20210519, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,dictionary", + "description" : "Diccionario de conceptos.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/example.w.md b/WMD/es/doc/example.w.md new file mode 100755 index 0000000..ea9fadc --- /dev/null +++ b/WMD/es/doc/example.w.md @@ -0,0 +1,121 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210502, + "version" : 20210517 +}]] +# Archivo de ejemplos y pruebas + +Este fichero es un fichero contra el cual se harán pruebas y testeos de REs y otros elementos de +importancia para el proyecto, no relevantes para la documentación del mismo. + +- jojo +- jiji +- jaja + - jiji, jaja + - jojo + -juas + jajajaja +- jujuju + +1. jojo +2. jiji +3. juas + # jojo + #jojo + +[https://www.google.com/ Esto] es un link a [Google][https://www.google.com/]. +[Google](https://www.google.com/ Buscador). [https://www.google.com/]. Como texto plano: https://www.google.com/ + +[https://www.google.com/ Buscador]: https://duckduckgo.com/ + +```maths +joj0o jiaJIASJDSA +``` + +```maths +\sqrt{x^2+5n} +``` + +# Ejemplo de imagen + +[[image https://i.ytimg.com/vi/J-YXLy9Lc7Y/maxresdefault.jpg Ejemplo con un único Link.]] + +[[image [ + "https://i.ytimg2.com/vi/J-YXLy9Lc7Y/maxresdefault.jpg", + "https://images-na.ssl-images-amazon.com/images/I/61nwQasys5L._SY355_.jpg", + "https://i.ytimg.com/vi/BeuWg4jdYaY/maxresdefault.jpg" +] Esto es una imagen de prueba.]] + +El siguiente ejemplo es con múltiples imágenes. + +[[images +["https://i.ytimg.com/vi/J-YXLy9Lc7Y/maxresdefault.jpg", "https://images-na.ssl-images-amazon.com/images/I/61nwQasys5L._SY355_.jpg"] Classixx NYC +https://images-na.ssl-images-amazon.com/images/I/61nwQasys5L._SY355_.jpg Classixx, sesión de Youtube. +https://i.ytimg.com/vi/BeuWg4jdYaY/maxresdefault.jpg Classixx mixmag +]] + +# Ejemplo de vídeo + +\[\[video https://www.comunadelaligua.cl/videos/2020/cabras-de-murcia.MOV Esto es un puto vídeo de prueba.]] + +[[video https://www.comunadelaligua.cl/videos/2020/donacion-museo-laligua.mp4 https://www.rammstein.de/app/uploads/2016/11/Waldbu%CC%88hne_analog_Carsten-2.jpeg Otra prueba.]] + +Pruebas con múltiples vídeos. + +\[\[videos +https://www.comunadelaligua.cl/videos/2020/donacion-museo-laligua.mp4 Vídeo A xD +https://www.comunadelaligua.cl/videos/2020/taller-prc-los-molles-2.mp4 Vídeo de 250MB +https://www.comunadelaligua.cl/videos/2020/convenios-carabineros.mp4 Otro de 150MB +]] + +# Ejemplos de audio + +[[audio https://www.nochederock.com/programas/Noche%20de%20Rock%20548%20-%20Rammstein.mp3 https://www.rammstein.de/app/uploads/2016/11/Waldbu%CC%88hne_analog_Carsten-2.jpeg Rammster - Live]] + +[[audios +https://www.nochederock.com/programas/Noche%20de%20Rock%20548%20-%20Rammstein.mp3 https://www.rammstein.de/app/uploads/2016/11/Waldbu%CC%88hne_analog_Carsten-2.jpeg Rammster - Live +https://www.nochederock.com/programas/Noche%20de%20Rock%20548%20-%20Rammstein.mp3 https://www.rammstein.de/app/uploads/2016/11/Waldbu%CC%88hne_analog_Carsten-2.jpeg Rammster - Live +https://www.nochederock.com/programas/Noche%20de%20Rock%20548%20-%20Rammstein.mp3 https://www.rammstein.de/app/uploads/2016/11/Waldbu%CC%88hne_analog_Carsten-2.jpeg Rammster - Live +https://www.nochederock.com/programas/Noche%20de%20Rock%20548%20-%20Rammstein.mp3 Rammster - Live +]] + +# Ejemplos de Embedado + +[[embed https://www.facebook.com/100044151053597/videos/830479191217676]] +[[embed https://www.youtube.com/watch?v=5vgw9F5CZRQ]] +[[embed https://www.twitch.tv/videos/1024759212]] +[[embed https://vimeo.com/61090469]] + +[[embed +https://www.facebook.com/100044151053597/videos/830479191217676 +https://www.youtube.com/watch?v=5vgw9F5CZRQ +https://www.twitch.tv/videos/1024759212 +https://vimeo.com/61090469 +]] + +# Notas + +https://www.xml-sitemaps.com/details-wmarkdown.k3y.pw-eeb5a3a59.html + +Robots.txt => Sitemap: https://recod.rat.la/sitemap.xml + +Google Search Console + +https://search.google.com/search-console/welcome?utm_source=about-page + +Color contraste puntos: + +https://webaim.org/resources/contrastchecker/ + +[[html_data { + "title" : "WMarkDown - Ejemplos", + "url" : "https://wmarkdown.k3y.pw/es/doc/example.html", + "author" : "Tarsier, KyMAN", + "since" : 20210511, + "version" : 20210517, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,example", + "description" : "Ejemplos para verificar el funcionamento de los módulos del WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/faq.w.md b/WMD/es/doc/faq.w.md new file mode 100755 index 0000000..0ef6b15 --- /dev/null +++ b/WMD/es/doc/faq.w.md @@ -0,0 +1,103 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210505, + "version" : 20210511 +}]] +# FAQ (Preguntas frecuentes) + +Ante este proyecto, que aunque no es muy grande, tiene su extensión documental, le pondremos un +apartado de resolución de dudas y preguntas rápidas que vayan surgiendo, el cual es este. Dicho +apartado puede actualizarse sin que se actualice el proyecto en cuestión cuando se consxidere que la +pregunta es muy recurrente o se ve importante. + +## Escape de caracteres + +Al estar en un entorno con un lenguaje de etiquetas donde un caracter puede significar un concepto +entero de formato o de elemento, por lo tanto, sería un caracter no usable a nivel de texto o +resultado final. Para evitar esto existe un sistema que permite escapar dichos caracteres cuando +éstos se tratan de un elemento de línea, es decir, un elemento que pueda estar incluído dentro de +una línea de texto o un párrafo, como puede ser una negrilla o una cursiva. Para realizar dicho +escape hemos de usar el el caracter Slash ("\\", escapándose así "\\\\"). Dicho caracter también +permite escaparse a sí mismo, por lo que si se quiere poner un Slash ha de ponerse doblemente, o en +caso de estar en un IDE o entorno donde el caracter de escape sea Slash también, ha de duplicarse +con el escape correspondiente ("\\\\\\\\"). + +## Listas numéricas y cabeceras + +Cuando hablamos de MarkDown, una cabecera se inicia con el caracter Hash ("#"), sin embargo, cuando +hablamos de listas ordenadas numéricas en MediaWiki, el caracter usado también es el Hash. Para +diferenciar ambos a nivel del texto se establece que una cabecera tiene al menos dos saltos de línea +en su parte inferior, siendo una línea única separada del resto de bloques de texto, mientras que +las listas son de al menos dos elementos y solo hay un salto de línea que separa cada línea, +quedando como un único bloque. Un ejemplo de ello puede ser lo siguiente: + + +```txt + +# Esto es una cabecera + +Esta cabecera se inicia al principio de todo. + +# Esto es otra cabecera + +Esta sería una cabecera que está por el medio del texto. + +## Cabecera de segundo nivel + +Esto sería una cabecera de segundo nivel. + +# Primer elemento. +# Segundo elemento. +# Tercero elemento. +# Cuarto elemento. + +Y esto que hemos puesto es una lista ordenada numérica que empieza en 1 y se incrementará 1 por cada +línea puesta. + +Para evitar confusiones, también se permite el uso del caracter numérico, el cual determina el +inicio de la lista, y para equiparar el ejemplo anterior tendríamos: + +1. Primer elemento. +1. Segundo elemento. +1. Tercero elemento. +1. Cuarto elemento. + +Y esto mismo, siguiendo la esquemática de MarkDown, sería: + +1. Primer elemento. +2. Segundo elemento. +3. Tercero elemento. +4. Cuarto elemento. + +jojo + +``` +## Diferentes opciones para lo mismo + +Se usan diferentes opciones para llegar a un mismo fin para poderlo usar como alternativa o incluso, +como escape de sí mismo, por ejemplo, cuando ingresamos un bloque de código para presentar como se +haría otro bloque de código dentro de WMarkDown usaríamos las distintas formas de llamar a los +bloques de código, una que represente la principal, y la otra que represente la interna. Por +ejemplo: + +"""md +---md +Esto es MarkDown y a continuación pongo un bloque de código. +```js +console.log("Esto es JavaScript."); +``` +--- +""" + +[[html_data { + "title" : "WMarkDown - F.A.Q.", + "url" : "https://wmarkdown.k3y.pw/es/doc/faq.html", + "author" : "Tarsier, KyMAN", + "since" : 20210502, + "version" : 20210511, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,faq,preguntas,frecuentes", + "description" : "Preguntas frecuentes para el uso de WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/gitlab.w.md b/WMD/es/doc/gitlab.w.md new file mode 100755 index 0000000..ba28186 --- /dev/null +++ b/WMD/es/doc/gitlab.w.md @@ -0,0 +1,156 @@ +# GitLab + +GitLab es una plataforma HostSelf para Git, bastante pesada pero con muchas propiedades, utilidades +y funcionalidades. Ésta será la plataforma de trabajo compartido que se usará. + +> El Git sólo se mirará para trabajar desde Linux desde la propia VM que gestiona el proyecto. Si se +hace uso de otro sistema será mejor Googlear y no seguir esta guía. + +## Instalación de GitLab + +En este caso se usó un Debian puro versión 10.9.0 amd64 en Core con 4GB de RAM y 1 Core virtualizado +sobre un i7 4970K con 32GB de RAM Dual Channel 1600 en VirtualBox. Se seleccionaron solo 4GB de RAM +y 1 Core por el hecho de no trabajar, previsiblemente más de 50 personas simultáneamente, preveendo +más o menos unos 10, el resto de usuarios serán visitantes no autenticados. + +La estructura de Red es acceso mediante un Router el cual establece una apertura de puertos mediante +iptables contra una máquina que vincula y balancea la carga con Nginx, y ésta será la encargada de +gestionar las peticiones contra la máquina que contiene el GitLab. + +```mermaid +graph TB +R[Router] --> N[VM Nginx] +G --> N +N --> R +subgraph Servidor +N --> G[VM GitLab] +end +``` + +El primer problema al que nos enfrentamos es que GitLab no será quien recoja la petición de forma +directa, sino que pasará por un Proxy de entrada el cual redirigirá la petición a la máquina de +GitLab. De primeras, ésto no debería de ser un problema pero GitLab posee otro Nginx por detrás que +es el que gestiona las peticiones Web del mismo. La dirección DNS no la pilla de la petición, sino +de la cabecera X-FORWARDED-FOR, que por lo general es la dirección IP de la que parte la petición, +por lo que es necesario implementar, en este caso, una línea en la configuración del sitio Nginx con +la dirección DNS para dicha cabecera. + +> **NOTA**: No vale poner $server-name, en la definición de cabeceras no funciona, lo que nos obliga +a usar una única dirección DNS como sale en el ejemplo siguiente. + +```conf +server { + listen XXXXX; + server_name ~^git\.k3y\.pw$; + location / { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Host git.k3y.pw; + proxy_pass https://XXX.XXX.XXX.XXX$request_uri; + } +} +``` + +Sabiendo esto, simplemente hemos de seguir los pasos de la guía de instalación del GitLab Enterprise +Edition, pero cambiando en todo momento "gitlab-ee" por "gitlab-ce" desde la guía oficial, la cual +dejamos a continuación: + +https://about.gitlab.com/install/#debian + +> En nuestro caso no tenemos instalado "sudo", por lo que hay que adaptar los comandos sobre un +entorno "su". En el caso del CURL para el Script Deb se descargó mediante "wget" y se ejecutó sobre +"su", por ejemplo. + +## Establecer Memoria en el Login + +Lo primero es instalar el Git en nuestro equipo, donde tendríamos las siguientes opciones más +comunes: + + + + + + + + + + + + + + + + + + +
    DebianFedora / Red HatArchWindows 10
    +```sh +apt install git +``` + +```sh +yum install git +``` + +```sh +pacman install git +``` + +```bat +widget install git +``` +
    + +> La instalación por CMD de Windows 10 depende de tener el paquete del repositorio Widget. Además, +no fujncionarán algunos pasos de este manual por falta de comandos así como de recursos, como es el +almacenamiento de Keys. Por ello, desaconsejamos el uso, en la medida de lo posible, de Windows 10 +para dichas tareas, y hacer uso de conexiones SSH para poder gestionarlas desde la unidad Linux +donde se encuentre el proyecto. + +A continuación, independientemente del OS en el que se esté, accedemos al Terminal o Comandos y +escribimos el siguiente comando: + +```sh +git clone https://git.k3y.pw/Whalers/WMarkDown.git +``` + +> No tenemos abierto el puerto SSH ni FTP por seguridad, por lo que la dirección SSH no funcionará. + +Ahora que ya tenemos nuestro repositorio accedemos al directorio del mismo y luego a su directorio +".git" donde hallaremos un fichero llamado "config", el cual requeriremos abrir como si fuera un +fichero de texto. Dentro de éste encontraremos una línea la cual se llama "url" y se encuentra +dentro del bloque '[remove "origin"]', con la URL del repositorio. La copiamos y comentamos una, y +la otra le añadimos nuestro nombre de usuario en el servidor Git tal que así: + +```conf +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true +[remote "origin"] + #url = https://git.k3y.pw/Whalers/WMarkDown.git + url = https://USUARIO@git.k3y.pw/Whalers/WMarkDown.git + fetch = +refs/heads/*:refs/remotes/origin/* +[branch "master"] + remote = origin + merge = refs/heads/master +``` + +Finalmente, establecemos un tiempo de memoria caché para que la contraseña solo nos la pida una vez +cada X tiempo que nosotros decidamos mediante el siguiente comando, teniendo en cuenta que el tiempo +se establece en segundos. + +```sh +git config --global credential.helper "cache --timeout TIEMPO" +``` + +> Los valores de tiempo serían los siguientes: +- TIEMPO = 7200 => 2 horas. +- TIEMPO = 3600 => 1 hora. +- TIEMPO = 84600 => 1 día. + +Sobre todas estas operaciones solo nos pedirá la contraseña una vez hasta pasado el tiempo del +Timeout de la Caché. diff --git a/WMD/es/doc/modules.w.md b/WMD/es/doc/modules.w.md new file mode 100755 index 0000000..039c414 --- /dev/null +++ b/WMD/es/doc/modules.w.md @@ -0,0 +1,64 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210511, + "version" : 20210516 +}]] +# Módulos + +La plataforma se basa en módulos que van formateando el texto que se le pase para ir haciendo un +resultado HTML a partir del texto plano. Un simple párrafo o una cabecera que conforma a su vez el +menú, son módulos integrados y que a su vez pueden ser modificados, añadidos o eliminados. + +## Módulos por defecto + +En este apartado se irán poniendo todos los módulos que han sido incluídos por defecto para dar +lugar a todo el gestor documental. + +[[header_level 2]] +[[include /WMD/es/doc/modules/headers.w.md]] + +[[header_level 2]] +[[include /WMD/es/doc/modules/paragraphs.w.md]] + +[[header_level 2]] +[[include /WMD/es/doc/modules/font_formats.w.md]] + +[[header_level 2]] +[[include /WMD/es/doc/modules/checks.w.md]] + +[[header_level 2]] +[[include /WMD/es/doc/modules/links.w.md]] + +[[header_level 2]] +[[include /WMD/es/doc/modules/code_blocks.w.md]] + +[[header_level 2]] +[[include /WMD/es/doc/modules/custom_parameters.w.md]] + +[[header_level 2]] +[[include /WMD/es/doc/modules/multimedia.w.md]] + +[[header_level 2]] +[[include /WMD/es/doc/modules/quotes.w.md]] + +[[header_level 2]] +[[include /WMD/es/doc/modules/tables.w.md]] + +[[header_level 2]] +[[include /WMD/es/doc/modules/mermaid.w.md]] + +[[header_level 2]] +[[include /WMD/es/doc/modules/maths.w.md]] + +[[html_data { + "title" : "WMarkDown - Módulos", + "url" : "https://wmarkdown.k3y.pw/es/doc/modules.html", + "author" : "Tarsier, KyMAN", + "since" : 20210502, + "version" : 20210516, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,módulos", + "description" : "Módulos básicos de WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/modules/checks.w.md b/WMD/es/doc/modules/checks.w.md new file mode 100755 index 0000000..58124ba --- /dev/null +++ b/WMD/es/doc/modules/checks.w.md @@ -0,0 +1,186 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210511, + "version" : 20210513 +}]] +# Checks, Radios y Ticks + +Como en cualquier sistema documental, ya sea una libreta de apuntes a mano o cualquier otro sistema +digital, es importante contar con un sistema que permita mostrar elementos seleccionados y no +seleccionados, una selección de elemento sobre un grupo, o Targets llevados a cabo, entre otras +opciones de selección. Para ello se usarán los Checks, Radios y Ticks. + +> Aunque tanto los Checks, como los Radios como los Ticks se pueden usar independientemente, a nivel +de HTML o programación, tienen funcionalidades diferentes que visualmente pueden identificar algo +concreto, es por ello que se hace la siguiente distinción. + +MediaWiki no tiene un medio dado para hacer dicha operación salvo el propio HTML; y MarkDown solo +tiene la opción por defecto de hacer Checkboxes únicamente, con solo dos posiciones: activado o no +desactivado. Aquí añadimos un nuevo estado puede puede considerarse un ternario como "estar en +proceso" o que simplemente se ignore del resto de elementos seleccionados. + +Para poder llevar a cabo todas estas distinciones se hace uso de encapsulados de apertura y cierre +con corchetes para los Checks, paréntesis para los Radios y llaves o diamantes para los Ticks. Los +caracteres que identifican el estado serían los siguientes: + +- _"-", "\", "\\", "=", "|", "·" o "?"_: Deshabilitado, en proceso, ignorado. +- _"*", "+", "X", "V", "Y" o "#"_: Seleccionado. +- _" " o "N"_: No seleccionado. + +> El sistema no diferencia mayúsculas de minúsculas, por lo que se pueden usar independientemente. + +> **IMPORTANTE**: El caracter "V" indicará Tick afirmativo siempre, independientemente del +encapsulado. + +## Checks + +Los Checks o Checkbox son iconos que representan si un elemento está seleccionado o no. Es usado en +programación como casilla de selección o para visualizar si los elementos seleccionados, +independientemente del número de elementos, agrupaciones de los mismos, etc. Éstos se identifican +con los caracteres de apertura y cierre de corchete ("\[" y "\]") para encapsular su estado. + + + + + + + + + + + + + + +
    WMarkDownResultado
    + +```md +- [ ] No seleccioando. +- [X] Seleccionado. +- [-] Deshabilitado. +``` + + + +- [ ] No seleccionado. +- [X] Seleccionado. +- [-] Deshabilitado. + +
    + +## Radios + +Los Radios o RadioButtons son iconos que representan una selección única por grupo, aunque en +WMarkDown puede ser usado independientemente a gusto del autor del texto. Dicho elemento se +identifica por la encapsulación de los caracteres de apertura y cierre de paréntesis ("(" y ")"). + + + + + + + + + + + + + + +
    WMarkDownResultado
    + +```md +- ( ) No seleccionado. +- (X) Seleccionado. +- (-) Deshabilitado. +``` + + + +- ( ) No seleccionado. +- (X) Seleccionado. +- (-) Deshabilitado. + +
    + +## Ticks + +Los Ticks son muy comunes cuando se trata de listas donde ir cubriendo objetivos, como una lista de +la compra, donde no existe un recuadro o círculo donde se marcan los elementos. Se identifican +mediante la encapsulación entre los caracteres de apertura y cierre de diamante ("<" y ">") o llaves +("{" o "}"). + +> **IMPORTANTE**: Es importante destacar que los Ticks no tienen la opción de elemento deshabilitado +por suponerse un elemento escrito. + + + + + + + + + + + + + + +
    WMarkDownResultado
    + +```md + +Con diamantes: + +- < > No seleccionado. +- Seleccionado. +- <-> Deshabilitado. + +Con llaves: + +- { } No seleccionado. +- {X} Seleccionado. +- {-} Deshabilitado. + +Uso del caracter V: + +- [V] Seleccionado. +- (V) Seleccionado. +- Seleccionado. + +``` + + + +Con diamantes: + +- < > No seleccionado. +- Seleccionado. +- <-> Deshabilitado. + +Con llaves: + +- { } No seleccionado. +- {X} Seleccionado. +- {-} Deshabilitado. + +Uso del caracter V: + +- [V] Seleccionado. +- (V) Seleccionado. +- Seleccionado. + +
    + +[[html_data { + "title" : "WMarkDown - Bugs", + "url" : "https://wmarkdown.k3y.pw/es/doc/modules/checks.html", + "author" : "Tarsier, KyMAN", + "since" : 20210511, + "version" : 20210511, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,módulo,check,checkbox,radio,radiobutton,tick", + "description" : "Funcionamiento de los elementos de selección.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/modules/code_blocks.w.md b/WMD/es/doc/modules/code_blocks.w.md new file mode 100755 index 0000000..190550b --- /dev/null +++ b/WMD/es/doc/modules/code_blocks.w.md @@ -0,0 +1,127 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210516, + "version" : 20210516 +}]] +# Códigos de bloque + +Los bloques de código o Code Blocks son bloques reservados para código, el cual puede ser visible, como cuando se muestra un fragmento de código para representar un ejemplo o una idea; o para representar algo que es interpretable, como sucede con los diagramas del "mermaid JS". Estos elementos están sujetos a muchos cambios o condiciones por lo que existen multitud de formas de ser llamados, pero todos coinciden en que tengan un inicio y un fin para encapsular el código que se quiere representar. Un par de ejemplos de ambos tipos, tantos de muestreo de código como de interpretación, pueden ser los siguientes: + + + + + + + + + + + + + + + + + + + + + +
    TipoWMarkDownResultado
    Muestreo + +---md +```js +console.log("Muestra este Script JS"); +``` +--- + + + +```js +console.log("Muestra este Script JS"); +``` + +
    Interpretación + +---md +```mermaid +graph LR +A["Elemento A"] --> B["Elemento B"] +``` +--- + + + +```mermaid +graph LR +A["Elemento A"] --> B["Elemento B"] +``` + +
    + +Como podemos ver en estos ejemplos, se mostró un bloque de código de un bloque de código en la columna de WMarkDown, eso se llevó a cabo haciendo uso de dos delimitadores diferentes, haciendo una anidación de bloques con distintos cierres. Un ejemplo de anidamiento para hacer un muestreo de un muestro lo vemos a continuación: + + + + + + + + + + + + + + +
    WMarkDownResultado
    + +'''md +---md +```js +console.log("Muestra este Script JS"); +``` +--- +''' + + + +---md +```js +console.log("Muestra este Script JS"); +``` +--- + +
    + +Estos delimitadores diferentes pueden ser cualquiera de los siguientes: + +-
    ```
    +-
    '''
    +-
    """
    +-
    ---
    + +A éstos les podemos sumar la facultad de poder crear por cada uno, otro nuevo delimitador separando +sus elementos con espacios. + +La existencia de más de un delimitador también viene por el hecho de que los lenguajes de +programación pueden hacer uso de estructuras que puedan solapar este tipo de marcas de texto, como +es el caso de Python con los String UTF8, que impide el uso de los códigos de bloque de triple +comilla doble. + +> **NOTA**: MarkDown tiene un Bug con los bloques de código a la hora de ser usados dentro de celdas +de una tabla. En WMarkDown está corregido y se puede hacer uso de elementos HTML sin ningún +problema. + +[[html_data { + "title" : "WMarkDown - Bloques de código", + "url" : "https://wmarkdown.k3y.pw/es/doc/modules/code_blocks.html", + "author" : "Tarsier, KyMAN", + "since" : 20210516, + "version" : 20210516, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,módulo,bloques,componentes,código", + "description" : "Módulo de bloques de código.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/modules/custom_parameters.w.md b/WMD/es/doc/modules/custom_parameters.w.md new file mode 100755 index 0000000..8323ddb --- /dev/null +++ b/WMD/es/doc/modules/custom_parameters.w.md @@ -0,0 +1,896 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210515, + "version" : 20210519 +}]] +# Parámetros customizados + +Los parámetros customizados son parámetros que se identifican mediante una encapsulación de doble +corchete, siguiendo la idea de encapsulación de parámetros preprogramados de MediaWiki. Dichos +parámetros dan nuevas funcionalidades al entorno del WMarkDown las cuales nombraremos a +continuación. + +> **IMPORTANTE**: Aunque sintácticamente sean iguales, e incluso se consideren Parámetros +Customizados, las inclusiones y los elementos multimedia no están integrados dentro del fichero de +Parámetros Customizados, considerados como otros módulos con la misma sintaxis. Es importante tener +esto en cuenta por el hecho de que han de estar ordenados según prioridad para evitar la solapación +en la configuración. + +## post_data + +El "post_data" es un parámetro que se usa para establecer una información previa de un fichero, +aunque también puede ser para un artículo o fragmento de un artículo, aunque por el resultado lo +aconsejamos únicamente para encabezar un fichero que en sí sea un artículo completo. Básicamente da +la información de los participantes del fichero como autores del mismo, la fecha de creación y la +última fecha de modificación, los cuales se identifican dentro de un JSON con las siguientes llaves +de diccionario: + +- **author**: Autor/es y participantes del artículo o fichero. +- **since**: Fecha de creación. +- **version**: Última fecha de modificación. + +> No se usan las fechas de los metadatos de los ficheros por el hecho de que dependen del OS y éstos +pueden ir condicionados a la creación por descarga al ser un recurso compartido con Git, entre otras +cosas. + +Las fechas tendrán el formato "YYYYMMDD", donde "YYYY" es el año con cuatro dígitos; el "MM" es el +número del mes con 2 dígitos obligatorios; y "DD" que es el día del mes con dos dígitos +oblitagorios. + +En caso de que no se halla especificado el "author", éste se pondrá como desconocido ("Unknown" o el +especificado en la configuración); por otro lado, si no se le especifica el "since" éste será +substituído por la fecha de compilación del HTML; y finalmente, si no se le especifica el "version", +éste será substituído por el "since". + +> Como conclusión, podemos exponer que ningún parámetro es obligatorio. + +Un ejemplo de éste podría ser el siguiente: + +```md +[[post_data { + "author" : "KyMAN", + "since" : 20210511, + "version" : 20210513 +}]] +``` + +Este componente personalizado se suele poner al principio del documento, encima del título que +encabeza el mismo. + +## html_data + +El HTML data es un parámetro que consta de un diccionario JSON que contiene las variables que se le +especifiquen al HTML de compilación donde se integrará la información. Esto permite tener en cada +página HTML generada, su SEO META configurado de forma sencilla y customizada. Dichos parámetros +pueden variar según el HTML utilizado al gusto del desarrollador o usuario que gestione la +documentación o página o páginas Web. + +> Este complemento no tendrá visualización alguna sobre el HTML final. + +Un ejemplo de este componente podría ser el siguiente: + +```md +[[html_data { + "title" : "WMarkDown - Parámetros customizados", + "url" : "https://wmarkdown.k3y.pw/doc/modules/custom_parameters.html", + "author" : "Tarsier, KyMAN", + "since" : 20210515, + "version" : 20210515, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,módulo,parámetros,custom,personalizado,include,inclusión,import,importación", + "description" : "ÇMódulo de parámetros customizados.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png" +}]] +``` + +Dicho componente se suele poner al final del documento, aunque puede ser puesto en cualquier otra +parte del mismo. + +> **IMPORTANTE**: Cualquier llave de parámetro sobreescribirá a los originales, por ejemplo, por +defecto los títulos se conforman con le nombre del proyecto y el texto de la primera cabecera dada +por el fichero. En el ejemplo expuesto, se subsituye el título por el dado específicamente en este +parámetro customizado. + +## include + +El parámetro customizado "include" permite incluír un fichero externo el cual se compilará y se +pondrá al nivel de cabeceras actual si no se le especifica previamente a partir del parámetro +customizado "header_level" (Ver en el siguiente punto). Pueden existir anidamientos de elementos +includos, por lo cual hay que prestar especial atención a aquellos anidamientos que puedan ser +recursivos infinitamente. Un ejemplo de inclusión puede ser el siguiente: + +```md + +Estamos a nivel 0 de cabecera, por tanto, a la siguiente inclusión no se le añadirá ningún nivel a +las cabeceras. + +[[include PATH1]] + +# Nivel 1 + +Estamos en el nivel 1 y a la siguiente inclusión se le añadirá un nivel más a cada cebecera que +contenga. + +[[include PATH2]] + +Ahora estamos en el nivel de la última cabecera que teníamos en el PATH2, y será el nivel que se le +sumará a cada cabecera de la siguiente inclusión. + +[[include PATH3]] + +# Nivel 1 + +Volvimos al nivel 1, por tanto, solo se le sumará un nivel a la siguiente inclusión. + +[[include PATH4]] + +``` + +## header_level + +Este parámetro customizado permite cambiar el nivel de cabeceras con el que se está trabajando, +permitiendo, a partir de dicho punto, cambiar el nivel de las mismas según el valor que se le +establezca. Éste tiene dos formas de establecerse: + +- A partir de un valor numérico entero sin signo, el cual establece al nivel al cual se irá +directamente, siendo 0 el más bajo. +- A partir de un valor numérico entero con signo más para añadir sobre el nivel actual, o menos para +reducir sobre el nivel actual. + +### Inclusión heredada + +La inclusión heredada es la que se explica en el apartado del parámetro customizado "include", donde +vemos en el ejemplo que los niveles de las cabeceras aumentan automáticamente según hereden del +nivel donde se encuentren. No hace falta especificar nivel de forma forzada mediante "header_level". + +### Inclusión forzada + +La inclusión forzada hace referencia a que se le da un valor numérico entero sin signo, que +representa el nivel íntegro al que se quiere mover todo, independientemente de la herencia, por +ejemplo: + +```md + +## Nivel 2 + +Estamos en el nivel 2 de herencia, y queremos incluir un fichero en el nivel 4 de forma forzada. +Para ello lo haremos de la siguiente forma: + +[[header_level 4]] +[[include PATH1]] + +Para volver al nivel 2 de nuevo simplemente hemos de establecer aquí lo siguiente: + +[[header_level 2]] + +``` + +Como podemos ver en el ejemplo, este parámetro customizado nos permite forzar la inclusión de un +fichero en un nivel concreto y luego volver a otro nivel, en el caso del ejemplo, al nivel 2 que era +de donde partía. + +### Inclusión añadida + +La inclusión añadida permite desplazar el nivel de las cabeceras X niveles a partir de encabezar el +nivel con el signo "+" para añadir o el signo "-" para disminuir. Por ejemplo: + +```md + +## Nivel 2 + +Nos encontramos en el nivel 2. Como este fichero puede ser includo y heredado de otros niveles y +queremos reducir 2 niveles para volver al nivel 0 de este fichero para la inclusión del siguiente +fichero podemos hacerlo así: + +[[header_level -2]] +[[include PATH1]] + +Sin embargo, si queremos recuperar la posición anterior no vamos a poder posiblemente pues si +ponemos +2, será que aumenta 2 posiciones a partir de la última cabecera del PATH1. Es muy +importante tenerlo encuenta. + +``` + +## data_dictionary + +El parámetro customizado "data_dictionary" nos permite crear un diccionario de conceptos contra +palabras o estructuras de texto que puedan aparecer en la documentación y con ello, generar una +definición de las mismas, ya sea como referencia donde se coloque el diccionario; o por el texto, +creando un pequeño elemento HTML que hace que cuando el usuario ponga el puntero encima de la +palabra o palabras en cuestión, despliegue una pequeña capa con una descripción y vinculación de las +fuentes o referencias, ya sea para contrastar como para adquirir más información. + +Este elemento se tratará en HTML como un INPUT HIDDEN, el cual será interpretado a nivel cliente +sobre JavaScript y generará tanto el diccionario con su buscador, como le dará la función de mostrar +definición y fuentes a los elementos en la documentación en general. + +Este parámetro customizado se mezclará con otros "data_dictionary" que puedan existir en la +documentación por lo que se desaconseja encarecidamente el uso de más de uno de estos elementos, +aunque no por ello esté prohibido su uso, permitiendo incluso actualizar los datos de diccionario +que ya halla. + +Un ejemplo de funcionamiento podría ser el siguiente: + +```md + +## Diccionario + +[[data_dictionary { + "dictionary" : [{ + "pattern" : "/\\bky ?man\\b/i", + "result" : "KyMAN", + "description" : [ + "Programador. Trabaja los lenguajes Python, PHP, JavaScript, CSS (CSS y SCSS), SQL ", + "(SQLite, MySQL (MariaDB) y SQL Server)" + ], + "links" : [ + "https://git.k3y.pw/KyMAN/", + "https://git.a3do.net/KyMAN/", + "https://www.youtube.com/channel/UCCAWOt-AxTyAiFWBgyb3X9Q" + ] + }, { + "pattern" : "/\\bmark ?down\\b/i", + "result" : "MarkDown", + "description" : [ + "Simple lenguaje de marcas de texto para documentar. se suele usar en proyectos Git." + ], + "links" : [ + "https://es.wikipedia.org/wiki/Markdown", + "https://markdown.es/" + ] + }, { + "pattern" : "/\\bmedia ?wiki\\b/i", + "result" : "MediaWiki", + "description" : [ + "CMS PHP muy extendido para gestionar información y documentación con un pequeño ", + "lenguaje de marcas de texto para su procesamiento. Como referencias tendríamos ", + "Wikipedia, HiddenWiki, etc." + ], + "links" : [ + "https://www.mediawiki.org/", + "https://es.wikipedia.org/wiki/MediaWiki" + ] + }, { + "pattern" : ["/\\bwmarkdown\\b/i", "/\\bwmd\\b/i"], + "result" : ["WMarkDown", "WMD"], + "description" : [ + "Pequeño sistema para documentación de proyectos que mezcla los lenguajes de marcas ", + "de texto MarkDown y MediaWiki con HTML y texto plano." + ], + "links" : [ + "https://wmarkdown.k3y.pw/", + "https://git.k3y.pw/Whalers/WMarkDown" + ] + }] +}]] + +``` + +Como podemos ver en el ejemplo, este parámetro es un diccionario JSON con una única entrada, +"dictionary", la cual contendrá un Array de diccionarios los cuales tienen los siguientes elementos: + +- **pattern**: Patrón o patrones de búsqueda. +- **result**: Resultado o resultados contra el o los patrones. +- **description**: Descripción o definición. +- **links**: Referencias o fuentes mediante URL. + +Los patrones y los resultados han de tener el mismo número de elementos, es decir, si se le dan 2 +patrones de búsqueda ha de haber 2 resultados, pues el sistema entiende que cada patrón es para una +posible forma de llamar al elemento diferente. Los resultados permiten, en conjunto con el patrón, +corregir posibles errores de escritura de cualquier texto que se le dé a partir del patrón regular. + +Con respecto a las imágenes que representan el o los links que puedan estar representadas por +defecto en las capas que aparecen para definir un texto cuando le puntero se le pone encima están +definidas en SCSS a partir del atributo "data-site" que contiene cada Link, usando la raíz de la +página para establecer una imagen icónica del sitio Web al que se le hace referencia. + +> **IMPORTANTE**: Se desaconseja el uso de este parámetro por dos motivos: el primero es la +limitación de PHP cara la limitación del número de caracteres que tiene a la hora de procesar dicho +String en un patrón regular; y la segunda es que actualmente hay una alternativa a dicho sistema que +viene siendo en JS la cual implementaría el diccionario desde JavaScript, en el propio constructor +del objeto WMarkDown. La solución puesta solventa muchos problemas de esta versión, sin embargo, +quita posicionamiento SEO al ser contenido dinámico autogenerado en el cliente y no gestionado +mediante Tags, pero por renta cuenta mejor el uso de dicha solución. + +## Multimedia + +Es un Parámetro Customizado que nos permite incluir elementos Multimedia a partir de varios nombres +los cuales son: "image", "images", "audio", "audios", "video", "videos" y "embed". Por la +complejidad y el tamaño de los Scripts para gestionar dichos elementos, éstos pertenecen a otro +fichero como un módulo independiente, con su patrón de búsqueda, sin embargo, se considerarán +Parámetros Customizados. Para más información, ir a la sección Multimedia donde se hablará de todo +este Parámetro Customizado como si fuera un módulo independiente por la extensión que supone. + +> Se planea también agregar un nuevo sistema llamado Slider con nombre "slider" que permite la +creación de un Slider de cualquiera de los elementos que pertenecen a la multimedia. + +## wdictionaries + +El WDictionaries es como el **data_dictionary** pero con la diferencia de que coge los diccionarios de forma remota a partir de la siguiente estructura: + +```md + +[[header_level 0]] + +[[wdictionaries "Diccionario de prueba" https://wdictionaries.k3y.pw/?es/common,digital]] + +``` + +En este caso tenemos el nombre de cabecera que queramos ponerle al buscador de términos del +diccionario, donde en el HTML comentado llamamos _"CABECERA"_; a continuación tenemos los enlaces +separados entre sí por espacios, tabulaciones, saltos de línea y/o retornos de carro. + +> **IMPORTANTE**: El WDictionaries es un proyecto externo al WMarkDown, aunque éste naciera +principalmente para el uso dentro del WMarkDown, éste tiene su Web donde se explica su +funcionamiento e implementación. Además, el WMarkDown a nivel de JS puede implementar dichos +diccionarios sin que se use un WMD, eliminando el fallo a la hora de representar más de un +diccionario dentro de estos ficheros. + +A continuación ponemos un ejemplo de carga de más de un fichero, por ejemplo, de diversos ficheros +JSON para hacer uso de la caché OnLine y del navegador. + +```md + +[[header_level 0]] +[[wdictionaries "Diccionario de prueba" + https://wdictionaries.k3y.pw/json/es/common.json + https://wdictionaries.k3y.pw/json/es/digital.json + https://wdictionaries.k3y.pw/json/es/users.json +]] + +``` + +> **NOTA**: El texto de la cabecera puede ser una única palabra sin comillas o un conjunto de ellas +encapsuladas entre comillas. + +> **NOTA**: Recomendamos encarecidamente el no utilizar dicho Componente Customizado y usar el +existente en el entorno cliente contra el propio constructor del WMarkDown en JS. + +## wmonitor + +El WMonitor es un pequeño subsistema del WMarkDown el cual permite establecer un punto de monitoreo +de visualizaciones, visitas, likes/dislikes y comentarios contra el cliente. Es importante destacar +que funcionará sobre el entorno cliente aunque éste se establezca en el entorno del WMD. Para +implementarlo requerimos de nombrar a este Componente Customizado y a continuación, poner un texto +indicativo al cual hace referencia. Dicho texto ha de ser único para cada WMonitor, pudiéndose dar +el caso de poder compartir dichos datos con otros puntos, pero se perdería la información real de +visualizaciones y likes/dislikes de ambos individualmente y pudiendon llevar a engaño visual de la +información. Un ejemplo de implementación sobre una cabecera podría ser el siguiente: + + + + + + + + + + + + + + +
    WMarkDownResultado
    + +```md +[[post_data { + "author" : "KyMAN", + "since" : 202106029, + "version" : 202106029 +}]] +# Prueba del WMonitor +[[wmonitor prueba_del_wmonitor]] + +Texto que queramos ponerle al cuerpo de este artículo. + +``` + + + + [[post_data { + "author" : "KyMAN", + "since" : 202106029, + "version" : 202106029 + }]] +

    Prueba del WMonitor

    + [[wmonitor prueba_del_wmonitor]] + + Texto que queramos ponerle al cuerpo de este artículo. + +
    + +> **NOTA**: El texto indicativo puede ser una palabra sin comillas o varias encapsuladas entre +comillas. + +> **NOTA**: Habrá más información acerca de éste en la sección que hable sobre el entorno cliente. + +El almacenamiento de los datos en el entorno servidor de este Componente Customizado viene siendo en +un archivo SQLite para que el administrador tenga control sobre los distintos ficheros de este tipo, +así como su globalización mediante el Driver PDO. + +## ignore + +Este Componente Customizado simplemente hace que WMarkDown ignore lo que tenga dentro, dejándolo sin +formatear ni nada. Es importante destacar que el doble cierre de corchete se considerará el cierre +del "ignore", y que en caso de necesitar ponerlo es importante hacer uso de HTML. Unos ejemplos de +ésto podrían ser los siguientes, donde el primero simplemente hace ignorar una palabra, el siguiente +un texto, y en el siguiente un JSON con doble cierre de corchete. + + + + + + + + + + + + + + + + +
    WMarkDownNormalIgnorado
    + +```md + +# Testeando el *ignore* + +Tengo 35 [[ignore años]]. + +Fichero: [[ignore vacíos.json]] + +JSON: [[ignore '["jiji", "jaja", ["cosa.txt", "cosa.json"]]']] + +``` + + + +

    Testeando el *ignore*

    + + Tengo 25 años. + + Fichero: vacíos.json + + JSON: '["jiji", "jaja", ["cosa.txt", "cosa.json"]]' + +
    + +

    Testeando el *ignore*

    + + Tengo 35 [[ignore años]]. + + Fichero: [[ignore vacíos.json]] + + JSON: [[ignore '["jiji", "jaja", ["cosa.txt", "cosa.json"]]']] + +
    + +> **NOTA**: SPAN en HTML no es más que una etiqueta de línea, visualmente no se ve ni se percibe, y +gracias a ésta podremos escapar caracteres que puedan ser problemáticos en última instancia, como +éste que acabamos de ver. + +## links_group + +El _links\_group_ o "Grupo de Links" viene siendo pequeño componente que permite mostrar un conjunto +de Links sin mostrar sus URIs, sino una imagen representativa y a lo sumo, un pequeño texto o +palabra acorde a éste, iconificando los enlaces mediante imágenes, siguiendo la estructura del +módulo Multimedia, y automatizando ciertas cosas como la carga y selección de imágenes funcionales, +organizamiento de los mismos y los estilos básicos. Su orden se basa en el orden dado en el Array +JSON el cual define este Componente Customizado, e irántodos en la misma línea, centrados, y cuando +hay tantos que exceden la línea automáticamente crearán una segunda, tercera o tantas líneas como +requieran para mostrar todos los Links. + +La estructura del JSON no es más que un Array de diccionarios, donde cada diccionario no es más que +un Link y el cual posee la siguiente estructura: + +- **images** _(required)_: Array de URLs de imágenes alternativas, en el orden de prioridad. +- **link** _(required)_: URL a la que se quiere enviar. +- **text** _(required)_: Texto que acompaña a la imagen. +- **self** _(optional)_: Indica si se abre en la pestaña/ventana actual (true) o se abre una nueva +(false). + +Con respecto al campo "images", se pueden poner tantas URLs como se quieran, incluyendo repetidas, +aunque la idea de repetidas en una mala idea porque pasará exactamente lo mismo en los casos +repetidos; y se cogerán partiendo de la primera imagen hasta la última, donde la primera imagen que +encuentre que no de error, será la que ponga. En caso de que todas las opciones den error o que no +se establezca imagen, la imagen quedará vacía. + +Un ejemplo de funcionamiento puede ser el siguiente: + + + + + + + + + + + + + + +
    WMarkDownResultado
    + +```md + +# Links de ejemplo + +[[links_group [{ + "images" : ["https://wmarkdown.k3y.pw/images/wmarkdown.png"], + "link" : "https://wmarkdown.k3y.pw/", + "text" : "WMarkDown" +}, { + "images" : ["https://git.k3y.pw/assets/logo-d36b5212042cebc89b96df4bf6ac24e43db316143e89926c0db839ff694d2de4.svg"], + "link" : "https://git.k3y.pw/", + "text" : "Git" +}, { + "images" : ["https://gittutorials.k3y.pw/images/gittutorials.png"], + "link" : "https://gittutorials.k3y.pw/", + "text" : "GitTutorials" +}, { + "images" : [], + "link" : "https://wdictionaries.k3y.pw/", + "text" : "WDictionaries" +}, { + "images" : ["https://kyman.local/images/logo.png"], + "link" : "https://kyman.k3y.pw/", + "text" : "KyMAN Wlog" +}, { + "images" : ["https://kanvas.k3y.pw/images/kanvas.png"], + "link" : "https://kanvas.k3y.pw/", + "text" : "Kanvas" +}] ]] + +``` + + + +

    Links de ejemplo

    + + [[links_group [{ + "images" : ["https://wmarkdown.k3y.pw/images/wmarkdown.png"], + "link" : "https://wmarkdown.k3y.pw/", + "text" : "WMarkDown" + }, { + "images" : ["https://git.k3y.pw/assets/logo-d36b5212042cebc89b96df4bf6ac24e43db316143e89926c0db839ff694d2de4.svg"], + "link" : "https://git.k3y.pw/", + "text" : "Git" + }, { + "images" : ["https://gittutorials.k3y.pw/images/gittutorials.png"], + "link" : "https://gittutorials.k3y.pw/", + "text" : "GitTutorials" + }, { + "images" : [], + "link" : "https://wdictionaries.k3y.pw/", + "text" : "WDictionaries" + }, { + "images" : ["https://kyman.local/images/logo.png"], + "link" : "https://kyman.k3y.pw/", + "text" : "KyMAN Wlog" + }, { + "images" : ["https://kanvas.k3y.pw/images/kanvas.png"], + "link" : "https://kanvas.k3y.pw/", + "text" : "Kanvas" + }] ]] + +
    + +## icon + +Este Componente Customizado sirve para marcar algo como una nota, alerta, aviso, etc. Y suele ser +usado para los Quotes (Componente que se verá más adelante). Dicho Componente Customizado puede ser +nombrado como: + +- icon +- i +- ! + +> [[! note NOTA]]: Las nomenclaturas "i" y "!" están hechas para agilizar y facilitar su uso. + +La sintaxis de los iconos es la siguiente, donde podemos ver las siguientes partes: + +```md +[[icon|i|! TIPO TEXTO?]] +``` + +- **TIPO**: Es el tipo de icono que se quiere mostrar. Dicho nombre lo podemos sacar del fichero de +iconos de CSS y nos valdría cualquiera de ellos, aunque oficialmente existen 5: *note* o notas; + *alert* o alertas; *important* o cosas importantes; *warning* o avisos; y *danger* o peligro. +- **TEXTO**: Es un campo opcional que permite añadirle un texto que lo acompañe. + +> [[! note NOTA]]: Es importante tener en cuenta que este Componente Customizado es un elemento de +línea que puede estar integrado dentro de un texto entre otros. + +Los tipos de icono que hay son los siguientes: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TipoWMarkDownEjemploResultado
    Nota + +```md +[[! note NOTA]] +``` + + +```md + +> [[! note NOTA]]: Esto es una nota. + +> [[! note]] Esto es una nota. + +``` + + + +> [[! note NOTA]]: Esto es una nota. + +> [[! note]] Esto es una nota. + +
    Alerta + +```md +[[! alert ALERTA]] +``` + + +```md + +> [[! alert ALERTA]]: Esto es una alerta. + +> [[! alert]] Esto es una alerta. + +``` + + + +> [[! alert ALERTA]]: Esto es una alerta. + +> [[! alert]] Esto es una alerta. + +
    Aviso + +```md +[[! warn AVISO]] +[[! warning AVISO]] +``` + + +```md + +> [[! warn AVISO]]: Esto es un aviso. + +> [[! warn]] Esto es un aviso. + +``` + + + +> [[! warn AVISO]]: Esto es un aviso. + +> [[! warn]] Esto es un aviso. + +
    Importante + +```md +[[! important IMPORTANTE]] +``` + + +```md + +> [[! important IMPORTANTE]]: Esto es algo importante. + +> [[! important]] Esto es algo importante. + +``` + + + +> [[! important IMPORTANTE]]: Esto es algo importante. + +> [[! important]] Esto es algo importante. + +
    ¡Peligro! + +```md +[[! danger PELIGRO]] +``` + + +```md + +> [[! danger PELIGRO]]: Esto es algo peligroso. + +> [[! danger]] Esto es algo peligroso. + +``` + + + +> [[! danger PELIGRO]]: Esto es algo peligroso. + +> [[! danger]] Esto es algo peligroso. + +
    + +## WDoc + +El WDoc es un sistema basado en el XDoc para documentar código, pero con la diferencia que en este +caso es para documentar el código a partir de ficheros WMD para dejar el código lo más limpio +posible, además de agilizar la documentación del código dentro de los documentos WMD, manteniendo +una pequeña estructura simplificada de XDoc para una documentación rápida de variables y metodos que +nos podamos encontrar. El WDoc se basa en tres partes diferenciadas las cuales son: + +- **Descripción**: Inicia con cualquier caracter que no sea "@" ni "#". Pequeño texto descriptivo +para definir por encima el método o variable que se quiera documentar. +- **Data o información**: Inicia con "@". Valores basados en una llave y un valor tanto para el XDoc +como para el propio WDoc, y suelen ser elementos comunes. +- **Atributos y retorno**: Inicia con "#". Parámetros de entrada del método y retorno del mismo. + +Cada elemento conforma una única línea dentro del elemento o bloque WDoc y se distinguen a partir de +su inicio el cual se detalla en la lista anterior. + +En el caso de la descripción, cualquier línea que empiece sin ninguno de los caracteres +determinados será concatenada a la descripción separados por un simple espacio. Permite el uso de +HTML, lo mismo que en resto de atributos, aunque en los demás no se aconseja, y se hace uso de HTML +si se viere necesario pero en la medida de lo posible y por la descripción de este Componente +Customizado no se aconseja hacer un uso excesivo de ello. + +El en el caso de Data o información, sirve para cumplimentar datos genéricos del XDoc o WDoc, siendo +algunos de ellos los siguientes: + +- **name** *(required)*: Sería el nombre completo del elemento, es decir, si se encuentra en una +clase, subclase o espacio de nombres, ha de representar se entero, sin espacios. +- **language** *(required)*: Lenguaje de programación en el que esté trabajado sin espacios. +- **author** *(optional)*: Autor o autores del elemento a documentar, separados por comas y sin +espacios. +- **since** *(optional)*: Fecha en formato "YYYYMMDD" desde la primera aparición en código de dicho +elemento. +- **version** *(optional)*: Última fecha de modificación en formato "YYYYMMDD" de dicho elemento. +- **deprecated** *(optional)*: Determina si está obsoleto o no. Su valor ha de ser "true". + +> [[! important IMPORTANTE]]: Los elementos de Data o información "required" u obligatorios deben de +existir siempre o pueden dar resultados no esperados por el redactor. + +Finalmente, en el caso de los atributos se determinan a partir de 4 puntos los cuales se separan con +espacios, siendo el último el único capaz de contener dichos espacios. La separación entre ellos +pueden ser espacios o tabulaciones, y pueden ser tantos como se desee para mantener una legibilidad +a la hora de representar en código. Dichos elementos de los que consta son los siguientes: + +- **nombre** *(required)*: Nombre del atributo. +- **tipados** *(required)*: Tipado o posibles tipados del atributo. En caso de poder ser cualquiera +se pondría la palabra "ANY" para representar "cualquiera" (Por defecto, el tipado "-" será "ANY"). +- **modo** *(required)*: Determina si el atributo es obligatorio (Required) u opcional (Optional). +- **descripción** *(optional)*: Pequeña descripción del atributo. + +> [[! note NOTA]]: Para representar el retorno, hemos de usar el nombre de atributo return, que +siguiendo con el modelo de un atributo continuaría con el tipado o tipados de variable de retorno, +un guión ("-") por el hecho de no ser ni opcional, ni requerido ni ninguna otra forma dependiente +del usuario, y con una pequeña descripción opcional que determine qué es lo que retorna. + +Un ejemplo de dicho sistema puede ser el siguiente: + +```md + +Descripción WDoc del método **AnP.string_variables**. + +[[wdoc +Procesa las variables de un String. +@name AnP.string_variables +@lang Python +#string str required String a procesar. +#variables dict,list,tuple optional Variables para procesar el String. +#default str optional Valor por defecto. +#return str - String procesado. +]] + +``` + +Su resultado vendría siendo el siguiente: + +
    + +Descripción WDoc del método **AnP.string_variables**. + +[[wdoc +Procesa las variables de un String. +@name AnP.string_variables +@lang Python +#string str required String a procesar. +#variables dict,list,tuple optional Variables para procesar el String. +#default str optional Valor por defecto. +#return str - String procesado. +]] + +
    + +También se cuenta con posibles sobrecargas, es decir, que un método pueda tener más de un tipo de +entrada con lo que éste actuará diferente en base a su entrada. Como éste se basa en los atributos y +retorno del mismo, se puede poner el parámetro "@overload" sin ningún valor ni nada, lo que indica +que a partir de ahí empieza una sobrecarga del método con sus propios parámetros de entrada y +retorno. + +> [[! note NOTA]]: Un retorno vacío se especificará automáticamente con el tipado "void", por lo que +no haría falta ni definirlo. + +> [[! note NOTA]]: Es importante determinar que en lenguajes como Python, en sus métodos objeto o +métodos de clase, el primer parámetro de entrada se entiende como un parámetro forzado del propio +lenguaje por el cual no se determinará en el WDoc, dando a entender que en estos casos se empezará +en el segundo parámetro de entrada por ser un parámetro dado al usuario, que será con los que pueda +interactuar. + +## plain + +El Componente Customizado "plain" nos permite establecer un fragmento de texto totalmente plano a +nivel de HTML, sin que éste se procese ni se etiquete. Es muy útil para mantener estructuras en los +títulos u otros elementos vinculados. Un ejemplo de funcionamiento puede ser el siguiente: + +```md + +# [[AnP.get_dictionary_path]] + +Título del bloque "AnP.get\_dictionary\_path". + +# AnP.get_dictionary_path + +Título del bloque "AnP.get\_dictionary\_path". + +``` + +> [[! note NOTA]]: Los textos que queden planos quedarán siendo parte de su padre y no +distinguiéndose del resto de los textos puesto que no estarán etiquetados. + +[[html_data { + "title" : "WMarkDown - Parámetros customizados", + "url" : "https://wmarkdown.k3y.pw/es/doc/modules/custom_parameters.html", + "author" : "Tarsier, KyMAN", + "since" : 20210515, + "version" : 20210519, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,módulo,parámetros,custom,personalizado,include,inclusión,import,importación,multimedia,xdoc,wdoc", + "description" : "Módulo de parámetros customizados.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/modules/font_formats.w.md b/WMD/es/doc/modules/font_formats.w.md new file mode 100755 index 0000000..dd0f988 --- /dev/null +++ b/WMD/es/doc/modules/font_formats.w.md @@ -0,0 +1,112 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210516, + "version" : 20210516 +}]] +# Formatos de fuente + +Los formato de la fuente puede ser un tema muy extenso, sin embargo, por lo general, tienen una serie de patrones en uso, y pocos elementos de formatos quedan expuestos a no tener un patrón concreto, y de éstos últimos, por lo general solo se hace uso de dos: la negrilla y la cursiva. Esto da pie a considerar sólo el formato rápido por marcas de texto de éstos dos, el resto han de ser aplicados o por CSS o por HTML. Para poder aplicar ambos, podemos basarnos tanto en MediaWiki como en MarkDown, siendo de la siguiente forma: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ObjetivoMediaWikiMarkDownHTML
    Negrilla + +```md +'''Negrilla''' +"""Negrilla""" +``` + + + +```md +**Negrilla** +__Negrilla__ +``` + + + +```html +Negrilla +``` + +
    Cursiva + +```md +''Cursiva'' +""Cursiva"" +``` + + + +```md +*Cursiva* +_Cursiva_ +``` + + + +```html +Cursiva +``` + +
    Negrilla y cursiva + +```md +'''''Negrilla y cursiva''''' +"""""Negrilla y cursiva""""" +``` + + + +```md +***Negrilla y cursiva*** +___Negrilla y cursiva___ +``` + + + +```html +Negrilla y cursiva +``` + +
    + +[[html_data { + "title" : "WMarkDown - Formatos de fuente", + "url" : "https://wmarkdown.k3y.pw/es/doc/modules/font_formats.html", + "author" : "Tarsier, KyMAN", + "since" : 20210516, + "version" : 20210516, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,módulo,fuente,formato,texto", + "description" : "Módulo de formatos de fuente.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/modules/headers.w.md b/WMD/es/doc/modules/headers.w.md new file mode 100755 index 0000000..bc77e15 --- /dev/null +++ b/WMD/es/doc/modules/headers.w.md @@ -0,0 +1,92 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210512, + "version" : 20210512 +}]] +# Cabeceras (Headers) + +Las cabeceras o Headers son equivalentes a las cabeceras de HTML, desde el nivel 1 hasta el 6, los +cuales se representan de la siguiente forma: + +```md +# Cabecera de nivel 1

    Cabecera de nivel 1

    +## Cabecera de nivel 2

    Cabecera de nivel 2

    +### Cabecera de nivel 3

    Cabecera de nivel 3

    +#### Cabecera de nivel 4

    Cabecera de nivel 4

    +##### Cabecera de nivel 5
    Cabecera de nivel 5
    +###### Cabecera de nivel 6
    Cabecera de nivel 6
    +``` + +> Para seguir las normas de HTML, no habrá más de 6 niveles de cabeceras. + +Dichas cabeceras representan el título de cada sección, subsección o fragmento de la documentación, +y en WMarkDown se usará también como guía para el menú, que navega por cabeceras para poder generar +un OnePage documental completo. + +Cuando se incluye un fichero externo con la propiedad "include" éste sumará el nivel de la cabecera +en la que se encuentra la inclusión. En caso de no quererse ampliar o quererse ampliar solo ciertos +niveles, existe una propiedad llamada "header_level" que permite establecer un nivel del cual partir +en la siguiente inclusión. + +```md + +# Estamos en nivel 1. + +Contenido del nivel 1. + +## Estamos en nivel 2. + +Contenido del nivel 2. + +[[include path/fichero_a.w.md]] + +[[header_level 0]] +[[include path/fichero_b.w.md]] + +[[header_level 3]] +[[include path/fichero_c.w.md]] + +[[header_level default]] +[[include path/fichero_d.w.md]] + +``` + +En el ejemplo dado, la inclusión de "fichero\_a" se hará al nivel actual, el nivel 2, quedando todos +los títulos herederos del nivel donde se encuentra; mientras que el segundo se hará sobre el nivel +raíz; y finalmente, el "fichero\_c" se pondrá a nivel hijo de 4. + +Es importante mencionar que los niveles de inclusión suman al nivel del título donde se encuentre, +siendo nivel 0 cuando no hay título; nivel 1 cuando hay título; y sucesivos. Por lo tanto, si a esta +sucesión la ponemos en el nivel 3, se entiende que aquellos bloques que no están precedidos de +ningún título está en el nivel 3; los que están precedidos de un título de nivel 1 será el nivel 4, +y sucesivos. + +> Para poder restaurar los niveles contra el padre, simplemente tomaremos como valor de la propiedad +"header_level" como "default". + +Cara MediaWiki, las cabeceras se organizan con encapsulados de texto con el caracter igual ("="), +donde el número de éstos que salga por cualquiera de los dos lados del encapsulado, será el nivel +donde se encuentra, y siguiendo con la misma idea anterior, los niveles se encuentran entre 1 y 6 +siendo éstos los siguientes: + +```md += Cabecera de nivel 1 = # Cabecera de nivel 1

    Cabecera de nivel 1

    +== Cabecera de nivel 2 == ## Cabecera de nivel 2

    Cabecera de nivel 2

    +=== Cabecera de nivel 3 === ### Cabecera de nivel 3

    Cabecera de nivel 3

    +==== Cabecera de nivel 4 ==== #### Cabecera de nivel 4

    Cabecera de nivel 4

    +===== Cabecera de nivel 5 ===== ##### Cabecera de nivel 5
    Cabecera de nivel 5
    +====== Cabecera de nivel 6 ====== ###### Cabecera de nivel 6
    Cabecera de nivel 6
    +``` + +[[html_data { + "title" : "WMarkDown - Cabeceras", + "url" : "https://wmarkdown.k3y.pw/es/doc/modules/headers.html", + "author" : "Tarsier, KyMAN", + "since" : 20210511, + "version" : 20210511, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,módulo,cabecera", + "description" : "Cabeceras de WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/modules/links.w.md b/WMD/es/doc/modules/links.w.md new file mode 100755 index 0000000..c92c054 --- /dev/null +++ b/WMD/es/doc/modules/links.w.md @@ -0,0 +1,301 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210513, + "version" : 20210513 +}]] +# Links + +Los Links son los encargados de gestionar los vínculos entre páginas o dentro de la propia página, +incluyendo vínculos a sitios externos. En este caso nos encontramos con que MarkDown y MediaWiki +varían bastante el formato de los mismos por lo que la adaptación de ambos se basó en el lado del +MarkDown y se extendió a la idea de MediaWiki, quedando como resultado que todo Link encabezado por +el protocolo, ya sea HTTP, HTTPS, FTP, FTPS, SFTP, FILE, etc. Se considerará un Link. + +## Links directos + +En el siguiente ejemplo habrá una lista de Links a partir del protocolo en texto plano: + + + + + + + + + + + + + + +
    WMarkDownResultado
    + +```md + +- https://git.k3y.pw/ +- https://wmarkdown.k3y.pw/ +- https://cdn.k3y.pw/ + +Incluso podemos poner un link como https://ur3.k3y.pw/ dentro de un texto o párrafo y éste será +reconocido y formateado como Link HTML. + +``` + + + +- https://git.k3y.pw/ +- https://wmarkdown.k3y.pw/ +- https://cdn.k3y.pw/ + + Incluso podemos poner un link como https://ur3.k3y.pw/ dentro de un texto o párrafo y éste será + reconocido y formateado como Link HTML. + +
    + +## Links formateados + +Pero los Links también se pueden formatear a partir del siguiente esquema: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    WMarkDownHTMLResultado
    + +```md +https://wmarkdown.k3y.pw/ +``` + + + +```html +https://wmarkdown.k3y.pw/ +``` + + https://wmarkdown.k3y.pw/
    + +```md +[https://wmarkdown.k3y.pw/] +``` + + + +```html +https://wmarkdown.k3y.pw/ +``` + + https://wmarkdown.k3y.pw/
    + +```md +[https://wmarkdown.k3y.pw/ WMarkDown] +``` + + + +```html +WMarkDown +``` + + WMarkDown
    + +```md +[WMarkDown][https://wmarkdown.k3y.pw/] +``` + + + +```html +WMarkDown +``` + + WMarkDown
    + +```md +[WMarkDown](https://wmarkdown.k3y.pw/) +``` + + + +```html +WMarkDown +``` + + WMarkDown
    + +```md +[WMarkDown](https://wmarkdown.k3y.pw/ Página oficial de WMarkDown.) +``` + + + +```html +WMarkDown +``` + + WMarkDown
    + +```md +[WMarkDown][https://wmarkdown.k3y.pw/ Página oficial de WMarkDown.] +``` + + + +```html +WMarkDown +``` + + WMarkDown
    + +## Links locales + +También se pueden hacer Links dentro del mismo sitio Web a partir de enlaces absolutos o relativos +haciendo uso de los corchetes o usando la misma metodología de Links no directos de la tabla +anterior, con la diferencia de que si el vínculo es dentro de la misma página, éste se hará sobre la +misma, subiendo o bajando el Scroll al destino dado. Un ejemplo de ello puede ser el siguiente: + + + + + + + + + + + + + + + + + + + + + +
    WMarkDownHTMLResultado
    + +```md +[/doc/example.html] +``` + + + +```html +/doc/example.html +``` + + /doc/example.html
    + +```md +[#FAQ-Preguntas-frecuentes-1] +``` + + + +```html +#FAQ-Preguntas-frecuentes-1 +``` + + #FAQ-Preguntas-frecuentes-1
    + +## Links referenciados + +Finalmente, existe otro tipo de Link, el cual llamamos "referenciado", que de por sí se crea en HTML +como un vínculo como cualquiera de los anteriores, sea un Link válido o no, y luego, en el entorno +cliente, el vínculo cambia según la referencia, si es que ésta existe. La referencia es una línea en +la cual se hace un Alias que luego puede ser usado para identificar ese Link, de esa forma, a partir +de un nombre o un texto, éste puede ser identificado. A continuación se establece un ejemplo: + + + + + + + + + + + + + + +
    WMarkDownResultado
    + +```md + +- [WMarkDown](https://wmarkdown.k3y.pw/) +- [URfree](https://ur3.k3y.pw/) +- [Git de inoro](git_inoro) +- [Git de KyMAN](git_kyman) + +[git_inoro]: https://git.a3do.net/ +[git_kyman]: https://git.k3y.pw/ + +``` + + + +- [WMarkDown](https://wmarkdown.k3y.pw/) +- [URfree](https://ur3.k3y.pw/) +- [Git de inoro](git_inoro) +- [Git de KyMAN](git_kyman) + +[git_inoro]: https://git.a3do.net/ +[git_kyman]: https://git.k3y.pw/ + +
    + +[[html_data { + "title" : "WMarkDown - Links", + "url" : "https://wmarkdown.k3y.pw/es/doc/modules/links.html", + "author" : "Tarsier, KyMAN", + "since" : 20210513, + "version" : 20210513, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,módulo,links,hipervículos,vínculos", + "description" : "Links Web.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/modules/maths.w.md b/WMD/es/doc/modules/maths.w.md new file mode 100755 index 0000000..ff011ee --- /dev/null +++ b/WMD/es/doc/modules/maths.w.md @@ -0,0 +1,83 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210516, + "version" : 20210516 +}]] +# Maths + +Este tipo de bloque de código está creado para poder mostrar, a partir de un String o texto dado, +una fórmula matemática legible. Para llevar a cabo dicha operación se hace uso de la librería +MathJax, una librería desarrollada en NodeJS, tanto para navegadores como para proyectos NodeJS, +VueJS o derivados, que permite transformar un texto LaTeX, HML, etc. En una fórmula matemática +legible, para mostrar operaciones matemáticas entre otras funciones. + +Para poder crear una fórmula matemática simplemente hemos de crear un bloque de código con el nombre +"maths" y dentro poner la formulación que se quiere visualizar. Automáticamente, WMarkDown lo +procesará y le enviará la orden a MathJax. + +Ejemplos de funcionamiento podrían ser los siguientes: + + + + + + + + + + + + + + + + + + +
    WMarkDownResultado
    + +'''md +```maths +x = 2a^4 + 5 +``` +''' + + + +```maths +x = 2a^4 + 5 +``` + +
    + +'''md +```maths +y = \sqrt{x^2 + 5n} +``` +''' + + + +```maths +y = \sqrt{x^2 + 5n} +``` + +
    + +Como esta librería es externa, para más información aconsejo encarecidamente mirar la documentación +misma de la librería a partir del siguiente enlace: + +http://docs.mathjax.org/en/latest/ + +[[html_data { + "title" : "WMarkDown - Maths", + "url" : "https://wmarkdown.k3y.pw/es/doc/modules/maths.html", + "author" : "Tarsier, KyMAN", + "since" : 20210516, + "version" : 20210516, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,módulo,maths,matemáticas,fórmula,formulación", + "description" : "Módulo para formulación matemática.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/modules/mermaid.w.md b/WMD/es/doc/modules/mermaid.w.md new file mode 100755 index 0000000..d226eac --- /dev/null +++ b/WMD/es/doc/modules/mermaid.w.md @@ -0,0 +1,67 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210512, + "version" : 20210513 +}]] +# mermaid JS + +La librería *mermaid* es una pequeña librería JavaScript desarrollada en NodeJS para la creación, a +partir de marcas de texto dentro de un String, diagramas y flujos. El Link para la documentación así +como descarga y más información sobre el proyecto lo tenemos a continuación. + +https://mermaid-js.github.io/ + +> Al ser una librería externa creemos que es mejor vincular con la fuente original para más +información, además de así mostrar autoría y la indormación de uso más fiderigna entre otras +opciones. Si os gusta por favor, apoyar el proyecto en la medida que podáis, ya sea dándolo a +conocer o mediante los medios que los autores presenten. + +Para integrar *mermaidjs* en la documentación jugaremos con la misma sintaxis u estructura de +MarkDown, usando un bloque de código donde intgrar nuestro diagrama, con nombre del lenguaje +"mermaidjs". Dicha estructura puede adaptarse, según la idea de los bloques de código, con el +sistema dado para MediaWiki a partir de la etiqueta HTML *source lang*, o en adaptación a +interpretación JS, *pre lang*. + + + + + + + + + + + + + + +
    WMarkDownResultado
    + +---txt +```mermaid +graph LR +A["Ejemplo A"] --> B["Ejemplo B"] +``` +--- + + + +```mermaid +graph LR +A["Ejemplo A"] --> B["Ejemplo B"] +``` + +
    + +[[html_data { + "title" : "WMarkDown - mermaid JS", + "url" : "https://wmarkdown.k3y.pw/es/doc/modules/mermaid.html", + "author" : "Tarsier, KyMAN", + "since" : 20210511, + "version" : 20210511, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,módulo,mermaid,diagramas", + "description" : "Gestor de diagramas Web mermaid JS.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/modules/multimedia.w.md b/WMD/es/doc/modules/multimedia.w.md new file mode 100755 index 0000000..52bace4 --- /dev/null +++ b/WMD/es/doc/modules/multimedia.w.md @@ -0,0 +1,349 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210518, + "version" : 20210525 +}]] +# Multimedia + +Los elementos Multimedia son aquellos elementos como el Audio, Imágenes, Vídeos, etc. Incluso +incrustaciones como los propios PDF o librerías que interpretan cosas como ThreeJS contra elementos +3D. En este caso, y por la imposibilidad por la carga de trabajo que ésto supone, se expondrán +ciertas integraciones contra WMarkDown para poder trabajar de forma sencilla algunos elementos, el +resto han de ser tratados directamente sobre HTML, CSS y JS. Es importante tener en cuenta que este +módulo es un Parámetro Customizado, que aunque halla sido externalizado por extensión del mismo de +"custom_parameters", éste no deja de trabajar con la misma estructura sintáctica, es por lo que se +sigue considerando un Parámetro Customizado. + +Éste módulo se amplía en JavaScript por el hecho del Lazying, que de forma nativa, en los +componentes HTML existe para IMG, AUDIO y VIDEO pero no es un estándar para todos los navegadores +por lo que la falta de compatibilidad dio lugar a la creación de un fragmento de código JS para +gestionar el Lazy. Para compatibilizar con SEO sobre etiquetados HTML se hace uso de la etiqueta +NOSCRIPT, donde se pondrá en formato HTML todos los elementos sin Lazying, de esta forma, cuando un +indexador busque por el código HTML, éste no podrá ejecutar JS para acceder a los resultados finales +ni interpretar el parámetro "data-src" utilizado para poner las URL; sin embargo, sí sería capaz de +intepretar como HTML el contenido del NOSCRIPT al ser un entorno que no tiene habilitada la +ejecución de Scripts. + +Como parte común para todas las operaciones que tenemos con el módulo Multimedia tenemos la sintaxis +de llamada, que viene siendo como un Componente Customizado usando la encapsulación con dobles +corchetes; a continuación el nombre del componente multimedia que queramos representar, incluyendo +su nombre de conjunto; y finalmente los datos de fuentes y textos que requiramos para dicho elemento +multimedia. A continuación marcamos una estructura de como se pondría: + +```md + +# Estructura de elementos Multimedia + +[[COMPONENTE FUENTES]] + +``` + +Cada elemento multimedia, a excepción de los Links embedados como Youtube, Soundcloud, etc. Pueden +tener más de una fuente opcional para que en caso de que caiga una de ellas pueda cargarse otra, y +pueden meterse tantas fuentes opcionales como se desee. Para llevar a cabo dicha tarea se usa un +Script JS que se adjunta a las librerías JS de WMarkDown la cual va cargando mediante Lazying los +elementos, y durante la carga, analiza de forma ordenada, desde el primero hasta el último, buscando +el primer Link que esté disponible para el recurso, el cual será el que use para mostrar el +contenido. En caso de no encontrarse ninguna opción, se dejará en blanco. Un ejemplo de esta +mecánica podría ser el siguiente: + + + + + + + + + + + + + + +
    WMarkDownResultado
    + +```md + +# Ejemplo de carga opcional + +[[image [ + "https://dictionary.cambridge.org/es/images/thumb/cog_noun_002_07459.jpg", + "https://upload.wikimedia.org/wikipedia/commons/9/92/Cog_font_awesome.svg", + "https://cdn.icon-icons.com/icons2/2066/PNG/512/cog_icon_125323.png", + "https://cdn.pixabay.com/photo/2013/07/12/18/19/cog-153268_960_720.png", + "https://cdn.icon-icons.com/icons2/1875/PNG/512/cog_120288.png", + "https://cdn.icon-icons.com/icons2/2066/PNG/512/cog_icon_125323.png" +] Configuración]] + +``` + + + +[[image [ + "https://dictionary.cambridge.org/es/images/thumb/cog_noun_002_07459.jpg", + "https://upload.wikimedia.org/wikipedia/commons/9/92/Cog_font_awesome.svg", + "https://cdn.icon-icons.com/icons2/2066/PNG/512/cog_icon_125323.png", + "https://cdn.pixabay.com/photo/2013/07/12/18/19/cog-153268_960_720.png", + "https://cdn.icon-icons.com/icons2/1875/PNG/512/cog_120288.png", + "https://cdn.icon-icons.com/icons2/2066/PNG/512/cog_icon_125323.png" +] Configuración]] + +
    + +En el Array de URLs de imagen cogerá la primera URL en el orden en el que se encuentran en el mismo +Array, que retorne una imagen correctamente, de esta forma, si falla la primera irá a la segunda, si +falla la segunda irá a la tercera, y así sucesivamente. + +Con respecto al SEO es importante destacar que al ser un Script el cual gestiona qué URL mostrar, se +le impide al SEO detectar dicha imagen, por lo que se hace uso de la etiqueta NOSCRIPT de HTML que +permite meterle contenido String y el cual será interpretado por navegadores o entornos donde no se +pueda ejecutar Scripts, como pueden ser los Metabuscadores o los indexadores, pero si los Scripts +están habilitados, esta etiqueta será ignorada y no se mostrará al usuario, por lo que dicha +etiqueta tendrá los objetos de cada uno de los recursos opcionales dados, permitiendo al SEO ganar +puntos de posicionamiento aún a pesar de ser un sistema dinámico basado en Scripts clientes. + +[[image ["/images/doc/multimedia_noscript.png"] Ejemplo del NOSCRIPT para el SEO.]] + +Los textos que acompañan a los elementos multimedia son textos opcionales y no requieren de +encapsularse entre comillas pues se detecta como Link hasta donde halla una separación, tabulación o +salto de línea. + +## Imágenes + +Las imágenes son el elemento más sencillo y pueden ser tratadas de forma independiente o de forma +conjunta. La idea es poder poner una imagen en formato de bloque en HTML, es decir, que sea +independiente al resto del texto; o un conjunto de imágenes que pase lo mismo pero quedando todo en +un único bloque con imágenes más pequeñas visualmente. + +Para llevar a cabo dicha operación usaremos usaremos el nombre de componente ___image___ para una +única imagen que ocupe casi todo el ancho; o bien ___images___ para un Grid de imágenes sucesivas. +Cada imagen vinculará consigo misma. + +En la presentación del módulo Multimedia tenemos un ejemplo de muestreo de una imagen con 6 links +opcionales, donde podemos apreciar la siguiente estructura: + +```md + +[[image SOURCES TEXTO?]] + +[[images + SOURCES_1 TEXTO_1? + SOURCES_2 TEXTO_2? + SOURCES_3 TEXTO_3? + ... + SOURCES_N TEXTO_N? +]] + +``` + +- **SOURCES** _(required)_: Array de Links de imágenes alternativas. Puede estar vacío, tener una o +más fuentes. +- **TEXTO** _(optional)_: Texto que acompaña a la imagen. + +A continuación se exponen varios ejemplos de imagen única: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    DescripciónWMarkDownResultado
    + Imagen con un único Link. + + +```md + +[[image https://i.imgur.com/YueKYv4.png]] + +``` + + + +[[image https://i.imgur.com/YueKYv4.png]] + +
    + Imagen con un único Link acompañada de una texto. + + +```md + +[[image https://i.imgur.com/bAlLssr.png Aprendiendo a programar en Java...]] + +``` + + + +[[image https://i.imgur.com/bAlLssr.png Aprendiendo a programar en Java...]] + +
    + Imagen con 6 Links alternativos de un icono de configuración con su texto de + configuración. + + +```md + +[[image [ + "https://dictionary.cambridge.org/es/images/thumb/cog_noun_002_07459.jpg", + "https://upload.wikimedia.org/wikipedia/commons/9/92/Cog_font_awesome.svg", + "https://cdn.icon-icons.com/icons2/2066/PNG/512/cog_icon_125323.png", + "https://cdn.pixabay.com/photo/2013/07/12/18/19/cog-153268_960_720.png", + "https://cdn.icon-icons.com/icons2/1875/PNG/512/cog_120288.png", + "https://cdn.icon-icons.com/icons2/2066/PNG/512/cog_icon_125323.png" +] Configuración]] + +``` + + + +[[image [ + "https://dictionary.cambridge.org/es/images/thumb/cog_noun_002_07459.jpg", + "https://upload.wikimedia.org/wikipedia/commons/9/92/Cog_font_awesome.svg", + "https://cdn.icon-icons.com/icons2/2066/PNG/512/cog_icon_125323.png", + "https://cdn.pixabay.com/photo/2013/07/12/18/19/cog-153268_960_720.png", + "https://cdn.icon-icons.com/icons2/1875/PNG/512/cog_120288.png", + "https://cdn.icon-icons.com/icons2/2066/PNG/512/cog_icon_125323.png" +] Configuración]] + +
    + Imagen GIF con 3 links opcionales, acompañada de texto. + + +```md + +[[image [ + "https://i.imgur.com/xL3UgP6.gif", + "http://i.redd.it/ibw4tcsb00wx.gif", + "http://moviecitynews.com/wp-content/uploads/2013/06/Steven-Seagal-dancing.gif" +] Steven Seagal bailando en Rusia]] + +``` + + + +[[image [ + "https://i.imgur.com/xL3UgP6.gif", + "http://i.redd.it/ibw4tcsb00wx.gif", + "http://moviecitynews.com/wp-content/uploads/2013/06/Steven-Seagal-dancing.gif" +] Steven Seagal bailando en Rusia]] + +
    + +Por otro lado, para representar más de una imagen hemos de seguir el mismo procedimiento anterior +pero nombrando ***images*** en vez de *images*, y por cada línea se entenderá como una imagen +independiente a la anterior. + + + + + + + + + + + + + + + + +
    DescripciónWMarkDownResultado
    + Ejemplo de múltiples imágenes, donde la primera tiene un Link secundario, cada uno + con sus textos. + + +```md + +[[images + ["https://i.ytimg.com/vi/J-YXLy9Lc7Y/maxresdefault.jpg", "https://images-na.ssl-images-amazon.com/images/I/61nwQasys5L._SY355_.jpg"] Classixx NYC + https://images-na.ssl-images-amazon.com/images/I/61nwQasys5L._SY355_.jpg Classixx, sesión de Youtube. + https://i.ytimg.com/vi/BeuWg4jdYaY/maxresdefault.jpg Classixx mixmag +]] + +``` + + + +[[images + ["https://i.ytimg.com/vi/J-YXLy9Lc7Y/maxresdefault.jpg", "https://images-na.ssl-images-amazon.com/images/I/61nwQasys5L._SY355_.jpg"] Classixx NYC + https://images-na.ssl-images-amazon.com/images/I/61nwQasys5L._SY355_.jpg Classixx, sesión de Youtube. + https://i.ytimg.com/vi/BeuWg4jdYaY/maxresdefault.jpg Classixx mixmag +]] + +
    + +## Vídeos + +Los vídeos tienen la misma sintaxis que las imágenes con la diferencia de que éstos tienen a +mayores, opcionalmente, un segundo link o conjunto de Links que viene siendo el Poster o carátula a +mostrar mientras no se reproduzca el vídeo. Básicamente puede tener las dos siguientes estructuras: + +```md + +[[video SOURCES POSTER? TEXTO?]] + +[[videos + SOURCES_1 POSTER_1? TEXTO_1? + SOURCES_2 POSTER_2? TEXTO_2? + SOURCES_3 POSTER_3? TEXTO_3? + ... + SOURCES_N POSTER_N? TEXTO_N? +]] + +``` + +Cada campo indica lo siguiente: + +- **SOURCES** _(required)_: Link o Links fuente del vídeo. +- **POSTER** _(optional)_: Link o Links fuente de la imagen que hace de poster. +- **TEXTO** _(optional)_: Texto que acompaña al vídeo. + +Como con el caso de las imágenes, la carga de los elementos de vídeo se hacen mediante Lazying para +evitar un consumo excesivo del ancho de banda. A continuación se exponen unos cuantos ejemplos, uno +por cada caso principal que pueda salir. + +## Audios + + + +## Embeds + + + +[[html_data { + "title" : "WMarkDown - Multimedia", + "url" : "https://wmarkdown.k3y.pw/es/doc/modules/multimedia.html", + "author" : "Tarsier, KyMAN", + "since" : 20210518, + "version" : 20210525, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,módulo,multimedia,imágenes,imagen,video,vídeos,audio,audios,sonidos,embed,incrustación", + "description" : "Módulo de Multimedia.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/modules/paragraphs.w.md b/WMD/es/doc/modules/paragraphs.w.md new file mode 100755 index 0000000..fb65229 --- /dev/null +++ b/WMD/es/doc/modules/paragraphs.w.md @@ -0,0 +1,67 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210516, + "version" : 20210516 +}]] +# Párrafos + +Para poder hacer textos que estén dividos por párrafos de forma automática, WMarkDown entenderá que +cuando halla más de un salto de línea consecutivo, éste separa párrafos o componentes, por lo que +los textos sueltos se considerarán párrafos a ésta condición, por ejemplo. + + + + + + + + + + + + + + + + +
    WMarkDownHTMLResultado
    + +```md + +Este es un párrafo +que continúa, aun a pesar de ser otra línea, +y que sigue continuando por aquí. + +Este ya es otro párrafo pues se separa del anterior mediante dos saltos de línea. + +``` + + + +```html + +

    Este es un párrafo +que continúa, aun a pesar de ser otra línea, +y que sigue continuando por aquí.

    + +

    Este ya es otro párrafo pues se separa del anterior mediante dos saltos de línea.

    + +``` + +
    +

    Este es un párrafo que continúa, aun a pesar de ser otra línea, y que sigue continuando por aquí.

    +

    Este ya es otro párrafo pues se separa del anterior mediante dos saltos de línea.

    +
    + +[[html_data { + "title" : "WMarkDown - Párrafos", + "url" : "https://wmarkdown.k3y.pw/es/doc/modules/paragraphs.html", + "author" : "Tarsier, KyMAN", + "since" : 20210516, + "version" : 20210516, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,módulo,párrafos", + "description" : "Módulo de párrafos.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/modules/quotes.w.md b/WMD/es/doc/modules/quotes.w.md new file mode 100755 index 0000000..b60b984 --- /dev/null +++ b/WMD/es/doc/modules/quotes.w.md @@ -0,0 +1,74 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210516, + "version" : 20210516 +}]] +# Quotes + +Los *Quotes* o comentarios son bloques de texto que se destacan un poco de los demás para indicar +anotaciones, avisos, y otro tipo de mensajes especiales adjuntos al fragmento donde se encuentran. +Para poder hacer uso de este módulo simplemente hemos de usar al principio del párrafo el caracter +de cierre de diamante ">", pudiendo usar más de uno para tener mayor tabulación y representar mayor +o menor nivel. Dentro de estos párrafos especiales, los módulos y parámetros de línea siguen +funcionando igualmente. + + + + + + + + + + + + + + +
    WMarkDownResultado
    + +```md + +# Ejemplo de Quote + +Este es un párrafo normal. + +> Este párrafo de aquí es un *Quote*. +Sigue las mismas normas que un párrafo normal. + +Este es otro párrafo normal. + +>> Este es un *Quote* con mayor tabulación. + +``` + + + +

    Ejemplo de Quote

    + +Este es un párrafo normal. + +> Este párrafo de aquí es un *Quote*. +Sigue las mismas normas que un párrafo normal. + +Este es otro párrafo normal. + +>> Este es un *Quote* con mayor tabulación. + +
    + +Los Quotes son muy utilizados para marcar notas o advertencias ayudándose del Componente Customizado +"[#icon-2 icon]", como se hace en los ejemplos del mismo. + +[[html_data { + "title" : "WMarkDown - Comentarios", + "url" : "https://wmarkdown.k3y.pw/es/doc/modules/paragraphs.html", + "author" : "Tarsier, KyMAN", + "since" : 20210516, + "version" : 20210516, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,módulo,párrafos", + "description" : "Módulo de párrafos.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/modules/tables.w.md b/WMD/es/doc/modules/tables.w.md new file mode 100755 index 0000000..a82e2ba --- /dev/null +++ b/WMD/es/doc/modules/tables.w.md @@ -0,0 +1,151 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20211204, + "version" : 20211204 +}]] +# Tablas + +El módulo de las tablas busca agilizar y facilitar la escritura de tablas en WMarkDown, basándose en +el sistema de tablas de MediaWiki, pero con algunas diferencias. La sintaxis para crear una tabla en +WMarkDown viene siendo con una línea con la que se inicia con la apertura de corchete seguido de un +cierre de exclamación, y se entiende como tabla hasta que halla una línea que se inicia con un un +cierre de exclamación seguida de un cierre de corchete. Cada línea se entiende como una tupla si +ésta se inicia con tubería, sino, será como un comentario dentro de la propia tabla. No existen los +saltos de línea. + +> [[! note NOTA]]: Las tablas de WMarkDown están diseñadas para contenido muy simplificado (Datos, +textos muy pequeños, etc.). + +Un ejemplo de tabla podría ser lo siguiente: + + + + + + + + + + + + + + + + +
    WMarkDownHTMLResultado
    + +```md +[! style="width:100%;" +Esto es un comentario y se ignorará de la tabla. +|^Cabecera|ejemplo1|ejemplo2|ejemplo3|ejemplo4|ejemplo5 +|tupla1 |dato1 |dato2 |dato3 |dato4 |dato5 +|compacto|dato1|dato2|dato3|dato4|dato5 +|colspan|dato1|||dato 2, 3 y 4|dato5 +|_pie|||||Esto es el pie de tabla. +!] +``` + + + +```html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Cabeceraejemplo1ejemplo2ejemplo3ejemplo4ejemplo5
    tupla1dato1dato2dato3dato4dato5
    compactodato1dato2dato3dato4dato5
    colspandato1dato 2, 3 y 4dato5
    pieEsto es el pie de tabla.
    +``` + +
    + +[! style="width:100%;" +Esto es un comentario y se ignorará de la tabla. +|^Cabecera|ejemplo1|ejemplo2|ejemplo3|ejemplo4|ejemplo4 +|tupla1 |dato1 |dato2 |dato3 |dato4 |dato5 +|compacto|dato1|dato2|dato3|dato4|dato5 +|colspan|dato1|||dato 2, 3 y 4|dato5 +|_pie|||||Esto es el pie de tabla. +!] + +
    + +Como podemos ver en el ejemplo anterior, podemos ponerle atributos a la etiqueta HTML en la línea de +apertura, y también podemos ver que una línea sin cabecera de tubería también se considera un +comentario, que aunque no salga reflejado en el HTML final, sí nos permite hacer breves comentarios +de puntos específicos de la propia tabla. También tenemos marcas que identifican si la tupla +pertenece a la cabecera, cuerpo o pie de página donde: + +- Si la tupla empieza por "^", "¨" o "-" se considerará cabecera. +- Si la tupla empieza por "_" se considerará pie. +- Si la tupla empieza por "#" se considera que será tanto cabecera como pie. +- Si la tupla empieza por algo distinto se considerará cuerpo. + +Cualquiera de estos elementos pueden poner en cualquier punto de la tabla, sin embargo, las +cabeceras se unirán, en el orden en el que fueron establecidas, en la THEAD, en la parte superior de +la tabla; lo mismo con los pie de tabla pero en la parte inferior, en la etiqueta TFOOT; y los +elementos de cuerpo, que se ordenarán en el cuerpo de la misma forma que las cabeceras y los pies, +en la etiqueta TBODY. + +Cada celda puede contener elementos WMarkDown como enlaces, componentes, etc. Siempre que éstos sólo +posean una única línea y no contengan el caracter de la tubería. + +Finalmente, estas tablas son capaces de representar COLSPAN, a partir del número de tuberías que +precede a la celda, donde si es una se considerará una celda normal de 1 casilla; mientras que si +son de más se considerará que ocupan el número de tuberías que la preceden. + +> [[! note NOTA]]: Un punto interesante de este tipo de tablas es que se ignoran los espacios antes +y después del texto de una celda, por lo que permite escribir las tablas con la forma misma de la +tabla, dando un índice visual en texto plano WMarkDown muy interesante para ciertas cosas. + +> [[! important IMPORTANTE]]: Para dejar una celda vacía simplemente hemos de escribir su tubería, y +a continuación, un espacio en blanco que la separe de la tubería de la siguiente celda. + +[[html_data { + "title" : "WMarkDown - Tablas", + "url" : "https://wmarkdown.k3y.pw/es/doc/modules/tables.html", + "author" : "KyMAN", + "since" : 20211204, + "version" : 20211204, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,módulo,tablas", + "description" : "Módulo de tablas.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/projects.w.md b/WMD/es/doc/projects.w.md new file mode 100755 index 0000000..170df73 --- /dev/null +++ b/WMD/es/doc/projects.w.md @@ -0,0 +1,64 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210629, + "version" : 20210629 +}]] +# Proyectos + +Los siguientes proyectos hacen uso de WMarkDown de forma reconocida por sus autores y verificado por +el equipo de WMarkDown. + +[[links_group [{ + "images" : ["https://git.k3y.pw/Whalers/Whalers/-/raw/master/ArtBook/whalers.png"], + "link" : "https://whalers.k3y.pw", + "text" : "Whalers" +}, { + "images" : ["https://wdictionaries.k3y.pw/images/wdictionaries.png"], + "link" : "https://wdictionaries.k3y.pw/", + "text" : "WDictionaries" +}, { + "images" : ["https://gittutorials.k3y.pw/images/gittutorials.png"], + "link" : "https://gittutorials.k3y.pw/", + "text" : "GitTutorials" +}, { + "images" : ["https://kyman.k3y.pw/images/logo.png"], + "link" : "https://kyman.k3y.pw/", + "text" : "KyMAN Wlog" +}, { + "images" : ["https://kanvas.k3y.pw/images/kanvas.png"], + "link" : "https://kanvas.k3y.pw/", + "text" : "Kanvas" +}, { + "images" : [], + "link" : "https://pytutorials.k3y.pw/es/", + "text" : "PyTutorials" +}, { + "images" : ["https://gamepadsjs.k3y.pw/images/GamepadsJS-512.png"], + "link" : "https://gamepadsjs.k3y.pw/", + "text" : "GamepadsJS" +}] ]] + +> **NOTA**: Con el paso del tiempo puede que alguno de estos proyectos deje de funcionar o de estar +activo así como evolucionar y dejar de hacer uso de esta herramienta sin que el equpo de WMarkDown +lo sepa por lo que puede haber algún error, aunque se intentará que no los halla. + +Los siguientes proyectos son de los que WMarkDown se sirve para existir. + +[[links_group [{ + "images" : ["https://wdictionaries.k3y.pw/images/wdictionaries.png"], + "link" : "https://wdictionaries.k3y.pw/", + "text" : "WDictionaries" +}] ]] + +[[html_data { + "title" : "WMarkDown - Proyectos", + "url" : "https://wmarkdown.k3y.pw/es/projects.html", + "author" : "Tarsier, KyMAN", + "since" : 20210629, + "version" : 20210629, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,proyectos", + "description" : "Proyectos vinculados a WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/references.w.md b/WMD/es/doc/references.w.md new file mode 100755 index 0000000..1f35ffe --- /dev/null +++ b/WMD/es/doc/references.w.md @@ -0,0 +1,28 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210513, + "version" : 20210515 +}]] +# Referencias + +- mermaidJS: https://mermaid-js.github.io/mermaid/#/ + - Git: https://github.com/mermaid-js/mermaid + - npm: https://www.npmjs.com/package/mermaid +- MathJax: https://www.mathjax.org/ + - Git: https://github.com/mathjax/MathJax + - Wikipedia: https://es.wikipedia.org/wiki/MathJax +- highlighter.js: https://highlightjs.org/ + - Git: https://github.com/highlightjs/highlight.js/ + +[[html_data { + "title" : "GitTutorials - Referencias", + "url" : "https://gittutorials.k3y.pw/es/doc/references.html", + "author" : "Tarsier, KyMAN", + "since" : 20210513, + "version" : 20210515, + "key_words" : "Whalers,git,tutorial,gittutorials,referencias", + "description" : "Referencias con las que se llevó a cabo estos manuales.", + "project" : "GitTutorials", + "logo" : "https://gittutorials.k3y.pw/images/gittutorials.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/settings.w.md b/WMD/es/doc/settings.w.md new file mode 100755 index 0000000..8e0eb21 --- /dev/null +++ b/WMD/es/doc/settings.w.md @@ -0,0 +1,349 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210502, + "version" : 20210505 +}]] +# Configuración + +Todo esto que hemos comentado se llevará a cabo a partir de una configuración la cual reside en +múltiples partes del proyecto, y las mismas tendrán diferente prioridad a la hora de ser trabajadas, +pudiendo opacar parámetros o valores sobre otros. Esto está diseñado así para flexibilizar la +alteración de la configuración y que la configuración original persista. + +## Parámetros de configuración + +La configuración se dividirá en parámetros los cuales responden como un diccionario donde se les +pone un nombre como llave y luego con valor o conjunto de valores dependiendo del caso. Dichos +parámetros los vamos a ir trabajando a continuación. + +### default_value + +El valor por defecto hace alusión a un valor el cual no ha sido facilitado por nadie y que el propio +programa no es capaz de sacar, por lo que se le establece este valor por defecto. Es usado sobretodo +cara la configuración, entre otros aspectos, para valores que no se encontraron y no se les dio un +valor por defecto. + +> Dicho valor puede ser cualquier cosa y se aconseja que se implemente por un +administrador o desarrollador, en caso de no ser ninguno de ellos se aconseja no cambiar. + +Su valor por defecto es *null*. + +### nulls + +Este valor es de tipo Booleano y verifica si se admite, por defecto, respuestas nulas a la hora de +intentar acceder a un parámetro de la configuración. El permitir o no permitir valores nulos como +valor a una llamada de la configuración puede conllevar a variar el resultado. El no permitir nulos +no implica que no pueda responder un valor nulo puesto que es para gestionar el orden de priodidad +cara una posible respuesta. + +> Para información acerca de los niveles de la configuración ir a [#Niveles-de-prioridad-1 Niveles +de prioridad]. + +Pongamos un ejemplo, supongamos que tenemos un parámetro de configuración que no existe, y tenemos +la configuración por defecto, y lo llamamos. Si le ponemos un valor por defecto éste retornará dicho +valor por defecto, en caso contrario, retornará null aún a pesar de no tenerlo permitido, por no +haber otra opción de valor, cogiendo el valor por defecto establecido con el parámetro anterior. + +```php + +// Este ejemplo retornará "por_defecto". +echo "Con valor por defect: " . $wmarkdown->settings("no_existo", null, "por_defecto", false) . "
    \n"; + +// Mientras que éste otro retornará null. +echo "Sin valor por defect: " . $wmarkdown->settings("no_existo", null, null, false) . "
    \n"; + +``` + +### wmarkdown_root + +Nos indica la ruta absoluta a nuestro proyecto WMarkDown. + +### root + +Nos indica la ruta absoluta a nuestro proyecto donde queremos implementar el WMarkDown. + +### documentation_path + +Nos indica la ruta relativa desde la dirección establecida en el parámetro "root" de la +configuración donde se encuentran los ficheros de documentación WMarkDown. + +### html_files + +Indica la ruta relativa desde la dirección establecida en el parámetro "root" donde se encontrará la +pequeña base de datos JSON que almacena el Path de los ficheros HTML generados a partir de la +documentación. Dicho fichero será usado por el WMarkDown para identificar los ficheros HTML creados, +los cuales serán eliminados para su actualización cada vez que se ejecute el WMarkDown para generar +los HTML de la documentación. + +### public_path + +Indica la ruta relativa desde la dirección establecida en el parámetro "root" del directorio público +del proyecto donde establecer los archivos HTML que dan forma a los ficheros WMarkDown. + +### html_base + +Indica la ruta relativa desde la dirección establecida en el parámetro "root" donde se encuentra el +archivo HTML que se usará de base para generar todos los documentos HTML de la documentación. + +### default_modules + +Este parámetro implementa los diferentes módulos que se quieran aplicar al WMarkDown y los ordena a +partir de un diccionario. Su valor por defecto es el siguiente: + +```json +{ + "lists" : "\\WMarkDown\\Modules\\Lists", + "headers" : "\\WMarkDown\\Modules\\Headers", + "code_blocks" : "\\WMarkDown\\Modules\\CodeBlocks", + "paragraphs" : "\\WMarkDown\\Modules\\Paragraphs", + "font_formats" : "\\WMarkDown\\Modules\\FontFormats", + "checks" : "\\WMarkDown\\Modules\\Checks" +} +``` + +> Cambiar el orden de estos elementos puede conllevar a que se solapen por el patrón de búsqueda con +el que se gestionan, como por ejemplo los párrafos, que buscan todo conjunto de líneas juntas para +unificarlas en un único párrafo, pueden solapar cabeceras, listas, etc. + +### hash_alphabet + +Alfabeto a usar para generar los Hashes Random para generar identificadores automáticos no visibles +directamente sobre los usuarios finales. Este parámetro simplemente almacena caracteres con los que +trabajar para generar dichas cadenas aleatorias. El valor puede ser un String o un Array de +caracteres. + +Hay que tener en cuenta que al ser usado para determinar identificadores únicos entre diferentes +entornos y lenguajes, los resultados nunca podrán iniciarse como un caracter numérico y por lo +tanto, obliga a que exista por lo menos un caracter no numérico dentro de la cadena. + +> Se le puso la cadena de Base58 de Bitcoin con la idea de que los caracteres sean identificables a +simple vista, eliminando los caracteres que puedan dar lugar a confusión como la O mayúscula contra +el 0. + +> **IMPORTANTE**: Es importante destacar que ha de haber por lo menos dos caracteres diferentes, y +que repetir caracteres dentro de una misma cadena simplemente les dará a los caracteres repetidos +mayor probabilidad contra los no repetidos, así como a más repeticiones más probabilidad de que +salgan en las cadenas finales. El hacer uso de cadenas vacías o con un solo caracteres implicará la +creación de bucles infinitos por el hecho de no conseguir una cadena única. También cabe destacar +que solo permitirá caracteres comprendidos en el alfabeto inglés de la A a la Z tanto mayúsculas +como minúsculas, distinguiendolos como caracteres diferentes; dígitos y guiones bajos, el resto de +caracteres serán descartados de su uso. + +Ejemplos de implementación pueden ser los siguientes: + +```php + +// Aquí lo dejaríamos por defecto. +$wmarkdown = new WMarkDown(); + +// Aquí implementamos una cadena de caracteres reducida basada en una palabra. +$wmarkdown = new WMarkDown([ + "hash_alphabet" => "Hola_a_todos" +]); + +// Aquí cambiamos la cadena de Base58 por defecto a una Base64. +$wmarkdown = new WMarkDown([ + "hash_alphabet" => "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" +]); + +// Aquí cambiamos la cadena de Base58 por defecto a una Base64 pero como Array. +$wmarkdown = new WMarkDown([ + "hash_alphabet" => [ + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", + "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", + "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", + "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" + ] +]); + +``` + +Todas las opciones anteriores son válidas para funcionar. Ahora veamos ejemplos de resultados según +metamos unas cadenas u otras. + +```php + +$wmarkdown = new WMarkDown(); +$wmarkdown_b = new WMarkDown([ + "hash_alphabet" => "Haha" +]); +$wmarkdown_c = new WMarkDown([ + "hash_alphabet" => "¡Hola a todos!" +]); +$wmarkdown_d = new WMarkDown([ + "hash_alphabet" => [ + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", + "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", + "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", + "2", "3", "4", "5", "6", "7", "8", "9", "+", "/" + ] +]); + +$hashes = []; + +while(count($hashes) < 10) + $hashes[] = implode(", ", [ + $wmarkdown->get_hash(), + $wmarkdown_b->get_hash(), + $wmarkdown_c->get_hash(), + $wmarkdown_d->get_hash() + ]); +print_r($hashes); + +/* + Un ejemplo de resultado podría ser: + + Array + ( + [0] => Z6VqHQSjVai, HhHHaaHHhHH, saHloHoloot, H9CkFZsRRWi + [1] => aXGoD1FKsDf, aaHahahHaah, aoasoodooll, Ju3AT2FMolq + [2] => oiUAFV1yxts, ahaaaaaaaHa, taHtadaHsHs, kGYZhPE8jRj + [3] => xBiyMXuTcZ4, aahaHHHaaaH, soHoasdtolt, LniSyRb2Gib + [4] => cv5wY5rVRAH, hHhhaahhHaa, ddstoaolHod, bNDoLasg8WZ + [5] => ZnHW61uyJJQ, aHHHhaaHaah, atHltdltoto, OhFmtywPlge + [6] => bi5TNw5vc4p, HaHaHaHhaaa, HtloaaHtaHt, ZieE4Jj6gx6 + [7] => vNCPVpwm1YM, HHaaHaaaHHH, aodtsttHoda, NSrEx8mBZ8X + [8] => zYd5FJXkYK5, aaaaaaHahHa, dadoodootda, O4uZBdZB5U4 + [9] => rz4k1ydc9YR, aaaahaahaHa, oodaldatsao, eIFFpkdpmM4 + ) + +*/ + +``` + +Es importante mencionar que a menos caracteres distintos, mayor es la probabilidad de que se repitan +los Hashes Random y por tanto, mayor consumo relativo, además de correr el riesgo de entrar en un +bucle infinito por haber consumido todas las posibilidades aleatorias según le haga falta al +WMarkDown. + +Su valor por defecto es la cadena Base58 de Bitcoin, la cual es +*123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz* + +### hash_length + +Este parámetro indica la longitud de cada Hash Random que se vaya a crear, siendo mínimo 1 y máximo +los que se deseen. Hay que tener en cuenta que a menos caracteres más probabilidad de repetición, +además de mayor facilidad para acabar con todas las posibilidades dadas, y es importante tener en +cuenta dicho valor, sobretodo cuando trabajemos un número pequeño de caracteres para la creación de +los Hash Random. Un ejemplo de éste puede ser el siguiente: + +```php + +$wmarkdown = new WMarkDown(); +$wmarkdown_b = new WMarkDown([ + "hash_length" => 3 +]); +$wmarkdown_c = new WMarkDown([ + "hash_length" => 20 +]); +$wmarkdown_d = new WMarkDown([ + "hash_length" => 7 +]); + +$hashes = []; +while(count($hashes) < 10) + $hashes[] = implode(", ", [ + $wmarkdown->get_hash(), + $wmarkdown_b->get_hash(), + $wmarkdown_c->get_hash(), + $wmarkdown_d->get_hash() + ]); +print_r($hashes); + +/* + Un ejemplo de resultado puede ser el siguiente: + + Array + ( + [0] => aQEVtJ8Zmee, Ddd, w369wRfC7gcaik7c5SEP, u3thce2 + [1] => DPMWqquJvYm, m2h, CDFMWW2VoHdsK776p4Hq, p5NqBFt + [2] => VSmhZo8eFbs, jwz, rfTw2p8U5tUZGPDK6vVC, f4oybwX + [3] => itKA4e4Zo5a, mqg, AMLDJQW8CdHp7XwXWNnj, G2cQtuY + [4] => dMHcTSD8VH2, Uo9, X8ZLvrKdVUHr1ZDJnyCA, JJgW288 + [5] => hQBa83ER9yH, ZFN, EVwD2drQiy8akniWpuba, dYgaH5c + [6] => rqj9T3d3zXB, C9L, AuRPTjfp3usxLtAm3Q3N, Djy2RYm + [7] => siYZXPYEkHT, sCT, TiBjCAKGwNrP6vMqXdA6, MV62dUa + [8] => Ze3HBZFruaG, Lvk, YVMcpxFjZVcvrMz6JPwD, N2pwQFk + [9] => paoSrYYacZx, FB3, VVje5rZgQQTfxsuTFTa7, Zy4YVaT + ) +*/ + +``` + +Su valor por defecto es *11*. + +### special\_code\_blocks + +Este parámetro determina en un Array los bloques de código especiales, es decir, aquellos que pueden +ser usados sobre un entorno cliente para resolver o crear cosas, como puede ser una extensión JS +como por ejemplo MermaidJS para la creación de diagramas. Estos bloques se ignorarán para su +tratamiento profundo como el Syntax Highlighting entre otros procesos que puedan llevar. + +Su valor por defecto es *["mermaid"]*. + +### default_title + +Título por defecto para archivos que no contienen ninguna cabecera de referencia para ser nombrados. + +El valor por defecto es *"Unknown"*, por el hecho de desconocer el contenido del mismo. + +### title + +El título de una página Web que se presenta en la pestaña o barra de título por lo general viene el +nombre del sitio o concepto a mirar, acompañado en muchas ocasiones del contenido que se quiere +mostrar. En este caso se especifica el nombre del sitio, que por defecto es WMarkDown pero debe ser +cambiado por el nombre del proyecto donde se integre éste. + +## Fichero original + +El archivo de configuración original se encuentra en el directorio JSON que se encuentra en el +directorio raíz del proyecto, y viene siendo un fichero llamado +*[[ignore WMarkDown.settings.json]]*. Aquí se encontrará toda la configuración por defecto de la +aplicación. Si falta alguno de los parámetros de configuración la aplicación puede dar errores. + +Por defecto, dicho fichero es tal que así: + +```json +{ + "default_value" : null, + "nulls" : true, + "wmarkdown_root" : "/mnt/d/Projects/WMarkDown", + "root" : "/mnt/d/Projects/WMarkDown", + "documentation_path" : "/WMD", + "html_files" : "/JSON/html.files.json", + "public_path" : "/Public", + "html_base" : "/HTML/WMarkDown.base.html", + "default_modules" : { + "lists" : "\\WMarkDown\\Modules\\Lists", + "headers" : "\\WMarkDown\\Modules\\Headers", + "code_blocks" : "\\WMarkDown\\Modules\\CodeBlocks", + "paragraphs" : "\\WMarkDown\\Modules\\Paragraphs", + "font_formats" : "\\WMarkDown\\Modules\\FontFormats", + "checks" : "\\WMarkDown\\Modules\\Checks" + }, + "hash_alphabet" : "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz", + "hash_length" : 11, + "special_code_blocks" : ["mermaid"], + "default_title" : "Unknown", + "title" : "WMarkDown" +} +``` + +## Niveles de prioridad + +# Configuración dada en el *input* +# Creando un archivo JSON. +# Archivo JSON original. + +[[html_data { + "title" : "WMarkDown - Configuración", + "url" : "https://wmarkdown.k3y.pw/es/doc/settings.html", + "author" : "Tarsier, KyMAN", + "since" : 20210502, + "version" : 20210505, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,configuración,parámetros", + "description" : "Documentación y guía para gestionar la configuración de un WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/targets.w.md b/WMD/es/doc/targets.w.md new file mode 100755 index 0000000..628f621 --- /dev/null +++ b/WMD/es/doc/targets.w.md @@ -0,0 +1,200 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210502, + "version" : 20220402 +}]] +# Objetivos + +Aquí se incluirán los objetivos a realizar por los miembros del equipo, los Whalers, y se verán los +objetivos que aún faltan por alcanzar, así como todos aquellos objetivos alcanzados. + +## Tarsier, KyMAN y angelus + +Aquí ser pondrán dos columnas de Checkbox, las cuales indican, en el mismo orden en que está el +título de este apartado, los objetivos a cumplir, es decir, el primer Checkbox sería para Tarsier, +el segundo para KyMAN y el tercero a angelus. + +- [ ] [X] [ ] Crear una cuenta GitHub. + - [ ] [X] [ ] Publicar el proyecto. + - [ ] [X] [ ] Poner el proyecto para ambos como desarrolladores. +- [ ] [ ] [ ] Crear página de Crowdfounding + - [ ] [ ] [ ] Añadir las direcciones de Crowdfounding. + +## Tarsier, KyMAN y/o angelus + +Aquí pasa un poco como en el anterior caso, la diferencia es que con tal de que uno de los dos halla +cumplido el objetivo llegaría para considerarlo completado. + +- [ ] [X] [ ] Testear que todo esté correcto. +- [ ] [ ] [ ] Mirar el funcionamiento de los Crypto Core QT o conseguir direcciones para Crowdfounding. +- [-] [X] [ ] Colocar los logos de Tarsier. + +## Tarsier + +- [ ] Generar los estilos genéricos a partir de los estilos base que cree KyMAN. +- [-] Generar el logo del proyecto. + - [ ] Vectorizarlo en entorno cuadrado (SVG). + - [ ] Crear versión sólo negro y trasparente para fuente (SVG). + - [ ] Crear versión a color 32x32 (PNG). + - [ ] Crear versión a color 180x180 (PNG). + - [ ] Crear versión a color 192x192 (PNG). + - [ ] Crear versión a color 270x270 (PNG). + - [ ] Crear versión a color 512x512 (PNG). +- [ ] Establecer gama de colores en la configuración del SCSS acordes con el logo. + - *Cambiar colores/tonos del logo o del SCSS hasta que queden acordes e iguales.* + - *Se pueden usar estrategias de contrarios y demás.* +- [ ] Montar los estilos responsitivos. +- [ ] Montar SEO. + +## KyMAN + +- [X] Renombrar todo el proyecto a WMarkDown. +- [X] Proponerle el sistema de Crowdfounding. + - *por direcciones independientes según cada parte y por lo que quiera colaborar el donante.* + - *Direcciones únicas y luego suministramos o dividimos.* + - **Aprobado**. +- [X] Montar los estilos base. + - [X] Implementar fuentes. + - [X] Establecer los ficheros de SASS. + - *Se incluye la configuración SCSS.* + - [X] Iconificar. + - [X] Dar formato final. +- [-] Montar los módulos: + - [X] Cabeceras. + - [X] Menú sobre cabeceras. + - [X] Anidar cabeceras según nivel en el menú. + - *No está anidado pero sí usa un sistema de niveles.* + - [X] Ocultar y mostrar menús. Gestionar estilos. + - [X] Párrafos. + - [X] Formato de texto. *Solo negritas y cursivas.* + - [X] Bloques de código o contenido plano. + - [X] Identificar bloques de contenido plano. + - [X] Implementar Syntax Highlighter. + - [X] Implementar LaTeX, con seudónimo "Maths". + - [X] Checkbox, Radio Buttons y Ticks. + - [-] Listas. + - [X] Gestionar anidamientos en HTML sobre UL y OL. + - [ ] Añadir gráfica de evolución sobre una lista con Checks. + - [X] Inclusión, implementación o importación de múltiples ficheros modo OnePage. + - [X] Establecer vínculo Hash y de fichero. + - [X] Quotes. + - [X] Implementar parámetros. + - [X] Links. + - [X] Links normales. + - [X] Links MarkDown. + - [X] Links MediaWiki. + - [X] Documentar. + - [-] Multimedia. + - *Los IFRAME no son gestionables desde CSS por CORS. Dependen de su contenedor.* + - [X] Imágenes. + - [X] Vídeos. + - [X] Montar vídeos en *single* y *múltiple*. + - [X] Montar gestión del MIME en PHP y JS. + - [X] Montar gestión dinámica sin carga inicial de los MIME y las extensiones. + - [X] Vídeos sobre plataformas embedadas. + - [X] Youtube. + - [X] Vimeo. + - [X] Facebook. + - *Da problemas con certificados autofirmados.* + - [X] Twitch. + - *Da problemas con certificados autofirmados.* + - [X] Audios. + - [X] Audios sobre plataformas embedadas. + - [X] Soundcloud. + - **No puede agregarse a partir de la URL.** + - [ ] Sliders. + - [X] Gestionar "NOSCRIPT" para SEO en los IFRAME. + - [X] Cambiar punto de montaje de los Media a un Módulo completo independiente. + - [-] Crear sistema de diccionarios para las páginas. + - [X] Montar gestión de palabras sobre TextNodes. + - [X] Gestionar ignorador de espacios. + - [X] Gestionar GUI de búsqueda. + - [X] Corregir Scroll. + - [X] Aplicar resultados de patrones a los resultados. + - [ ] Gestionar múltiples diccionarios. + - *Inicialmente, pensando en anidaciones.* + - [X] Montar Módulo de escapes. +- [X] Implementar. + - [X] Sistema de gestión de diagramas. + - *Elijo Mermaid contra JS, su versión original por ser un resultado HTML.* + - [X] Syntax Highlighter. + - *Elijo "highlighter.js", una librería ligera, abierta y gratuíta para JS en navegador.* + - [X] Implementar intérprete de LaTeX. +- [ ] Montar el fichero JSON para gestión de eliminación de ficheros para actualizarlos. + - [ ] Gestionar idiomas a partir de un elemento del Path. + - [ ] Montar opción de "delete" para Git y así no montar ni JSON y HTML en Git. + - *Sería opcional y para que no halla conflictos Merge en Git.* +- [ ] Cambiar de un sistema de diccionario a un sistema vectorial el parámetro de la configuración "default_modules". + - *Se requiere por compatibilidad de orden con otros medios como Python.* +- [X] Montar textos para el HTML base. +- [X] Establecer sistema para los SEO Metas contra el HTML base. +- [ ] Añadir sistema de comentarios, Likes y visualizaciones. + - [ ] Gestionar el SQLite. + - [ ] Gestionar PHP. + - [ ] Gestionar los procedimientos almacenados (Servicios). + - [ ] Gestionar controladores. + - [ ] Gestionar JS. + - [ ] Gestión de visitas. + - [ ] Gestión de usuarios. + - [ ] Gestión de Likes. + - [ ] Gestión de comentarios. +- [X] Documentar instalación del GitLab contra un Proxy Nginx externo. +- [X] Generar un archivo PHP Updater. + - *Ha de Checkar nuevas versiones completas desde Git.* + - *Ha de Checkar que si hay versiones nuevas para compilar la documentación.* + - *Sistema diseñado a partir de la idea de __inoro__.* +- [ ] Añadir los ficheros de los componentes externos al CDN. +- [X] Externalizar en todos los proyectos que deriven de éste todos los parámetros de configuración a Secrets como Common. + - *Esto permitirá compatibilizar proyectos locales con los de los servidores.* + - *La idea es que solo halla que hacer "git pull" en los servidores.* +- [ ] Montar sistema de descarga en documento de la información en los siguientes formatos. + - [ ] Texto plano. + - [ ] WMarkDown. + - [ ] HTML. + - [ ] XML. + - [ ] MySQL (MariaDB). + - [ ] SQL Server. + - [ ] SQLite. + - [ ] DOC + - [ ] ODT + - [ ] PDF +- [ ] Documentar: + - [ ] Secrets. + - [ ] Implementación. + - [ ] Creación de un complemento. +- [X] Montar Padding al contenido siguiendo la idea de inoro. +- [ ] Aplicar I18N contra entorno de variables PHP. +- [ ] Montar detector y cambiador de Versión Móvil. +- [ ] Montar responsitividad por rangos en el lado más estrecho. +- [ ] Montar modificador de tamaño de letra. +- [-] Montar el ScriptsAnalyzer. + - [-] Montar el analizador de Scripts: + - [X] PHP. + - [X] JS/ECMA. + - [ ] Python. + - [ ] SQL (MariaDB, SQLite y SQL Server). + - [-] C#. + - [X] Montar Paths excluídos. + - [X] Montar Paths incluídos. +- [X] Añadir Script automático para dar Status al logo (loading, error, ok). +- [X] Quitar el HTML resultante de la compilación del WMD y precompilar en el servidor. + - *El objetivo es que se vea claramente, en el Git, el porcentaje de código real.* +- [X] Arreglar el Bug 20221012. +- [X] Agregar el Pusher. + +## angelus + +- [ ] Completar documentación haciendo de mano inocente. + +[[html_data { + "title" : "WMarkDown - Objetivos", + "url" : "https://wmarkdown.k3y.pw/es/doc/targets.html", + "author" : "Tarsier, KyMAN", + "since" : 20210502, + "version" : 20220402, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,objetivos", + "description" : "Objetivos para llevar a cabo el proyecto.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/es/doc/tarsier.w.md b/WMD/es/doc/tarsier.w.md new file mode 100755 index 0000000..16d3161 --- /dev/null +++ b/WMD/es/doc/tarsier.w.md @@ -0,0 +1,3 @@ +@ Pruebas del Sr. Tarsier + +Aquí pongo lo que me salga de los cojones. diff --git a/WMD/es/index.w.md b/WMD/es/index.w.md new file mode 100755 index 0000000..e3d511e --- /dev/null +++ b/WMD/es/index.w.md @@ -0,0 +1,67 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210502, + "version" : 20210513 +}]] +# WMarkDown + + +WMarkDown es un pequeño conjunto de librerías que aprovechan la falta de estandarización de MarkDown +y MediaWiki para establecer un estándar de formato de texto para documentar proyectos, aplicaciones +o simplemente mostrar información en HTML procesado a partir de una mezcla de ambos lenguajes. + +WMarkDown, de primeras, está desarrollado en PHP, aunque puede extenderse a otros lenguajes como JS, +Python, C#, Java y similares por su estructuración interna, de forma fácil y sencilla. También se +puede ayudar de librerías externas como MermaidJS para generar diagramas, entre otras posibles +opciones. + +El nombre de WMarkDown viene de sus desarrolladores, el equipo Whalers, y como nombre final sería +Whalers MarkDown, compactando el nombre de los desarrolladores WMarkDown y compactando en siglas, +WMD. La extensión de los ficheros WMarkDown sería ".w.md" para compatibilizar con la extensión +estandar de MarkDown. + +## ¿Cómo funciona? + +Este sistema se basa en la compilación o formateo de un String, o conjuntos de String en caso de +estar fragmentado, los cuales pasarán, a partir de un archivo HTML original con las partes +diferenciadas sobre unas variables internas las cuales se usarán para establecer la información del +fichero HTML final, tras el formateo del String que conformaría el WMarkDown. + +En este caso, para llevar a cabo dicha operación, y como idea de integración documental sobre +proyectos, se crea un directorio donde se añaden los archivos MarkDown o WMarkDown, pudiendo usar +directorios para ordenarlos y estructurarlos, y tras ello, cada vez que se ejeucte el programa +WMarkDown, compila dichos ficheros en HTML y los integra dentro del proyecto de forma directa. + +[[header_level 0]] +[[include /WMD/es/doc/projects.w.md]] + +[[header_level 0]] +[[include /WMD/es/doc/settings.w.md]] + +[[header_level 0]] +[[include /WMD/es/doc/faq.w.md]] + +[[header_level 0]] +[[include /WMD/es/doc/modules.w.md]] + +[[header_level 0]] +[[include /WMD/es/doc/bugs.w.md]] + +[[header_level 0]] +[[include /WMD/es/doc/targets.w.md]] + +[[header_level 0]] +[[include /WMD/es/doc/references.w.md]] + +[[html_data { + "title" : "WMarkDown - Documentación completa", + "url" : "https://wmarkdown.k3y.pw/es/", + "author" : "Tarsier, KyMAN", + "since" : 20210502, + "version" : 20210513, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación", + "description" : "Documentación del proyecto WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/WMD/index.w.md b/WMD/index.w.md new file mode 100755 index 0000000..8f575fc --- /dev/null +++ b/WMD/index.w.md @@ -0,0 +1,38 @@ +[[post_data { + "author" : "KyMAN", + "since" : 20210628, + "version" : 20210628 +}]] +# WMarkDown + +[[links_group [{ + "images" : ["https://i.imgur.com/im1o0gc.png"], + "link" : "/es/", + "text" : "Español", + "self" : true +}] ]] + +[[header_level 0]] +[[include /WMD/es/doc/projects.w.md]] + +[[header_level 0]] +[[include /WMD/es/doc/bugs.w.md]] + +[[header_level 0]] +[[include /WMD/es/doc/targets.w.md]] + +[[header_level 0]] +[[include /WMD/es/doc/references.w.md]] + +[[html_data { + "title" : "WMarkDown - Idioma", + "url" : "https://wmarkdown.k3y.pw/", + "author" : "Tarsier, KyMAN", + "since" : 20210628, + "version" : 20210628, + "key_words" : "Whalers,MarkDown,MediaWiki,WMarkDown,documentación", + "description" : "Documentación del proyecto WMarkDown.", + "project" : "WMarkDown", + "logo" : "https://wmarkdown.k3y.pw/images/wmarkdown.png", + "language" : "es" +}]] diff --git a/push.bat b/push.bat new file mode 100755 index 0000000..ab8e9c4 --- /dev/null +++ b/push.bat @@ -0,0 +1,12 @@ +@echo off + +if "%~1" == "" ( + set /p text="Text commit: " +) else ( + set text=%~1 +) + +git pull +git add . +git commit -m "%text%" +git push \ No newline at end of file diff --git a/push.sh b/push.sh new file mode 100755 index 0000000..63a9673 --- /dev/null +++ b/push.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +text="$1" + +if [ -z "$1" ]; then + echo "Commit text:" + read text +fi + +git pull +git add . +git commit -m "$text" +git push \ No newline at end of file