Sha256: 2d24fc37c6a8be80af55530bcc035c35a09179bdd68da8e721128b902fe478f0

Contents?: true

Size: 1.97 KB

Versions: 16

Compression:

Stored size: 1.97 KB

Contents

#include <internal/nodes/config_node_complex_value.hpp>
#include <internal/nodes/config_node_single_token.hpp>
#include <internal/tokens.hpp>
#include <internal/nodes/config_node_field.hpp>

using namespace std;

namespace hocon {

    config_node_complex_value::config_node_complex_value(shared_node_list children) :
            _children(move(children)) { }

    shared_node_list const& config_node_complex_value::children() const {
        return _children;
    }

    token_list config_node_complex_value::get_tokens() const {
        token_list tokens;
        int i = 0;
        for (auto&& node : _children) {
            i++;
            token_list node_tokens = node->get_tokens();
            tokens.insert(tokens.end(), node_tokens.begin(), node_tokens.end());
        }
        return tokens;
    }

    shared_ptr<const config_node_complex_value> config_node_complex_value::indent_text(
            shared_node indentation) const
    {
        shared_node_list children_copy = _children;
        for (size_t i = 0; i < children_copy.size(); i++) {
            auto child = children_copy[i];
            if (auto single_token = dynamic_pointer_cast<const config_node_single_token>(child)) {
                if (single_token->get_token()->get_token_type() == token_type::NEWLINE) {
                    children_copy.insert(children_copy.begin() + i + 1, indentation);
                }
            } else if (auto field = dynamic_pointer_cast<const config_node_field>(child)) {
                auto value = field->get_value();
                if (auto complex = dynamic_pointer_cast<const config_node_complex_value>(value)) {
                    children_copy[i] = field->replace_value(complex->indent_text(indentation));
                }
            } else if (auto complex = dynamic_pointer_cast<const config_node_complex_value>(child)) {
                children_copy[i] = complex->indent_text(indentation);
            }
        }
        return new_node(children_copy);
    }

}  // namespace hocon

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
facter-3.12.2.cfacter.20181217 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
facter-3.12.1.cfacter.20181031 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
facter-3.11.6.cfacter.20181031 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
facter-3.12.1.cfacter.20181023 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
facter-3.11.5.cfacter.20181022 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
facter-3.12.0.cfacter.20181004 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
facter-3.12.0.cfacter.20181001 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
facter-3.12.0.cfacter.20180918 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
facter-3.11.4.cfacter.20180821 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
facter-3.11.3.cfacter.20180716 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
facter-3.11.2.cfacter.20180612 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
facter-3.9.6.cfacter.20180612 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
facter-3.11.2.cfacter.20180606 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
facter-3.9.6.cfacter.20180606 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
facter-3.11.0.cfacter.20180319 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc
cfacter-3.11.0.rc.20180314 ext/facter/cpp-hocon/lib/src/nodes/config_node_complex_value.cc