/**
 * 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.
 */

{namespace com.google.gerrit.server.mail.template}

/*
 * Private templates that cannot be overridden.
 */

/**
 * Private template to generate "View Change" buttons.
 */
{template ViewChangeButton}
  {@param email: ?}
  <a href="{$email.changeUrl}">View Change</a>
{/template}

/**
 * Private template to render PRE block with consistent font-sizing.
 */
{template Pre}
  {@param content: ?}
  {let $preStyle kind="css"}
    font-family: monospace,monospace; // Use this to avoid browsers scaling down
                                      // monospace text.
    white-space: pre-wrap;
  {/let}
  <pre style="{$preStyle}">{$content|changeNewlineToBr}</pre>
{/template}

/**
 * Take a list of unescaped comment blocks and emit safely escaped HTML to
 * render it nicely with wiki-like format.
 *
 * Each block is a map with a type key. When the type is 'paragraph', or 'pre',
 * it also has a 'text' key that maps to the unescaped text content for the
 * block. If the type is 'list', the map will have a 'items' key which maps to
 * list of unescaped list item strings. If the type is quote, the map will have
 * a 'quotedBlocks' key which maps to the blocks contained within the quote.
 *
 * This mechanism encodes as little structure as possible in order to depend on
 * the Soy autoescape mechanism for all of the content.
 */
{template WikiFormat}
  {@param content: ?}
  {let $blockquoteStyle kind="css"}
    border-left: 1px solid #aaa;
    margin: 10px 0;
    padding: 0 10px;
  {/let}

  {let $pStyle kind="css"}
    white-space: pre-wrap;
    word-wrap: break-word;
  {/let}

  {for $block in $content}
    {if $block.type == 'paragraph'}
      <p style="{$pStyle}">{$block.text|changeNewlineToBr}</p>
    {elseif $block.type == 'quote'}
      <blockquote style="{$blockquoteStyle}">
        {call WikiFormat}{param content: $block.quotedBlocks /}{/call}
      </blockquote>
    {elseif $block.type == 'pre'}
      {call Pre}{param content: $block.text /}{/call}
    {elseif $block.type == 'list'}
      <ul>
        {for $item in $block.items}
          <li>{$item}</li>
        {/for}
      </ul>
    {/if}
  {/for}
{/template}

{template UnifiedDiff}
  {@param diffLines: ?}
  {let $addStyle kind="css"}
    color: hsl(120, 100%, 40%);
  {/let}

  {let $removeStyle kind="css"}
    color: hsl(0, 100%, 40%);
  {/let}

  {let $preStyle kind="css"}
    font-family: monospace,monospace; // Use this to avoid browsers scaling down
                                      // monospace text.
    white-space: pre-wrap;
  {/let}

  <pre style="{$preStyle}">
    {for $line in $diffLines}
      {if $line.type == 'add'}
        <span style="{$addStyle}">
      {elseif $line.type == 'remove'}
        <span style="{$removeStyle}">
      {else}
        <span>
      {/if}
        {$line.text}
      </span><br>
    {/for}
  </pre>
{/template}
