# -*- coding: utf-8 -*-
'''
Module for defining new filter for sorting
host names/alias by FQDN first and alphabetically
'''

from jinja2 import Undefined

def __virtual__():
    return 'linux_hosts'

def fqdn_sort_fn(n1, n2):
    l1 = n1.split('.')
    l2 = n2.split('.')
    if len(l1) > len(l2):
        return -1
    if len(l1) < len(l2):
        return 1
    for i1, i2 in zip(l1, l2):
        if i1 < i2:
            return -1
        if i1  > i2:
            return 1
    return 0

def fqdn_sort_filter(iterable):
    if iterable is None or isinstance(iterable, Undefined):
        return iterable
    # Do effective custom sorting of iterable here
    return sorted(set(iterable), cmp=fqdn_sort_fn)