Newsgroup: it.comp.giochi.avventure.testuali
Titolo: [Infit] Dell'acido (e di altre sostanze)

Ciao amici.
Questione Inform/Infit: mi capita tra le mani un bel po' di acido borico, e
voglio che venga descritto in Inform come "  dell'acido borico  "
Uso quindi la preziosa proprietà "article" e la definisco nel seguente modo:
Object acido "acido borico"
   with article "dell'", ...  <-- notare l'apostrofo
Il problema è che, in visualizzazione, tra l'article così definito e il nome
dell'oggetto viene lasciato uno spazio, ottenendo
dell' acido borico
Su consiglio di Paolo Lucchesi consulto il DM4 a pagina 272, dove viene
descritta una preziosa proprietà "articles" che permette di bypassare i normali
meccanismi e di specificare a mano la tripletta di articoli: determinativo
maiuscolo, determinativo minuscolo e indeterminativo.
Dall'esempio della lingua francese (oggetto "haricot") sembra proprio che questa
faccia al caso mio, visto che la tripletta di articoli indicati ha uno spazio
forzato alla fine, il che mi fa pensare che questa sia la strada giusta per
indicare un articolo con apostrofo, omettendo lo spazio.
Definisco quindi il mio
Object acido "acido borico"
   with articles "L'" "l'" "dell'", ...
ma con mia somma tristezza noto che lo spazio in visualizzazione rimane!
Qualche suggerimento, che possibilmente non costringa a mettere le mani delle
viscere interne delle librerie?
Grazie,
PaoloM

Il mistero si infittisce: esaminando Italian.h da Infit vedo la defizione
dell'oggetto "est":
CompassDirection -> e_obj "est"
with name 'e//' 'est' 'east',
   article "l^",
   door_dir e_to;
La proprietà "article" è definita come "l^", con l'accento circonflesso al
posto dell'apostrofo, ma ho verificato che questo è sbagliato, dal momento
che article entra in gioco come articolo indeterminativo, e uno statement
del tipo print (A)e_obj stampa:
L
 est
Come si nota, l'accento circonflesso viene risolto come ritorno a capo, e
non come apostrofo (e c'è anche la beffa del malefio spazio prima di "est")
L'avventura continua...
PaoloM
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Secondo me ti tocca mettere mano alla libreria... l'apicello viene
considerato parte di parola e per inform l'articolo e' una parola a
parte... in ogni caso 'dovrebbe' toccare solo la routine di stampa
dell'articolo (PrefaceByArticle ad una prima analisi, peccato che fa
venire gli incubi solo a guardarla :P)
Fortunatamente il caso dell'articolo esplicito e' nelle prime 5 righe :D

L'accento circonflesso vale come apostrofo solo nelle voci di
dizionario!
Altrimenti e' giustamente un newline.
Dichiaro che e' un bug di infit :PP

Lorenzo Marcantonio:

Farò delle prove, ma è molto strano l'esempio a pagina 272 del DM4: vedi che la
tripletta di articoli indicati nella proprietà "articles" dell'oggetto "haricot"
hanno lo spazio esplicitato? Come se per gli articoli indicati in questo modo
fosse sospeso il meccanismo di base che prevede che l'articolo sia considerato
una parola a parte, e quindi automaticamente seguito da uno spazio.
Ora comunque darò un'occhiata alla libreria, ma non ho né tempo né voglia di un
hack pesante.
E comunque mi sembra strano che nessuno si sia mai accorto di questo problema;
in fondo nella lingua italiana capita spesso di avere articoli di fronte a
vocali. Forse la cosa è passata sotto silenzio perché i meccanismi standard di
assegnazione degli articoli in Infit funzionano perfettamente, e il problema che
espongo si presenta solo quando si ha la necessità di esplicitare un articolo
indeterminativo differente da quello standard (con "article"), che vada a
precedere un sostantivo che inizi con una vocale.
Ciao,
PaoloM

 precedere un sostantivo che inizi con una vocale.
Ci darò un'occhiata nel weekend e grazie per la segnalazione del bug che 
si va ad aggiungere tra quelli già segnalati e in lista d'attesa...
Comunque, questo è l'inizio della funzione PrefaceByArticle
[ PrefaceByArticle o acode pluralise capitalise  i artform findout artval;
     if (o provides articles) {
         artval=(o.&articles)-->(acode+short_name_case*LanguageCases);
         if (capitalise)
             print (Cap) artval, " ";
         else
             print (string) artval, " ";
         if (pluralise) return;
         print (PSN__) o; return;
     }
e come vedi è evidente la stampa dello spazio dopo l'articolo. 
Suggerirei allora un hack velocissimo. Sostituisci la funzione 
PrefaceByArticle inserendo nel tuo sorgente prima questo
Replace PrefaceByArticle;
e poi la stessa funzione ma senza gli spazi. Naturalmente ti devi 
preoccupare di inserire uno spazio nel codice dell'avventura quando 
definisci articoli in cui lo spazio è necessario. Non l'ho provato ma 
dovrebbe funzionare.
HAPPY INFORMING!
Giovanni


è una delle risposte verso la fine del thread.
HAPPY INFORMING!
Giovanni

Suggerirei allora un hack velocissimo.
Grazie Giovanni. Provo la tua idea prima possibile e ti faccio sapere.
Ciao,
PaoloM

differente rispetto a quanto detto in DM4 pag. 272 (l'esempio citato).
Ottimo! Grazie ancora.
PaoloM

 Ottimo! Grazie ancora.
A questo punto non sono sicuro se serva o meno lo spazio nella 
definizione dell'articolo (quando naturalmente questo è una parola 
separata). Fai qualche prova, poi sappici dire.
HAPPY INFORMING!
Giovanni

separata). Fai qualche prova, poi sappici dire.
Hack perfettamente riuscito.
[ PrefaceByArticle o acode pluralise capitalise  i artform findout artval;
    if (o provides articles) {
        artval=(o.&articles)-->(acode+short_name_case*LanguageCases);
        if (capitalise)
            print (Cap) artval;
        else
            print (string) artval;
        if (pluralise) return;
        print (PSN__) o; return;
    }
    ....
Mi sono limitato a ripristinare il funzionamento della proprietà "articles" per
come viene descritta nel DM4, quindi gli articoli indicati nella tripletta
necessitano di un'indicazione esplicita dello spazio, permettendo di ometterlo
nel caso degli apostrofi (vedi "dell'acido").
L'hack coinvolge solo "articles", mentre "article" continua a funzionare come
prima e lo spazio viene sempre inserito di default, il che non è male dal
momento che "article" è molto utilizzata e sarei stato costretto a rivedere
parecchio sorgente. Lo svantaggio risiede nel fatto che, oltre all'articolo
indeterminativo personalizzato, "articles" costringe anche ad indicare
esplicitamente gli articoli determinativi (maiuscolo e minuscolo), ma questo è
poco male.
Per intenderci, l'oggetto e_obj indicato in un mio messaggio precedente andrebbe
ridefinito in questo modo:
articles "L'", "l'", "l'", ...   (invece di article "l^")
Chiudo confermando che in "articles" lo spazio, se presente, va sempre
esplicitamente indicato.
Grazie mille,
PaoloM