view +util/ReplaceableString.m @ 577:e45c9b56d50d feature/grids

Add an Empty grid class The need turned up for the flexural code when we may or may not have a grid for the open water and want to plot that solution. In case there is no open water we need an empty grid to plot the empty gridfunction against to avoid errors.
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 07 Sep 2017 09:16:12 +0200
parents 09d964b850ee
children f30eafd6d4dc
line wrap: on
line source

classdef ReplaceableString < handle
    properties
        n
        fmt
        param
    end

    methods
        function obj = ReplaceableString(fmt, varargin)
            default_arg('fmt', '');
            obj.n = 0;

            obj.setFormat(fmt);
            obj.param = varargin;
        end

        function setFormat(obj, fmt)
            obj.fmt = fmt;
        end

        function appendFormat(obj, fmt)
            obj.fmt = [obj.fmt, fmt];
        end

        function update(obj, fmt, varargin)
            obj.setFormat(fmt);
            obj.param = varargin;

            obj.display();
        end

        function updateParam(obj, varargin)
            obj.param = varargin;
            obj.display();
        end

        function show(obj, varargin)
            obj.param = varargin;
            obj.display();
        end

        function remove(obj)
            obj.update('');
        end

        function display(obj)
            reverseStr = repmat(sprintf('\b'), 1, obj.n);
            cleareStr = repmat(sprintf(' '), 1, obj.n);
            newStr = sprintf(obj.fmt, obj.param{:});
            fprintf([reverseStr, cleareStr, reverseStr, newStr]);

            obj.n = length(newStr);
        end
    end

end

function b = padStr(a, n)
    b = sprintf('%-*s', n, a);
end