Пример #1
0
 public function format($str)
 {
     if (module_const('is_cache', false)) {
         $store_key = array('__hatenaformat_format', $str);
         if (Store::has($store_key)) {
             return Store::get($store_key);
         }
     }
     $str = HatenaSyntax::render($str, Text::dict(module_const('option')) + array('headerlevel' => 3, 'htmlescape' => true, 'linktitlehandler' => 'HatenaFormat::linktitleHandler', 'keywordlinkhandler' => 'HatenaFormat::keywordlinkHandler'));
     if (module_const('is_cache', false)) {
         Store::set($store_key, $str, self::CACHE_EXPIRE);
     }
     return $str;
 }
Пример #2
0
 protected function __fm_description__()
 {
     return HatenaSyntax::render($this->description());
 }
Пример #3
0
    	$CON = preg_replace(array_fill(0, count($htmlcodes[1]) + 1, '/{HTML}/'), $htmlcodes[1], $CON, 1);
    */
}
plugin('formatEnd');
plugin('formatFinished');
// Loading template. If does not exist, use built-in default
$html = file_exists($TEMPLATE) ? file_get_contents(clear_path($TEMPLATE)) : fallback_template();
// including pages in pure HTML
while (preg_match('/{include:([^}]+)}/U', $html, $m)) {
    $inc = str_replace(array('{html}', '{/html}'), '', @file_get_contents("{$PG_DIR}{$m['1']}.txt"));
    $html = str_replace($m[0], $inc, $html);
}
plugin('template');
$html = preg_replace('/\\{([^}]* )?plugin:.+( [^}]*)?\\}/U', '', $html);
// get rid of absent plugin tags
$hs_ex = new HatenaSyntax();
//this part is setting on Template Tag
$tpl_subs = array('HOME_URL' => '?page=MainPage', 'INFO_URL' => '?page=infomation', 'MEMBER_URL' => '?page=members', 'ARCHIVES_URL' => '?page=MainPage&Archives=1', 'CONTACT_URL' => '?page=contact_us', 'MAKE_NEW_ARTICLE' => '<a href="?blog=true&page=_Blog__' . date("YmdHmi") . '&action=edit">ブログ新規記事を作成する</a>', 'SYNTAX_EXPLAIN' => $action == "edit" || $preview ? preg_replace("/\\!--/", "<br /><a href='#syntax_explain'>▲先頭に戻る</a><hr />", $hs_ex->ConvertHatenaSyntax(file_get_contents("syntax_explain.txt"))) : "", 'TOOLBAR' => isset($_SESSION['jichikaiLogin']) ? $action == "edit" || $preview ? file_get_contents("plugins/toolbar.html") : "" : "", 'BlogArticleList' => $bl->BlogList(5), 'EditInfo' => isset($_SESSION['jichikaiLogin']) ? "|{MAKE_NEW_ARTICLE}|{EDIT}|" : "{LOGIN}", 'LOGIN' => '|<form action="logincheck.php" method="post"><input name="backto" type="hidden" value="?page=' . $page . '" /><label>ユーザー名 <input name="user" type="text" size="20" /></label>|<label>パスワード <input type="password" name="pass" size="20" /></label>|<input type="submit" size="15" value="ログイン" /></form>|', 'HEAD' => $HEAD . ($action ? '<meta name="robots" content="noindex, nofollow"/>' : ''), 'SEARCH_FORM' => '<form action="' . $self . '" method="get"><span><input type="hidden" name="action" value="search"/><input type="submit" style="display:none;"/>', '\\/SEARCH_FORM' => "</span></form>", 'SEARCH_INPUT' => '<input type="text" name="query" value="' . h($query) . '"/>', 'SEARCH_SUBMIT' => "<input class=\"submit\" type=\"submit\" value=\"{$T_SEARCH}\"/>", 'HOME' => "<a href=\"{$self}?page=" . u($START_PAGE) . "\">{$T_HOME}</a>", 'RECENT_CHANGES' => "<a href=\"{$self}?action=recent\">{$T_RECENT_CHANGES}</a>", 'ERROR' => $error, 'HISTORY' => $page ? "<a href=\"{$self}?page=" . u($page) . "&amp;action=history\">{$T_HISTORY}</a>" : "", 'PAGE_TITLE_HEAD' => preg_match("/_Blog__/", $page) ? $blogTitle : ($_GET["Archives"] ? "Archives" : h($TITLE)), 'PAGE_URL' => u($page), 'EDIT' => !$action ? "<a href=\"{$self}?page=" . u($page) . "&amp;action=edit" . (is_writable("{$PG_DIR}{$page}.txt") ? "\">{$T_EDIT}</a>" : "&amp;showsource=1\">{$T_SHOW_SOURCE}</a>") : "", 'WIKI_TITLE' => h($WIKI_TITLE), 'LAST_CHANGED_TEXT' => $last_changed_ts ? $T_LAST_CHANGED : "", 'LAST_CHANGED' => $last_changed_ts ? date($DATE_FORMAT, $last_changed_ts + $LOCAL_HOUR * 3600) : "", 'CONTENT' => $action != "edit" ? $_GET["Archives"] ? $ARCON : $CON : "", 'TOC' => $TOC, 'SYNTAX' => isset($_SESSION['jichikaiLogin']) ? $action == "edit" || $preview ? "<a href='javascript:void(0);' onClick='Show_Syntax(this)'>▼記法について</a>" : "" : "", 'SHOW_PAGE' => $action == "edit" || $preview ? "<a href=\"{$self}?page=" . u($page) . "\">{$T_SHOW_PAGE}</a>" : "", 'COOKIE' => '<a href="' . $self . '?page=' . u($page) . '&amp;action=' . u($action) . '&amp;erasecookie=1">' . $T_ERASE_COOKIE . '</a>', 'CONTENT_FORM' => isset($_SESSION['jichikaiLogin']) ? $CON_FORM_BEGIN : "", '\\/CONTENT_FORM' => isset($_SESSION['jichikaiLogin']) ? $CON_FORM_END : "", 'CONTENT_TEXTAREA' => isset($_SESSION['jichikaiLogin']) ? $CON_TEXTAREA : "", 'CONTENT_SUBMIT' => isset($_SESSION['jichikaiLogin']) ? $CON_SUBMIT : "", 'CONTENT_PREVIEW' => isset($_SESSION['jichikaiLogin']) ? $CON_PREVIEW : "", 'RENAME_TEXT' => $RENAME_TEXT, 'RENAME_INPUT' => $RENAME_INPUT, 'EDIT_SUMMARY_TEXT' => $EDIT_SUMMARY_TEXT, 'EDIT_SUMMARY_INPUT' => $EDIT_SUMMARY, 'FORM_PASSWORD' => $FORM_PASSWORD, 'FORM_PASSWORD_INPUT' => $FORM_PASSWORD_INPUT);
foreach ($tpl_subs as $tpl => $rpl) {
    // substituting values
    $html = template_replace($tpl, $rpl, $html);
}
foreach ($tpl_subs as $tpl => $rpl) {
    // substituting values
    $html = template_replace($tpl, $rpl, $html);
}
header('Content-type: text/html; charset=UTF-8');
die($html);
// Function library
function h($t)
{
Пример #4
0
 /**
  * パッケージの詳細
  * @param string $package_name パッケージ名
  * @param string $path リポジトリのパス
  * @request string $lang ロケール
  * @request string $tag タグ
  * @context OpenpearPackage $package パッケージ
  * @context string $body 説明
  */
 public function document_browse($package_name, $path = '')
 {
     $lang = $this->in_vars('lang', Gettext::lang());
     if (empty($path)) {
         $this->redirect_method('document_browse', $package_name, '/' . $lang . '/README');
     } else {
         if (strlen($path) > 4) {
             $lang = substr($path, 1, 2);
         }
     }
     $package = C(OpenpearPackage)->find_get(Q::eq('name', $package_name));
     $path = rtrim(ltrim($path, ' /.'), '/');
     $root = File::absolute(OpenpearConfig::svn_root(), implode('/', array($package->name(), 'doc')));
     $repo_path = File::absolute($root, $path);
     $this->vars('package', $package);
     try {
         $body = Subversion::cmd('cat', array($repo_path));
     } catch (Exception $e) {
         $body = '';
     }
     if (empty($body)) {
         Http::status_header(404);
         $body = '* Not found.' . PHP_EOL;
         $body .= 'Requested page is not found in our repositories.';
     }
     $this->vars('lang', $lang);
     $this->vars('body', HatenaSyntax::render($body));
     $this->vars('tree', Subversion::cmd('list', array($root . '/' . $lang), array('recursive' => 'recursive')));
     $this->add_vars_other_tree($package_name, 'doc');
 }
Пример #5
0
<?php

include_once dirname(__FILE__) . '/../lib/HatenaSyntax.php';
$str = '*hogehoge

fugafuga';
var_dump(HatenaSyntax::parse($str));
/*
object(HatenaSyntax_Node)#217 (2) {
  ["type":protected]=>
  string(4) "root"
  ["data":protected]=>
  array(3) {
    [0]=>
    object(HatenaSyntax_Node)#213 (2) {
      ["type":protected]=>
      string(6) "header"
      ["data":protected]=>
      array(2) {
        ["level"]=>
        int(0)
        ["body"]=>
        array(8) {
          [0]=>
          string(1) "h"
          [1]=>
          string(1) "o"
          [2]=>
          string(1) "g"
          [3]=>
          string(1) "e"
Пример #6
0
<?php

require 'plugins/original_HatenaSyntax.php';
$h = new HatenaSyntax();
$t = "|test|aaaa|\n|a|[http://google.com]|";
echo $h->ConvertHatenaSyntax($t);
Пример #7
0
    foreach ($lines as &$line) {
        $line = htmlspecialchars($line, ENT_QUOTES, 'utf-8');
    }
    $body = join(PHP_EOL, $lines);
    return '<pre class="superpre ' . htmlspecialchars($type, ENT_QUOTES, 'utf-8') . '">' . PHP_EOL . $body . '</pre>';
}
function keywordLinkHandler($path)
{
    return './' . $path;
}
function linkTitleHandler($url)
{
    return $url;
}
// オプションは全て省略可。第二引数自体も省略可。
echo HatenaSyntax::render($str, array('headerlevel' => 3, 'id' => 'hoge', 'htmlescape' => false, 'sectionclass' => 'section', 'footnoteclass' => 'footnote', 'keywordlinkhanlder' => 'keywordLinkHandler', 'superprehandler' => 'spreHandler', 'linktitlehandler' => 'linkTitleHandler'));
/* 結果
<div class="section">
<h3>header1<a name="ea703e7aa1efda0064eaa507d9e8ab7e_header_0" id="ea703e7aa1efda0064eaa507d9e8ab7e_header_0"></a></h3>
<div class="toc"><ol>
<li>
<a href="#ea703e7aa1efda0064eaa507d9e8ab7e_header_0">header1</a>
<ol>
<li>
<a href="#ea703e7aa1efda0064eaa507d9e8ab7e_header_1">header2</a>
<ol>
<li><a href="#ea703e7aa1efda0064eaa507d9e8ab7e_header_2">blockquote header</a></li>
</ol>
</li>
</ol>
</li>
Пример #8
0
 public function setChangelog($value)
 {
     $this->pm('changelog', HatenaSyntax::render($value, $this->_hatena_config));
 }
Пример #9
0
$text = <<<EOS
*s1* hoge
a

*s2* fuga
b

*s3* piyo
c

EOS;
$nodes = HatenaSyntax::parseAsSections($text);
foreach ($nodes as $node) {
    $name = HatenaSyntax::getSectionName($node);
    echo "<!--{$name}-->\n";
    echo HatenaSyntax::renderNode($node);
    echo "\n";
}
/* 結果

<!--s1-->
<div class="section">
<h1> hoge<a name="0a5f00d24e95fc67f4933ba9d374a09f_header_0" id="0a5f00d24e95fc67f4933ba9d374a09f_header_0"></a></h1>
<p>a</p>

</div>

<!--s2-->
<div class="section">
<h1> fuga<a name="685dfe890c0b3e6cb12683009061a63d_header_0" id="685dfe890c0b3e6cb12683009061a63d_header_0"></a></h1>
<p>b</p>
Пример #10
0
<?php

include_once dirname(__FILE__) . '/../t.php';
$t = new lime_test();
$hs = new HatenaSyntax();
$node = $hs->parse('*hoge*header');
$t->is($hs->getSectionName($node), 'hoge');
$node = $hs->parse('*hoge');
$t->is($hs->getSectionName($node), '');
$node = $hs->parse('**hoge*header');
$t->is($hs->getSectionName($node), '');
$node = $hs->parse('');
$t->pass();
$nodes = $hs->parseAsSections("\n*hoge\n*fuga\n*piyo");
$t->is(count($nodes), 3);
$nodes = $hs->parseAsSections("*hoge\n\nfuga");
$t->is(count($nodes), 1);
$title = $hs->getSectionTitle($hs->parse('*hahaha'));
$t->is($title, 'hahaha');
$title = $hs->getSectionTitle($hs->parse('*hoge*s[http://google.com]'));
$t->is($title, 'shttp://google.com');
$hasTopHeader = $hs->hasTopHeader($hs->parse('*hoge'));
$t->ok($hasTopHeader);
$hasTopHeader = $hs->hasTopHeader($hs->parse('hoge'));
$t->ok(!$hasTopHeader);
$hasSeparator = $hs->hasSeparator($hs->parse('* fuga'));
$t->ok(!$hasSeparator);
$hasSeparator = $hs->hasSeparator($hs->parse("* hoge\n====\nhahaha"));
$t->ok($hasSeparator);
$node = $hs->separate($hs->parse("* hoge\n====\nhahaha"));
$t->is(count($node->getData()), 2);