[TxMt] bundle command

Oliver Taylor ollieman at gmail.com
Sat Feb 25 08:14:02 UTC 2006


I'm working on a bundle command (see below) that converts a plain- 
text document (screenplay) to a PHP file for conversion to PDF via  
FPDF (http://www.fpdf.org). Everything is working just fine except  
for two things I just can't figure out--for the record, this code was  
given to me by Allen for an HTML conversion and I've repurposed it  
for this.

The first problem I'm having is with the very last line of code. The  
idea is to get safari to open the generated document in Safari and  
process it as a web-page. Because $DST seems to output the file-path  
I can't just have it open "http://localhost/example.php", which is  
what I want. How do I do that? Is it in the manual, 'cause I missed  
that part.

The second question is regarding the 19th line of code:

$this->Cell(5.5,.18," XXXX ",0,0,'L',0);

I want to know if there is a way to define the "XXXX" bit in the  
document itself with something like:

$header = example

How would that be done?

Thanks in advance, you guys are really helping make this bundle kick  
butt.

-------------------------------
# first figure out a name for the result
NAME="${TM_FILENAME:-untitled}"
BASENAME="${NAME%.*}"
DST="/Library/WebServer/Documents/$BASENAME"

# everything we output within { … } is written to the PHP file via  
redirection (see line with the })
{
# first output PHP header
cat <<HEAD
<?php
require("fpdf/fpdf.php");

class PDF extends FPDF
{
//Page header
function Header()
{
     //Move to the right
     \$this->Cell(5.5,.18," XXXX ",0,0,'L',0);
     //Title
     \$this->Cell(.5,.18,\$this->PageNo(),0,2,'R',0);
	\$this->ln(.32);
}
}

\$pdf=new PDF("P","in","Letter");
\$pdf->SetMargins(1.5,.5,1);
\$pdf->AddPage();
\$pdf->SetFont("Courier","",12);

HEAD

# then PHP body (converted from document)
perl -pe '
	s/"/\\"/g; #escape quotes
	s/\/\/(.*)\/\/|^\/\/(.*)//g; # strip out non-printing comments
	s/^(\t{4})([^\t].*)$/\$pdf->Cell(2);\$pdf->MultiCell(0,.18,"$2",0,L, 
0);/g; #characters
	s/^(\t{3})([^\t].*)$/\$pdf->Cell(1.5);\$pdf->MultiCell(1.5,.18,"$2", 
0,L,0);/g; #parenthetical
	s/^(\t{2})([^\t].*)$/\$pdf->Cell(1);\$pdf->MultiCell(3.5,.18,"$2", 
0,L,0);\$pdf->ln();/g; #dialogue
	s/(\t{10})([^\t].*:)/\$pdf->Cell(4);\$pdf->MultiCell(2,.18,"$2");\ 
$pdf->ln();/g; #right-transitions
	s/^\w+.{2,20}:\s*$/\$pdf->MultiCell(0,.18,"$&",0,L,0);\$pdf->ln();/ 
g; #left-transitions
	s/^(\w|\.|\[|\-).*$/\$pdf->MultiCell(0,.18,"$&",0,L,0);\$pdf->ln();/ 
g; #paragraph
'

# and finally PHP footer
cat <<'TAIL'

$pdf->Output();
?>

TAIL
} >"$DST.php"

# open the generated PHP file in Safari
open -a Safari "$DST.php"


More information about the textmate mailing list