[prev in list] [next in list] [prev in thread] [next in thread] 

List:       calligra-devel
Subject:    Re: [calligra] /: Add api for writing ODF that is generated from the ODF RNG file.
From:       Jos van den Oever <jos.van.den.oever () kogmbh ! com>
Date:       2013-08-04 19:16:13
Message-ID: 51FEA87D.2090104 () kogmbh ! com
[Download RAW message or body]

On 08/04/13 20:25, Friedrich W. H. Kossebau wrote:
> really cool work from Jos, happy to see it having made it into Calligra master

So am I. Glad I blew off the dust from this one.

> Having finally given the patch I look as well I found I have a really hard
> time reading all_the_created_methods_and_objects.
>
> I wonder who else would favour to do like it is done in the browsers' HTML
> DOM, where the hyphens in all element/attribute names are replaced by removing
> them and turning the following letter to Uppercase.
>
> Might need some more work in the generator, but given that this is affecting
> quite some code is should be worth the effort. So the only usages of _ would
> be to separate the element/attribute name from e.g. the set-prefix and as
> replacement for the namespace separator, which at least might help parsing. So
> in the given example it would be:
>
>>    text_p p(xmlWriter);
>>    p.set_text_styleName("italic");
>>    text_span span(p.add_text_span());
>>    span.set_text_styleName("italic");
>>    span.addTextNode("Hello World!");
>
> What do people think? What are other downsides of this approach? Will it need
> some special case handling for some cases (and would that still be worth it??

This issue was brought by Inge, Sebsauer and Zagge as well. I proposed 
to address it after the patch landed which is now.

The initial patch used camelcasing of the class names and function 
names. I moved away from that to use a simple rule s/[:-]/_/. There are 
a few ways in which to map the characters : and - that are not allowed 
in class names or function names. Here are a few obvious ones:

using namespace writeodf;

    Element                          Attribute       Attribute+uppercase
    office:body                      xml:id          svg:viewBox
    class name   open tag            set attribute   set attribute
1) office_body  add_office_body()   set_xml_id(v)   set_svg_viewBox(v)
2) OfficeBody   addOfficeBody       setXmlId(v)     setSvgViewBox(v)
3) Office_Body  addOffice_Body      setXml_Id(v)    setSvg_ViewBox(v)
4) office::body add<office::body>() set<xml::id>(v) set<svg::viewBox>(v)

Methods 1-3 have good autocompletion. Method 4 does not and has harder 
error messages, but it looks really cool.

Before you comment on the best method and pros and cons, I would ask you 
to convert at least one Calligra cpp file to the new API to get familiar 
with it. There's plenty to choose from.

Cheers,
Jos



_______________________________________________
calligra-devel mailing list
calligra-devel@kde.org
https://mail.kde.org/mailman/listinfo/calligra-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic