Réécriture du wall de deblan
Le colorisateur syntaxique que je met à disposition des développeurs a été complétement refait. L'interface a radicalement changé et je m'appui encore une fois sur le bootsrap Twitter. J'en ai profité pour rendre l'envoi de code plus simple et plus rapide, et je met à disposition le code suivant pour envoyer et récupérer rapidement tout ça depuis votre application : afficher le code.
<?php
class WallException extends Exception {}
class Wall {
private $curl = null;
private $language = 'html';
private $code = null;
private $title = null;
private $showLines = true;
private static $instance = null;
public static function getInstance() {
return (self::$instance === null) ? self::$instance = new Wall() : self::$instance;
}
public function __construct() {
$this->curl = curl_init();
}
public function setCode($code) {
$this->code = $code;
return $this;
}
public function setCodeFromFile($file) {
$this->code = (file_exists($file) && is_readable($file)) ? file_get_contents($file) : '';
return $this;
}
public function getCode() {
return $this->code;
}
public function setLanguage($language) {
$this->language = $language;
return $this;
}
public function getLanguage() {
return $this->language;
}
public function setTitle($title) {
$this->title = $title;
return $this;
}
public function getTitle() {
return $this->title;
}
public function setShowLines($showLines) {
$this->showLines = (bool)$showLines;
return $this;
}
public function getShowLines() {
return $this->showLines;
}
public function paste() {
$options = array(
CURLOPT_URL => 'http://wall.deblan.fr/',
CURLOPT_HEADER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query(array(
'code' => $this->getCode(),
'language' => $this->getLanguage(),
'title' => $this->getTitle(),
'line' => $this->getShowLines()
))
);
curl_setopt_array($this->curl, $options);
$header = curl_exec($this->curl);
if(curl_errno($this->curl)) {
throw new WallException('Curl error: '.curl_error($this->curl));
}
else {
$http_code = curl_getinfo($this->curl, CURLINFO_HTTP_CODE);
if(in_array($http_code, array(301, 302, 200))) {
preg_match('`location: ([^\s]+)`i', $header, $matches);
return 'http://wall.deblan.fr'.trim(array_pop($matches));
} else {
throw new WallException('HTTP header error: unexpected response code ('.$http_code.')');
}
}
}
}
try {
$wall = Wall::getInstance()
->setCodeFromFile(__FILE__)
// html, js, xml, javascript, sql,
// perl, c, asp, python, bash
// actionscript, texte
->setLanguage('html')
->setTitle('foo')
->paste();
echo 'Url: '.$wall;
}
catch(WallException $e) {
echo $e->getMessage();
}

Nouvelle version de Gist
Je viens de publier une nouvelle version de Gist, une application en ligne qui permet de pub…

Gist est dans la place !
Une nouvelle version de mon wall vient d'être mise ligne ! Bienvenue GIST. Du c…

Murph v1.23 et Custom Menu v3.11
Je n'ai pas écrit d'articles depuis quelques temps car mes semaines sont très chargées. Pour…
- Le design est clairement plus sympa. Plus propre plus web 2.0 et ça s'accord aussi mieux avec le blog.
- Sympa cette nouvelle version. L'idée de l'upload est bien penser.
- Les fonctions d'édition et de téléchargement me manquaient aussi, ça nous évitera les copiés/collés hasardeux…
- Ce qui serait vraiment bien c'est qu'avant de donner ton avis tu apprennes que ce n'est pas le BooSTrap Twitter, mais le BooTStrap Twitter, tu auras moins l'air idiot quand tu voudras faire le mec qui connait! ;)
- oh qu'il est mignon lui =)