Autor Téma: Knihovna pro vyhodnocování CSS  (Přečteno 4572 krát)

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1558
  • Karma: 37
    • Pepak.net
Knihovna pro vyhodnocování CSS
« kdy: 22-09-2012, 07:21:57 »
Mám takový speciální problém: Potřeboval bych vzít HTML stránku a k ní příslušející CSS soubor a to celé převést na upravenou HTML stránku a upravený CSS soubor, který bude vypadat stejně, ale bude používat jednodušší konstrukce, které můj renderer zvládne zobrazit. Abych dal příklad: Použitý renderer neumí žádnou formu obsahu generovaného pomocí CSS, tj. například konstrukce typu .trida:after(content: "***"; color: #ff0000;). Bohužel nemám šanci ten renderer přesvědčit, aby CSS-obsah zobrazil, ale pokud bych dokázal to HTML přeparsovat z <span class="trida">Hvězdičky za</span> na <span class="trida">Hvězdičky za</span><span style="color: #ff0000">***</span>, tak by to můj problém řešilo.

Základní problém vidím v tom, že neznám žádný program, který by tohle uměl, a protože CSS je dost složité, tak ani nevím o způsobu, jak si to nějak rozumně naimplementovat sám. Nebyl by nějaký nápad, ať už na hotový program, nebo na nějakou jednoduše použitelnou knihovnu?

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3291
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Knihovna pro vyhodnocování CSS
« Odpověď #1 kdy: 22-09-2012, 11:20:28 »
Mám takový speciální problém: Potřeboval bych vzít HTML stránku a k ní příslušející CSS soubor a to celé převést na upravenou HTML stránku a upravený CSS soubor, který bude vypadat stejně, ale bude používat jednodušší konstrukce, které můj renderer zvládne zobrazit.
...
Základní problém vidím v tom, že neznám žádný program, který by tohle uměl, a protože CSS je dost složité, tak ani nevím o způsobu, jak si to nějak rozumně naimplementovat sám. Nebyl by nějaký nápad, ať už na hotový program, nebo na nějakou jednoduše použitelnou knihovnu?

O nicem hotovem nevim.

Jako preferovane reseni bych videl zmenu rendereru na MSIE tj. v Delphi podani nejspis TEmbeddedWB. My jsme taky Baldwina vykopali vsude, kde to slo

Jako nahradni reseni (bez zaruky, nezkousel jsem) bych to pomoci stejneho MSIE nacetl do DOM, v nem to zmenil a pak to upravene zkusil ulozit, Alespon kdyz DOM pouzivas v JavaScriptu, tak kazdy objekt ma property Style, kde se dostanes na vsechna pole. Jsou na to interface IHTMLDocumenti, IHTMLElementi, IHTMLStylei aj.


Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2982
  • Karma: 108
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Knihovna pro vyhodnocování CSS
« Odpověď #2 kdy: 22-09-2012, 12:33:52 »
No unigui používá nějakou volně šiřitelnou třídu na zpracování CSS, ale to ti asi nepomůže.

c:\Users\Public\Documents\FMSoft\Framework\uniGUI\CSSParser\seCSSParser.pas
upraveno z     http://www.tmedia.de 
This software is provided 'as-is', without any express or   }
{ implied warranty. In no event will the author be held       }
{ liable for any damages arising from the use of this         }
{ software.                                                   }
{ Permission is granted to anyone to use this software for    }
{ any purpose, including commercial applications, and to      }
{ alter it and redistribute it freely,


THtmlView podporuje nějak CSS podporuje (jen nevím zda i externí) - aktuální verze http://code.google.com/p/thtmlviewer/
Embarcadero MVP - Czech republic

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3291
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Knihovna pro vyhodnocování CSS
« Odpověď #3 kdy: 22-09-2012, 12:41:46 »
THtmlView podporuje nějak CSS podporuje (jen nevím zda i externí) - aktuální verze http://code.google.com/p/thtmlviewer/

No to je puvodne ten Baldwin, kterej bych z wokennich aplikaci vykopal jednou pro vzdy, protoze MSIE dnes poslouzi radove lepe. Jedine kde jsem ho nechal bylo tam, kde jsme do nej napsali binding na nase ORM objekty a kde nebylo rentabilni s tim neco delat.

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1558
  • Karma: 37
    • Pepak.net
Re:Knihovna pro vyhodnocování CSS
« Odpověď #4 kdy: 22-09-2012, 13:19:08 »
Jako preferovane reseni bych videl zmenu rendereru na MSIE tj. v Delphi podani nejspis TEmbeddedWB.
Renderer je fixně daný a nezměnitelný.

Citace
Alespon kdyz DOM pouzivas v JavaScriptu, tak kazdy objekt ma property Style, kde se dostanes na vsechna pole.
To neřeší můj problém. Tím možná zjistím, že element má nějaký (a jaký) :after (ale ruku do ohně za to nedám, on ten IE není zase žádný velký expert přes pokročilé CSS), ale to je tak všechno. Nezjistím například CSS styly toho :after obsahu.

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1558
  • Karma: 37
    • Pepak.net
Re:Knihovna pro vyhodnocování CSS
« Odpověď #5 kdy: 22-09-2012, 13:21:44 »
No unigui používá nějakou volně šiřitelnou třídu na zpracování CSS, ale to ti asi nepomůže.
Mohla by. Pokud ta třída umí přijmout na vstupu kromě CSS i HTML a napasovat se na něj.

Spíš si ale myslím, že potřebuju nějaký kompletní HTML/CSS3, tzn. nějaké jádro Webkit nebo tak něco.

Citace
THtmlView podporuje nějak CSS podporuje (jen nevím zda i externí) - aktuální verze http://code.google.com/p/thtmlviewer/
"Nějak" mi moc nepomůže - potřebuju vyřešit problém, že mám renderer, který toho umí spoustu, ale ty nejpokročilejší věci, které by mi nejvíc pomohly, ne. A nikdy je umět nebude. Ale pořád pravděpodobně bude umět víc než komponenta, která funguje "nějak".

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3291
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Knihovna pro vyhodnocování CSS
« Odpověď #6 kdy: 22-09-2012, 13:36:20 »
To neřeší můj problém. Tím možná zjistím, že element má nějaký (a jaký) :after (ale ruku do ohně za to nedám, on ten IE není zase žádný velký expert přes pokročilé CSS), ale to je tak všechno. Nezjistím například CSS styly toho :after obsahu.
s tim :after jsem nic nedelal, ale jinak jsme bezne nejen zjistovali styly, ale taky je  v run-time nastavovali a nenarazili jsme, ze by neco u nejakeho browseru nefungovalo. No a kdyz to dokazes zmenit, tak to dokazes i ulozit, ne?

Takze ja bych se podival, jak to s tim :after opravdu je, v prvni fazi v JavaScriptu primo v browseru, ktery to umi a v runtime mu zkusil zmenit na neco jineho.
« Poslední změna: 22-09-2012, 13:41:29 od pf1957 »