Sha256: e2356d2b1abe85a24044e5b31ac53294612a25692aaf2e305715bc0f73a07a13

Contents?: true

Size: 1.5 KB

Versions: 5

Compression:

Stored size: 1.5 KB

Contents

//
//  RefractSourceMap.h
//  drafter
//
//  Created by Jiri Kratochvil on 31/07/15.
//  Copyright (c) 2015 Apiary Inc. All rights reserved.
//

#ifndef DRAFTER_REFRACTSOURCEMAP_H
#define DRAFTER_REFRACTSOURCEMAP_H

#include "Serialize.h"

namespace drafter {

    refract::IElement* SourceMapToRefract(const mdp::CharactersRangeSet& sourceMap);

    template<typename T>
    void AttachSourceMap(refract::IElement* element, const T& nodeInfo)
    {
        if (!nodeInfo.sourceMap->sourceMap.empty()) {
            element->attributes[SerializeKey::SourceMap] = SourceMapToRefract(nodeInfo.sourceMap->sourceMap);
        }
    }

    template<typename T>
    refract::IElement* PrimitiveToRefract(const NodeInfo<T>& primitive)
    {
        typedef typename refract::ElementTypeSelector<T>::ElementType ElementType;

        ElementType* element = refract::IElement::Create(*primitive.node);

        AttachSourceMap(element, primitive);

        return element;
    }

    class ConversionContext;

    template<typename T>
    refract::IElement* LiteralToRefract(const NodeInfo<std::string>& literal, ConversionContext& context)
    {
        std::pair<bool, T> parsed = LiteralTo<T>(*literal.node);

        typename refract::ElementTypeSelector<T>::ElementType* element = new typename refract::ElementTypeSelector<T>::ElementType;
        if (parsed.first) {
            element->set(parsed.second);
        }

        AttachSourceMap(element, literal);

        return element;
    }

}

#endif // #ifndef DRAFTER_REFRACTSOURCEMAP_H

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
lounge_lizard-0.1.4 ext/drafter/src/RefractSourceMap.h
lounge_lizard-0.1.3 ext/drafter/src/RefractSourceMap.h
lounge_lizard-0.1.2 ext/drafter/src/RefractSourceMap.h
lounge_lizard-0.1.1 ext/drafter/src/RefractSourceMap.h
lounge_lizard-0.1.0 ext/drafter/src/RefractSourceMap.h