<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2014-09-19 15:01 GMT+02:00 Daniele Varrazzo <span dir="ltr"><<a href="mailto:piro@develer.com" target="_blank">piro@develer.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 2014-09-19 13:32, Manlio Perillo wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2014-09-19 14:08 GMT+02:00 Daniele Varrazzo <<a href="mailto:piro@develer.com" target="_blank">piro@develer.com</a>>:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
[...]<br>
</blockquote>
<br>
Proprio pochi minuti fa mi e' venuto in mente che sia chordlab che rst2pdf<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
usano reportlab come motore di rendering. Anziche' usare chordlab come<br>
processo esterno potrei usarlo come libreria e scrivere nello stesso<br>
documento che sto generando.<br>
<br>
<br></blockquote></blockquote></span></blockquote><div><br></div><div>Piccola nota: il suggerimento che ti avevo dato era esattamente quanto hai scritto sopra.  Usare chordlab come libreria che generi un flowable di reportlab da includere nel tuo documento.</div><div>  </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote>
Potrebbe essere una alternativa, ma significa fare a meno di reST ed usare<br>
reportlab per la gestione del documento finale.<br>
</blockquote>
<br></span>
Perdendo reST per la gestione del documento finale non mi perdo molto: docutils e' debole in questo e Sphinx in effetti e' nato proprio per coprire questa mancanza (ed e' stato quello il momento in cui si e' potuto usare reST per generare la documentazione di roba grossa come Python).</blockquote><div><br></div><div>Si, infatti stavo assumendo l'uso di sphinx; solo dopo la precedente risposta ho notato che rst2pdf è un package esterno; ma il discorso non cambia.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Gia' usare rst2pdf mi consente di avere di piu', e questo non lo perderei: la struttura del documento rimane quella che avevo in mente:<br>
<br>
    titolo<br>
    ------<br>
<br>
    Qualche parola di circostanza<br>
<br>
    .. song:: the-man-who-sold-the-world.cho<br>
    .. song:: karma-police.cho<br>
    .. song:: personal-jesus.cho<br>
<br>
    Ringraziamenti finali<br>
<br>
solo che la direttiva song, invece di generare un pdf in un file temporaneo da unire al documento in una fase successiva al rendering, consiste nel richiamare chordlib (la libreria di chordlab), passargli il "canvas" o quello che sia di reportlab, e fargli fare la sua cosa li'.<span class=""><br>
<br></span></blockquote><div><br></div><div>Si, quello che intendevo.</div><div><br></div><div>Io avevo complicato un pò le cose, facendo fare a chordlab il parsing + rendering di un solo elemento o linea (in modo da avere un formato reST pseudo-intermedio per il formato cho) ma meglio fargli renderizzare tutto il documento a meno che non si debba personalizzare qualcosa.</div><div><br></div><div>Salto il resto perchè direi che stiamo dicendo la stessa cosa.</div><div>Non ero stato preciso, ma non volevo suggerti di reimplementare tutto quello che fa chordlab nella tua direttiva, ma di usare chordlab come libreria, opportunamente rifattorizzato.</div><div><br></div><div>> [...]</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Credo tu non abbia nemmeno bisogno di generare il documento reST<br>
intermedio, ma puoi generare l'AST direttamente e renderizzarlo in PDF.<br>
 Rispetto a reportlab almeno hai tutte le feature "document oriented" di<br>
reST.<br>
<br>
Tutto questo è solo ad intuito, non avendo mai utilizzato reST per fare<br>
cose più complicate di un rst2html di un documento standard, ma mi stupirei<br>
se non fosse possibile.<br>
</blockquote>
<br></span>
Diciamo che il mio compito e' semplificato dal fatto che il songsheet e' sempre una pagina a se', mai completamente integrato nel documento. La strada di avere un unico AST globale,</blockquote><div><br></div><div>Non devi avere proprio un AST globale.</div><div><br></div><div>Ripendandoci, come ho già scritto, ti basta un elemento SongBook da includere nell'AST di reST.</div><div>Tale elemento contiene solo il path al song book, e lo puoi renderizzare usando chordlab come libreria facendogli usare lo stesso canvas che usa rst2pdf.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> comprendente sia le parti di documento che quelle dei songsheet, e' di sicuro "elegante", ma se mi costringe a risolvere problemi "specializzati" tentando di usare una struttura e un renderer generico potrebbe non essere la piu' semplice. Su questo c'e' il fattore risparmio, per cui se ho gia' queste due toolchain funzionanti:<br>
<br>
    [documento .rst] -> (rst2pdf+reportlab)  -> [file PDF]<br>
    [documento .cho] -> (chordlab+reportlab) -> [file PDF]<br>
<br>
uno dove prova ad integrarsi? Pigro 1: coi pdf. Pigro 2: con reportlab. L'alternativa:<br>
<br>
    [documento .cho] -> [documento .rst+cho] -> (chorst2pdf) -> [file PDF]<br>
<br></blockquote><div><br></div><div>Si, ma ti costringe a fare cose orrende come parsare i documenti PDF generat per patcharli (se ho capito bene).</div><div> </div><div>> [...]</div><div><br></div><div><br></div><div>Ciao  Manlio</div></div><br></div></div>