Quale algoritmo dovrei usare per un sacco di if else (s)?

0

Devo implementare molte altre affermazioni if else e sto pensando di usare Decision Tree, ma non sono sicuro che sarà l'algoritmo giusto.

Non voglio inserire un pezzo di codice html in base a queste condizioni.

directly after an iframe embed (same 300 character rule as columns 4 and 5) directly after a heading tag (same 300 character rule as columns 4 and 5) directly after a facebook embed directly after a twitter embed directly after a vine embed directly after an instagram embed directly after any Oembed directly after an image directly after a video directly after a gallery directly after a protected iframe

Quindi analizzerò l'intero contenuto del mio codice HTML e cercherò di non aggiungere un annuncio in base a tali condizioni. Anche le regole cresceranno, ecco perché non voglio usarle se altro / i.

Se mi manca qualcosa per favore fammi sapere che fornirò più contesto.

Grazie.

    
posta toy 12.05.2015 - 01:19
fonte

2 risposte

0

Potresti usare qualcosa di simile,

Definisci una classe di regole in cui viene specificata l'espressione regolare per rilevare il tag e passa in rassegna le espressioni e inserisci html dove necessario.

class Rule
{
    string tagRegEx;
    string htmlToInsert;
}


public string Process(string html,List<Rule> rules)
{
    //for each rule, check for regex matches and insert the htmlToInsert after 
    return html;
}

Un altro approccio consiste nell'usare un parser HTML e utilizzare la funzione incorporata di esso per trovare i nodi e inserire il codice html dopo di essi.

    
risposta data 12.05.2015 - 07:20
fonte
1

Poiché sembra che questi siano principalmente un elenco di filtri di esclusione, qualcosa del genere potrebbe portarti dove vuoi (ad esempio in Java, include chiamate a funzioni che probabilmente non esistono come parti del test):

private static List<Predicate<Node>> AD_FILTERS = Arrays.asList(
  (node) -> node.getPreviousSibling().isIFrame(),
  (node) -> node.getPreviousSibling().isHeading(),
   ...
  (node) -> node.getPreviousSibling().isIFrame() && node.getPreviousSibling().isProtected()
);

...
if (AD_FILTERS.stream().map(filter -> filter.test(node)).allMatch(x -> x == false)) {
  // insert the add
}
    
risposta data 12.05.2015 - 02:16
fonte

Leggi altre domande sui tag