|
Re: Using tidy for editing html: msg#00015web.html-tidy.devel
I'll spend some time on this and see how far I get. Should I mail my finished cpp\h file here for review? (I don't want to spam people with attachments if they have no interest in it) Vin Charlie Reitzel wrote: > I second Björn's comments. Note, in my TidyUI, I avoided the whole > issue by simply handling the input as text. But, to do WYSIWYG, you > would need some type of DOM. If it was me, I would simply use the > internal API (or, as you suggest, extend the C++ bindings, but using > internal interfaces). > > You will want to be careful to avoid conflicts. The whole point of the > "public" interface is to avoid name conflicts. You could limit the > exposure of internal Tidy calls to the implementation file (i.e. the > heretofore non-existent tidyx.cpp). Does that make sense? > > tidyx.h > namespace Tidy > { > class Document > { > public: > ... > // New, update method > bool AddAttr( Node* tnod, ctmbstr attrName, ctmbstr attrValue ); > bool AddAttr( Node* tnod, TidyAttrId attrId, ctmbstr attrValue ); > ... > }; > } > > tidyx.cpp > > #include "tidyx.h" > #include <lexer.h> // Don't expose lexer.h everywhere you include > <tidyx.h> > > namespace Tidy { > ... > bool Document::AddAttr( Node* tnod, ctmbstr attrName, ctmbstr attrValue ) > { > if ( IsValidAttrName(attrName) ) > { > // Keep internal Tidy types private to tidyx.cpp > TidyDocImpl* doc = tidyDocToImpl( _tdoc ); > ::Node* nod = tidyNodeToImpl( (TidyNode)tnod ); > AttVal* attVal = AddAttribute( doc, nod, attrName, attrValue ); > return ( NULL != attVal ); > } > return false; > } > bool Document::AddAttr( Node* tnod, TidyAttrId attrId, ctmbstr attrValue ) > { > // Keep internal Tidy types private to tidyx.cpp > TidyDocImpl* doc = tidyDocToImpl( _tdoc ); > ::Node* nod = tidyNodeToImpl( (TidyNode)tnod ); > AttVal* attVal = AddAttributeById( doc, nod, attrId, attrValue ); > return ( NULL != attVal ); > } > ... > } > > At 06:45 PM 6/16/2006 +0200, Bjoern Hoehrmann wrote: >> * Vincent Finn wrote: >> >I am using the C++ binding and it only seems to have read >> >functionality. Is that an oversight or is there a design >> >reason for it? >> >> That's correct, Tidy does not expose such functionality. Also note that >> the read functionality is not complete, you cannot access the content of >> text nodes, for example. >> >> >Essentially I want to know is there any inherent restriction in >> >the design that would make adding functions like NewNode, >> >CloneNode and RemoveNode to the C++ classes a bad idea? >> >> Well, Tidy is not really designed to enable this, so you would need some >> hacks to make Tidy expose this in a good manner. It seems the current >> developers are neither very interested in this and not committed to >> maintaining such functionality. It should be possible, but you are >> generally better off with simply converting Tidy's internal DOM to some >> other DOM structure. >> -- >> Björn Höhrmann · mailto:bjoern@xxxxxxxxxxxx · http://bjoern.hoehrmann.de >> Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de >> 68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/ >> >> >> _______________________________________________ >> Tidy-develop mailing list >> Tidy-develop@xxxxxxxxxxxxxxxxxxxxx >> https://lists.sourceforge.net/lists/listinfo/tidy-develop > |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: Using tidy for editing html: 00015, Bjoern Hoehrmann |
|---|---|
| Next by Date: | Re: Using tidy for editing html: 00015, Vincent Finn |
| Previous by Thread: | Re: Using tidy for editing htmli: 00015, Charlie Reitzel |
| Next by Thread: | tidy bug: 00015, Sérgio Monteiro Basto |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |