PDA

View Full Version : [.NET]Consigli e suggerimenti struttura software che deve lavorare su codice css


Mattyfog
18-05-2010, 19:09
Salve a tutti,
vorrei creare un programma che mi permetta all'utente di "scrivere" codice css senza conoscere il linguaggio css. In pratica tramite menu e robe varie l'utente potrà effettuare scelte e assegnare valori a diverse proprietà che porteranno alla creazioni di un file css.
Ora, visto che non ho trovato nessuna libreria per scrivere e gestire file css con c# ho pensato che il programma potrebbe lavorare in questo modo:
- all'apertura di un file css il codice viene letto e convertito in una variabile di tipo XElement (o simili, comunque un tipo che riguardi xml)
- il software lavora sulla variabile di tipo XElement
- al salvataggio un'altro algoritmo converte il contenuto della variabile XElement in css

Ho pensato di usare una variabile xml per diversi motivi:
- mi pare che rispetti come struttura quella di un documento xml (in un documento xml abbiamo diversi oggetti ai quali sono assegnati diversi attributi)
esempio:
css:

p {
color: white;
font-family: arial;
}

xml:

<p>
<color value="white" />
<font-family value="arial" />
</p>


- non devo riscrivermi una classe per gestire i css in quanto il programma lavorerà su una variabile XElement e quindi sarà facile assegnare diversi attributi e valori

Vi sembra un'idea giusta? Altri consigli, pareri?

!k-0t1c!
18-05-2010, 20:48
Se ti piace l'xml perché allora non fare:

<p>
<color>white</color>
<font-family>arial</font-family>
</p>


Più leggibile, secondo me. E accederesti ai valori usando InnerText, quindi anche più semplice a livello di codice, no?

Mattyfog
18-05-2010, 21:23
Si giusto, comunque in generale il discorso del gestire tutto tramite xml ti pare una soluzione abbastanza pratica?

!k-0t1c!
18-05-2010, 22:38
Si giusto, comunque in generale il discorso del gestire tutto tramite xml ti pare una soluzione abbastanza pratica?
Il parsing del CSS, se non erro, è abbastanza semplice. Ad onor del vero, a meno che tu non desideri che l'utente agisca sull'XML, non vedo il perché disturbarsi con la conversione. La rappresentazione interna può essere fatta in maniera più efficace (Dictionary<string,Dictonary<string,string>>, banalmente?). Basti pensare che la traduzione di una rappresentazione del genere in CSS consisterebbe di due foreach annidati e null'altro.
Detto questo fai come ti viene comodo e come sai :)

Mattyfog
18-05-2010, 22:46
Mmm buona idea quella dei Dictionary<string,Dictonary<string,string>> ... Non sapevo dell'esistenza dei Dictionary :D
Ma quindi in Dictionary<string,Dictonary<string,string>> abbiamo:
Dictionary<elemento della pagina html,Dictonary<proprietà dell'elemento,valore assegnato alla proprietà>>. Giusto?
Sarebbero perfetti!

!k-0t1c!
18-05-2010, 22:50
Se con "elemento della pagina html" intendi selettore CSS allora sì, l'idea sarebbe questa :)
Consiglio molto buono: imparati un po' dei contenuti delle librerie standard, sono gran parte del vantaggio di usare .NET ;)

L'accesso a font-family come nel tuo esempio, comunque, sarebbe così:

selettori["p"]["font-family"]

Piuttosto pulito :)

Mattyfog
19-05-2010, 19:08
Grazie!