Module tf.advanced.volumes

Produce links to Text-Fabric data and links from nodes to web resources.

Expand source code Browse git
"""
Produce links to Text-Fabric data and links from nodes to web resources.
"""

import re
import types


UNSUPPORTED = ""

pathRe = re.compile(
    r"^(.*/(?:github|text-fabric-data))/([^/]+)/([^/]+)/(.*)$", flags=re.I
)


def volumesApi(app):
    """Produce the volume support functions API.

    Volume support provides the functions `tf.volumes.extract` and
    `tf.volumes.collect` as methods on the app object.
    These operations will be called with the `_local` source/destination
    With these operations you can `extract()` and `collect()` volumes
    from the currently loaded work.
    The volumes in question reside in the directory `_local`
    under the main directory with feature files.

    Parameters
    ----------
    app: obj
        The high-level API object
    """

    app.getVolumes = types.MethodType(getVolumes, app)

    if hasattr(app, "api"):
        app.extract = types.MethodType(extract, app)
        app.collect = types.MethodType(collect, app)

    TF = app.TF

    if TF is None:
        return

    app.collectionInfo = None
    app.volumeInfo = None

    if TF.collection:
        app.collectionInfo = TF.collectionInfo
    else:
        if TF.volume:
            app.volumeInfo = TF.volumeInfo


def getVolumes(app, *args, **kwargs):
    """Calls `tf.fabric.Fabric.getVolumes` from an app object.

    !!! hint "No need to load feature data"
        This function works even if no data has been loaded,
        so you can use it after

        ```
        A = use(xxx, loadData=False)
        ```
    """

    TF = app.TF

    if TF is None:
        return []

    return TF.getVolumes(*args, **kwargs)


def extract(app, *args, **kwargs):
    """Calls `tf.fabric.Fabric.extract` from an app object."""

    TF = app.TF

    if TF is None:
        return {}

    return TF.extract(*args, **kwargs)


def collect(app, *args, **kwargs):
    """Calls `tf.fabric.Fabric.collect` from an app object."""
    TF = app.TF

    if TF is None:
        return False

    return TF.collect(*args, **kwargs)

Functions

def collect(app, *args, **kwargs)

Calls Fabric.collect() from an app object.

Expand source code Browse git
def collect(app, *args, **kwargs):
    """Calls `tf.fabric.Fabric.collect` from an app object."""
    TF = app.TF

    if TF is None:
        return False

    return TF.collect(*args, **kwargs)
def extract(app, *args, **kwargs)

Calls Fabric.extract() from an app object.

Expand source code Browse git
def extract(app, *args, **kwargs):
    """Calls `tf.fabric.Fabric.extract` from an app object."""

    TF = app.TF

    if TF is None:
        return {}

    return TF.extract(*args, **kwargs)
def getVolumes(app, *args, **kwargs)

Calls Fabric.getVolumes() from an app object.

No need to load feature data

This function works even if no data has been loaded, so you can use it after

A = use(xxx, loadData=False)

Expand source code Browse git
def getVolumes(app, *args, **kwargs):
    """Calls `tf.fabric.Fabric.getVolumes` from an app object.

    !!! hint "No need to load feature data"
        This function works even if no data has been loaded,
        so you can use it after

        ```
        A = use(xxx, loadData=False)
        ```
    """

    TF = app.TF

    if TF is None:
        return []

    return TF.getVolumes(*args, **kwargs)
def volumesApi(app)

Produce the volume support functions API.

Volume support provides the functions tf.volumes.extract and tf.volumes.collect as methods on the app object. These operations will be called with the _local source/destination With these operations you can extract() and collect() volumes from the currently loaded work. The volumes in question reside in the directory _local under the main directory with feature files.

Parameters

app : obj
The high-level API object
Expand source code Browse git
def volumesApi(app):
    """Produce the volume support functions API.

    Volume support provides the functions `tf.volumes.extract` and
    `tf.volumes.collect` as methods on the app object.
    These operations will be called with the `_local` source/destination
    With these operations you can `extract()` and `collect()` volumes
    from the currently loaded work.
    The volumes in question reside in the directory `_local`
    under the main directory with feature files.

    Parameters
    ----------
    app: obj
        The high-level API object
    """

    app.getVolumes = types.MethodType(getVolumes, app)

    if hasattr(app, "api"):
        app.extract = types.MethodType(extract, app)
        app.collect = types.MethodType(collect, app)

    TF = app.TF

    if TF is None:
        return

    app.collectionInfo = None
    app.volumeInfo = None

    if TF.collection:
        app.collectionInfo = TF.collectionInfo
    else:
        if TF.volume:
            app.volumeInfo = TF.volumeInfo