src/basilisp/lang/reader.py
def _read_meta(ctx: ReaderContext) -> IMeta:
    """Read metadata and apply that to the next object in the
    input stream."""
    start = ctx.reader.advance()
    assert start == "^"
    meta = _read_next_consuming_comment(ctx)

    meta_map: Optional[lmap.Map[LispForm, LispForm]] = None
    if isinstance(meta, symbol.Symbol):
        meta_map = lmap.map({keyword.keyword("tag"): meta})
    elif isinstance(meta, keyword.Keyword):
        meta_map = lmap.map({meta: True})
    elif isinstance(meta, lmap.Map):
        meta_map = meta
    else:
        raise SyntaxError(
            f"Expected symbol, keyword, or map for metadata, not {type(meta)}"
        )

    obj_with_meta = _read_next_consuming_comment(ctx)
    try:
        return obj_with_meta.with_meta(meta_map)  # type: ignore
    except AttributeError:
        raise SyntaxError(
            f"Can not attach metadata to object of type {type(obj_with_meta)}"
        )
def _read_meta(ctx: ReaderContext) -> IMeta:
    start = ctx.reader.advance()
    assert start == "^"
    meta = _read_next_consuming_comment(ctx)

    meta_map: Optional[lmap.Map[LispForm, LispForm]] = None
    if isinstance(meta, symbol.Symbol):
        meta_map = lmap.map({keyword.keyword("tag"): meta})
    elif isinstance(meta, keyword.Keyword):
        meta_map = lmap.map({meta: True})
    elif isinstance(meta, lmap.Map):
        meta_map = meta
    else:
        raise SyntaxError(
            f"Expected symbol, keyword, or map for metadata, not {type(meta)}"
        )

    obj_with_meta = _read_next_consuming_comment(ctx)
    try:
        return obj_with_meta.with_meta(meta_map)  # type: ignore
    except AttributeError:
        raise SyntaxError(
            f"Can not attach metadata to object of type {type(obj_with_meta)}"
        )
def _read_meta ( ctx : ReaderContext ) -> IMeta : start = ctx . reader . advance ( ) assert start == "^" meta = _read_next_consuming_comment ( ctx ) meta_map : Optional [ lmap . Map [ LispForm , LispForm ] ] = None if isinstance ( meta , symbol . Symbol ) : meta_map = lmap . map ( { keyword . keyword ( "tag" ) : meta } ) elif isinstance ( meta , keyword . Keyword ) : meta_map = lmap . map ( { meta : True } ) elif isinstance ( meta , lmap . Map ) : meta_map = meta else : raise SyntaxError ( f"Expected symbol, keyword, or map for metadata, not {type(meta)}" ) obj_with_meta = _read_next_consuming_comment ( ctx ) try : return obj_with_meta . with_meta ( meta_map ) # type: ignore except AttributeError : raise SyntaxError ( f"Can not attach metadata to object of type {type(obj_with_meta)}" )
Read metadata and apply that to the next object in the
    input stream.
Read metadata and apply that to the next object in the input stream .