Markdown PHP parser s bloky a třídami rubrika: Programování: PHP

2 Rike
položil/-a 4.3.2018

TLDR; Hledám pseudo-Markdown PHP parser, který umožňuje používání bloků (div-ů), tříd, bez syntaktického balastu, s obousměrnou transformací, který zrychlí práci s HTML.

Chci se dotázat, zda třeba někdo z vás neřešil stejnou věc a nenalezl nějaké rozumné řešení. Ve všech možných CMS dojde nakonec na místo, kde musíte vytvářet či umožnit vytváření skutečného obsahu, článku, příspěvku. Řeší se to nejčastěji nějakým WYSIWYG editorem, ale to je dobré spíš pro zákazníka. Vy potřebujete používat i bloky (div-y), třídy atp. Dostanete se do fáze, kdy neustále přepínate mezi WYSIWYGem a zdrojovým kódem, pak si přepnete na zdrojový kód už defaultně, ale neustále psát všechnen ten HTML syntaktickej balast vás pořád moc zdržuje. Nainstalujete si Markdown, zrychlí to zápis hlavně inline elementů, ale když chcete použít Bootstrap layout, musíte to zase obcházet přes HTML. Hledáte tedy nějakou alternativu, nalézáte Markdown s div-y, ale bez PHP implementace. Prokoušete se až k PUG/JADE pro PHP, což je ale zase spíš komplexní šablonovací systém, ne jen obyčejný parser, i když řešení stromové struktury pomocí odsazení je dobrá myšlenka.
Nenarazil někdo na nějaký obousměrný parser v PHP, který zvládne zhruba toto (ne nutně takto)? To poslední, co chci, je vymýšlet kolo :-)

.row
  .col-6
    Odstavec textu **s Markdown syntaxí** nebo něčím podobným
  .col-6.text-center #id1
    Odstavec textu **s Markdown syntaxí** nebo něčím podobným
<div class="row">
  <div class="col-6">
    <p>Odstavec textu <strong>s Markdown syntaxí</strong> nebo něčím podobným</p>
  </div>
  <div class="col-6 text-center" id="id1">
    <p>Odstavec textu <strong>s Markdown syntaxí</strong> nebo něčím podobným</p>
  </div>
</div>

Komentáře

  • harrison314 : Skus googlit "zen coding". 4.3.2018
odkaz
6 Tomáš Votruba
odpověděl/-a 4.3.2018

5 let zpátky jsem na tohle používal HAML:

!!! 5
%html
    %body
        #container
            %ul.navigation
                %li Etusivu
                %li Tuotteet
 
            %h2 Tuotteet
            %ul.products
                - for ($i = 0; $i < 10; $i++)
                    %li= $i * 7

Najdeš ho na Githubu HamlPHP.

Nejdřív se mi to strašně líbilo, protože to vypadalo jako PHP, nebo programování. Pak mě to ale začlo spíše brzdit, když jsem to musel všem kodérům vysvětloval, nebo když jsem potřeboval zkopírovat nějaké HTML snippety do Hamlu. Byl to trochu guláš :)

Komentáře

  • Kit : HAML používám jako plugin do Vimu. Když potřebuji psát XML nebo HTML, tak ten kousek napíši v této syntaxi a přímo v editoru si to nechám transformovat. Vadí mi však, že nezná taby a striktně vyžaduje odsazení 2 mezery. U snippetů je to však vcelku jedno. 4.3.2018
  • Rike : Jestli dobře vidím (a u dalších implementací pro PHP, co jsem vygooglil), umí to řešení jen směr HAML -> HTML, opačně už ne? Jenže příslušná data jsou v DB jako HTML a celé to překopávat nechci. 5.3.2018
  • Kit : Opačně to moc smysl nedává, neboť jen blázni strkají HTML do databáze... 5.3.2018
  • Rike : V tom případě jsme bláznivý svět. Blogové příspěvky z WYSIWYGu necháváte v CMS ukládat jak? 5.3.2018
  • Kit : HTML je pouze serializovaným datovým stromem. Je nutné z něj vyházet XSS a podobné zbytečnosti, proto ho nejprve proženu XSLT filtrem. Elementy, které potřebuji indexovat, uložím do samostatných sloupců a tabulek. Neklíčové položky serializuji například do JSONu či XML a uložím také. Ovšem to už je NoSQL přístup, který se někdy hodí a někdy ne. 5.3.2018
  • Taco : @Rike: A máš ty html data alespoň nějak normalizovaná? Pokud jo, tak by se to dalo dodělat. Pokud ne, tak bez ruční asistence, která by zkontrolovala sporné případy to tak úplně nepůjde. 5.3.2018
  • Rike : @Taco: dá se říct, že jo. Jen mě překvapuje, že takové řešení už neexistuje :-) 6.3.2018
  • Taco : @Rike: Tak v takovém případě beautifiler -> xslt -> vytvoříš si třeba ten HAML. To by nemuselo být tak těžké. 6.3.2018
  • Taco : @Rike: Třeba jsi ten první :-) 6.3.2018
  • Kit : https://github.com/haml/html2haml 6.3.2018
  • Rike : @Taco: No mrknu na to :-) @Kit: To není PHP... 6.3.2018
  • Kit : Je to nástroj, u kterého by mohlo být jedno, v jakém jazyce je napsán. 6.3.2018
  • Rike : @Kit: Pokud ho nepotřebuju implementovat jako součást nějakého CMS, ne jen jako nástroj. 6.3.2018

Pro zobrazení všech 4 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.