<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>

    <title>Clippy lints documentation</title>

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css"/>
    <style>
        [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { display: none !important; }
    </style>
</head>
<body>
    <div class="container" ng-app="clippy" ng-controller="docVersions">
        <div class="page-header">
            <h1>Clippy lints documentation</h1>
        </div>

        <div ng-cloak>
            <div class="alert alert-info" role="alert" ng-if="loading">
                Loading&#x2026;
            </div>
            <div class="alert alert-danger" role="alert" ng-if="error">
                Error loading versions!<br/>
                You can always try to get <a href="master/index.html">the master branch docs</a>.
            </div>

            <article class="panel panel-default" ng-show="data">
                <div class="panel-heading">
                    <h3 class="panel-title">
                        Available versions
                    </h3>
                </div>

                <ul class="list-group">
                    <a class="list-group-item" ng-repeat="version in data | orderBy:versionOrder:true"
                       href="./{{version}}/index.html">
                        {{normalizeVersionDisplay(version)}}
                    </a>
                </ul>
            </article>
        </div>
    </div>

    <a href="https://github.com/rust-lang/rust-clippy">
        <img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"/>
    </a>


    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.12/angular.min.js"></script>
    <script>
        angular.module('clippy', [])
        .controller('docVersions', function ($scope, $http) {
            $scope.loading = true;

            $scope.normalizeVersionDisplay = function(v) {
                return v.replace(/^v/, '');
            };

            $scope.normalizeVersion = function(v) {
                return v.replace(/^v/, '').replace(/^rust-/, '');
            };

            $scope.versionOrder = function(v) {
                if (v === 'master') { return Infinity; }
                if (v === 'stable') { return Number.MAX_VALUE; }
                if (v === 'beta') { return Number.MAX_VALUE - 1; }

                return $scope.normalizeVersion(v)
                    .split('.')
                    .reverse()
                    .reduce(function(acc, val, index) {
                        return acc + (val * Math.pow(100, index));
                    }, 0);
            }

            $http.get('./versions.json')
            .success(function (data) {
                $scope.data = data;
                $scope.loading = false;
            })
            .error(function (data) {
                $scope.error = data;
                $scope.loading = false;
            });
        })
        ;
    </script>
</body>
</html>