/**
 * @license
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/** @polymerBehavior Gerrit.URLEncodingBehavior */
export const URLEncodingBehavior = {
  /**
   * Pretty-encodes a URL. Double-encodes the string, and then replaces
   *   benevolent characters for legibility.
   *
   * @param {string} url
   * @param {boolean=} replaceSlashes
   * @return {string}
   */
  encodeURL(url, replaceSlashes) {
    // @see Issue 4255 regarding double-encoding.
    let output = encodeURIComponent(encodeURIComponent(url));
    // @see Issue 4577 regarding more readable URLs.
    output = output.replace(/%253A/g, ':');
    output = output.replace(/%2520/g, '+');
    if (replaceSlashes) {
      output = output.replace(/%252F/g, '/');
    }
    return output;
  },

  /**
   * Single decode for URL components. Will decode plus signs ('+') to spaces.
   * Note: because this function decodes once, it is not the inverse of
   * encodeURL.
   *
   * @param {string} url
   * @return {string}
   */
  singleDecodeURL(url) {
    const withoutPlus = url.replace(/\+/g, '%20');
    return decodeURIComponent(withoutPlus);
  },
};

// TODO(dmfilippov) Remove the following lines with assignments
// Plugins can use the behavior because it was accessible with
// the global Gerrit... variable. To avoid breaking changes in plugins
// temporary assign global variables.
window.Gerrit = window.Gerrit || {};
window.Gerrit.URLEncodingBehavior = URLEncodingBehavior;
