Coverage Report

Created: 2026-04-29 07:28

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libetonyek/src/lib/contexts/KEY1ContentElement.cpp
Line
Count
Source
1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/*
3
 * This file is part of the libetonyek project.
4
 *
5
 * This Source Code Form is subject to the terms of the Mozilla Public
6
 * License, v. 2.0. If a copy of the MPL was not distributed with this
7
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
 */
9
10
11
#include "KEY1ContentElement.h"
12
13
#include "IWORKProperties.h"
14
#include "IWORKText.h"
15
#include "KEY1ParserState.h"
16
#include "KEY1StringConverter.h"
17
#include "KEY1Token.h"
18
#include "KEY1XMLContextBase.h"
19
20
#include "libetonyek_xml.h"
21
22
namespace libetonyek
23
{
24
KEY1ContentElement::KEY1ContentElement(KEY1ParserState &state)
25
0
  : KEY1XMLElementContextBase(state)
26
0
  , m_divStyle(state, IWORKStylePtr_t())
27
0
  , m_spanStyle(state, IWORKStylePtr_t())
28
0
  , m_delayedLineBreak(false)
29
0
{
30
0
}
31
32
void KEY1ContentElement::attribute(const int name, const char *const value)
33
0
{
34
0
  if (m_divStyle.readAttribute(name, value) ||
35
0
      m_spanStyle.readAttribute(name, value))
36
0
    return;
37
0
  switch (name)
38
0
  {
39
0
  case KEY1Token::id :
40
0
    setId(value);
41
0
    break;
42
0
  default:
43
0
    ETONYEK_DEBUG_MSG(("KEY1ContentElement::attribute: unknown attribute with value=%s\n", value));
44
0
  }
45
0
}
46
47
IWORKXMLContextPtr_t KEY1ContentElement::element(const int name)
48
0
{
49
0
  switch (name)
50
0
  {
51
0
  case KEY1Token::div | KEY1Token::NS_URI_KEY :
52
0
    return std::make_shared<KEY1DivElement>(getState(), m_spanStyle.getStyle(), m_divStyle.getStyle(), m_delayedLineBreak);
53
0
  case KEY1Token::span | KEY1Token::NS_URI_KEY :
54
0
    return std::make_shared<KEY1SpanElement>(getState(), m_spanStyle.getStyle(), m_delayedLineBreak);
55
0
  default:
56
0
    ETONYEK_DEBUG_MSG(("KEY1ContentElement::element: unknown element\n"));
57
0
  }
58
0
  return IWORKXMLContextPtr_t();
59
0
}
60
61
void KEY1ContentElement::CDATA(const char *value)
62
0
{
63
0
  if (bool(getState().m_currentText))
64
0
  {
65
0
    getState().m_currentText->setParagraphStyle(m_divStyle.getStyle());
66
0
    KEY1SpanElement::sendCDATA(value, getState().m_currentText, m_spanStyle.getStyle(), m_delayedLineBreak);
67
0
  }
68
0
}
69
70
void KEY1ContentElement::text(const char *value)
71
0
{
72
0
  if (bool(getState().m_currentText))
73
0
  {
74
0
    if (m_delayedLineBreak)
75
0
    {
76
0
      getState().m_currentText->flushParagraph();
77
0
      m_delayedLineBreak=false;
78
0
    }
79
0
    getState().m_currentText->setParagraphStyle(m_divStyle.getStyle());
80
0
    getState().m_currentText->setSpanStyle(m_spanStyle.getStyle());
81
0
    getState().m_currentText->insertText(value);
82
0
  }
83
0
}
84
85
}
86
87
/* vim:set shiftwidth=2 softtabstop=2 expandtab: */