<!DOCTYPE html>
<html lang="en">
<!--
/********************************************************************************
** Copyright (c) 2015 Obeo.
** All rights reserved. This program and the accompanying materials
** are made available under the terms of the Eclipse Public License v1.0
** which accompanies this distribution, and is available at
** http://www.eclipse.org/legal/epl-v10.html
**
** Contributors:
**    Stephane Begaudeau (Obeo) - initial API and implementation
*********************************************************************************/
-->
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="St&eacute;phane B&eacute;gaudeau">
    <!-- IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <link href="../assets/css/bootstrap.css" rel="stylesheet">
    <link href="../assets/css/docs.css" rel="stylesheet">
    <title>Acceleo</title>
  </head>

  <body>
    <div class="container">
   <header class="jumbotron subhead" id="overview">
    <h1>Acceleo Query Language Documentation</h1>
    <!--<div class="subnav">
       <ul class="nav nav-pills">
        <li><a href="#introduction">Introduction</a></li>
        <li><a href="#language">Language</a></li>
        <li><a href="#operations">Operations</a></li>
        <li><a href="#standalone">Stand Alone</a></li>
        <li><a href="#migration">Migration</a></li>
        <li><a href="#textproductionrules">Text Production Rules</a></li>
        <li><a href="#onlineresources">Online Resources</a></li>
      </ul>
    </div>-->
  </header>

  <section id="services">
    <div class="page-header">
      <h1>Services available for Comparables</h1>
    </div>

        <h3>greaterThan(a: java.lang.Comparable, b: java.lang.Comparable) = Boolean</h3>
        <p>
          Compares "a" to "b" and return "true" if "a" is greater than "b".
        </p>
        <table class="table table-striped table-bordered table-condensed">
          <thead>
            <tr>
              <th>Expression</th>
              <th>Result</th>
            </tr>
          </thead><colgroup><col width="60%" /><col width="40%" /></colgroup>
          <tbody>
            <tr>
              <td>'Hello'.greaterThan('Abc')</td>
              <td>true</td>
            </tr>
            <tr>
              <td>'Hello'.greaterThan('Hello')</td>
              <td>false</td>
            </tr>
          </tbody>
        </table>
        <p>
          
        </p>
        <hr />

        <h3>greaterThanEqual(a: java.lang.Comparable, b: java.lang.Comparable) = Boolean</h3>
        <p>
          Compares "a" to "b" and return "true" if "a" is greater than or equal to "b".
        </p>
        <table class="table table-striped table-bordered table-condensed">
          <thead>
            <tr>
              <th>Expression</th>
              <th>Result</th>
            </tr>
          </thead><colgroup><col width="60%" /><col width="40%" /></colgroup>
          <tbody>
            <tr>
              <td>'Hello'.greaterThanEqual('Abc')</td>
              <td>true</td>
            </tr>
            <tr>
              <td>'Hello'.greaterThanEqual('Hello')</td>
              <td>true</td>
            </tr>
          </tbody>
        </table>
        <p>
          
        </p>
        <hr />

        <h3>lessThan(a: java.lang.Comparable, b: java.lang.Comparable) = Boolean</h3>
        <p>
          Compares "a" to "b" and return "true" if "a" is less than "b".
        </p>
        <table class="table table-striped table-bordered table-condensed">
          <thead>
            <tr>
              <th>Expression</th>
              <th>Result</th>
            </tr>
          </thead><colgroup><col width="60%" /><col width="40%" /></colgroup>
          <tbody>
            <tr>
              <td>'Hello'.lessThan('Hello')</td>
              <td>false</td>
            </tr>
            <tr>
              <td>'Hello'.lessThan('World')</td>
              <td>true</td>
            </tr>
          </tbody>
        </table>
        <p>
          
        </p>
        <hr />

        <h3>lessThanEqual(a: java.lang.Comparable, b: java.lang.Comparable) = Boolean</h3>
        <p>
          Compares "a" to "b" and return "true" if "a" is less than or equal to "b".
        </p>
        <table class="table table-striped table-bordered table-condensed">
          <thead>
            <tr>
              <th>Expression</th>
              <th>Result</th>
            </tr>
          </thead><colgroup><col width="60%" /><col width="40%" /></colgroup>
          <tbody>
            <tr>
              <td>'Hello'.lessThanEqual('Hello')</td>
              <td>true</td>
            </tr>
            <tr>
              <td>'Hello'.lessThanEqual('World')</td>
              <td>true</td>
            </tr>
          </tbody>
        </table>
        <p>
          
        </p>
        <hr />
  </section>

    </div>
  </body>

</html>
