Sha256: 1b26348126008f793d91fb7e5f17771891f948c054bef4ef3423d78803edc726

Contents?: true

Size: 1.62 KB

Versions: 6

Compression:

Stored size: 1.62 KB

Contents

// @flow

let railsRoot = process.cwd();

export function setRailsRoot(newRailsRoot: string) {
  railsRoot = newRailsRoot;
}

export function pathJoin(...pieces: Array<?string>): string {
  const output = [];
  if (pieces[0]) {
    const firstPiece = pieces[0].replace(/\s+|[\s\/]+$/g, '');
    output.push(firstPiece);
  }

  pieces.slice(1).forEach(piece => {
    if (piece == null) {
      return;
    }

    const cleanPiece = piece.replace(/^[\s\/]+|[\/\s]+$/g, '');
    output.push(cleanPiece);
  });

  return output.join('/');
}

export function preparePublicPath(publicPath: ?string): string {
  if (publicPath == null) {
    return '';
  }

  return publicPath.replace(/^\/|\/$/g, '');
}

export function getHostname(hostInfo: HostInfo): string {
  if ([80, 443].indexOf(hostInfo.port) === -1) {
    return `${hostInfo.host}:${hostInfo.port}`;
  }

  return hostInfo.host;
}

export function formatPublicPath(publicPath: ?string, hostInfo: HostInfo): string {
  if (publicPath && publicPath.indexOf('//') !== -1) {
    return publicPath;
  }

  const protocol = hostInfo.port === 443 ? 'https' : 'http';
  const host = getHostname(hostInfo);
  const pathname = preparePublicPath(publicPath);
  return `${protocol}://${host}/${pathname}/`;
}

export function railsPath(value: any): any {
  if (Array.isArray(value)) {
    return value.map(item => railsPath(item));
  }

  if (value instanceof Object) {
    const output = {};
    Object.keys(value).forEach((key) => {
      output[key] = railsPath(value[key]);
    });
    return output;
  }

  if (!/^~/.test(value)) {
    return value;
  }

  return pathJoin(railsRoot, value.replace(/^~/, ''));
}

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
hauler-0.3.4 src/utils/path.js
hauler-0.3.3 src/utils/path.js
hauler-0.3.2 src/utils/path.js
hauler-0.3.1 src/utils/path.js
hauler-0.3.0 src/utils/path.js
hauler-0.2.0 src/utils/path.js