Oznámení

Provoz fóra byl ukončen

volání texy! z příkazového řádku

před 14 lety

mlebeda
Člen | 1

Nechci používat web server, ale překládat z příkazového řádku.

Existuje nějaká přímější cesta než volání z jiného programu?

Zatím jsem to vyřešil takto:

#!/usr/bin/perl
use locale;

$texy_path = '/home/martin/bin/texy-pre4rc/texy/texy.php';

foreach $i (@ARGV) {
   do_texy($i);
}

sub do_texy () {
   ($file_in) = @_;
   $file_out = $file_in;
   $file_out =~ s/(.*).txt/\1.html/;

   #########################################

   print "$file_in -> $file_outn";

   open(PHP,"|php > /dev/null");

   print PHP '<?php'."n";
   print PHP 'if (version_compare(phpversion(), '4.3.3', '<')) '."n";
   print PHP '  die('Texy! requires PHP version 4.3.3 or higher');'."n";
   print PHP 'require_once("'.$texy_path.'.");'."n";
   print PHP '$texy = &new Texy();'."n";
   print PHP '$texy->utf = false;'."n";
   print PHP '$texy->linkModule->root         = '';'."n";
   print PHP '$texy->linkModule->imageOnClick = 'return !popup(this.href)';'."n";
   print PHP '$texy->imageModule->root        = 'images/'; '."n";
   print PHP '$texy->imageModule->linkedRoot  = 'images/big/';'."n";
   print PHP '$texy->formatterModule->baseIndent  = 1; '."n";
   print PHP '$texy->formatterModule->lineWrap    = 60;  '."n";
   print PHP '$text = file_get_contents(''.$file_in.'');'."n";
   print PHP '$html = $texy->process($text);'."n";
   print PHP 'file_put_contents ( "'.$file_out.'" , $html);'."n";
   print PHP '?>'."n";

   close(PHP);
}

Editoval mlebeda (11. 4. 2005 11:39)

před 14 lety

David Grudl
Nette Core | 6806

Pro zobrazování pod windows používám dávkový soubor .BAT, který vypadá asi takto::

@c:\php\php.exe -q D:\...\show_texy.php file=%1 > D:\...\output.html

a zpracovávaný show_texy.php:

require_once('texy.php');

$texy = &new Texy();
echo $texy->process( file_get_contents($_GET['file']) );

Je to v podstatě velmi podobné řešení.