validate.go
author Mikael Berthe <mikael@lilotux.net>
Sat, 07 Apr 2018 22:49:51 +0200
changeset 15 eac7d78ff641
parent 10 8dc05ff5dbe2
permissions -rw-r--r--
Update gotak import path to fix Travis build Update import path in the gotak subdir so that Travis tests can be played against the Github repository. Also, add missing dependencies to the Travis YAML file.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10
8dc05ff5dbe2 Add (MIT) license
Mikael Berthe <mikael@lilotux.net>
parents: 9
diff changeset
     1
// Copyright (C) 2016 Mikael Berthe <mikael@lilotux.net>. All rights reserved.
8dc05ff5dbe2 Add (MIT) license
Mikael Berthe <mikael@lilotux.net>
parents: 9
diff changeset
     2
// Use of this source code is governed by the MIT license,
8dc05ff5dbe2 Add (MIT) license
Mikael Berthe <mikael@lilotux.net>
parents: 9
diff changeset
     3
// which can be found in the LICENSE file.
8dc05ff5dbe2 Add (MIT) license
Mikael Berthe <mikael@lilotux.net>
parents: 9
diff changeset
     4
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     5
package takuzu
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     6
9
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
     7
// This file contains the takuzu validation functions and methods.
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
     8
8
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
     9
// checkRange returns true if the range is completely defined, and an error
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    10
// if it doesn't follow the rules for a takuzu line or column
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    11
// Note that the boolean might be invalid if the error is not nil.
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    12
func checkRange(cells []Cell) (bool, error) {
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    13
	full := true
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    14
	size := len(cells)
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    15
	counters := []int{0, 0}
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    16
8
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    17
	var prevCell Cell
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    18
	var prevCellCount int
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    19
8
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    20
	for _, c := range cells {
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    21
		if !c.Defined {
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    22
			full = false
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    23
			prevCell.Defined = false
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    24
			prevCellCount = 0
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    25
			continue
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    26
		}
8
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    27
		counters[c.Value]++
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    28
		if prevCellCount == 0 {
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    29
			prevCellCount = 1
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    30
		} else {
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    31
			if c.Value == prevCell.Value {
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    32
				prevCellCount++
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    33
				if prevCellCount > 2 {
9
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    34
					v := c.Value
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    35
					return full, validationError{
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    36
						ErrorType: ErrorTooManyAdjacentValues,
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    37
						CellValue: &v,
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    38
					}
8
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    39
				}
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    40
			} else {
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    41
				prevCellCount = 1
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    42
			}
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    43
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    44
		}
8
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    45
		prevCell = c
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    46
	}
8
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    47
	if counters[0] > size/2 {
9
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    48
		v := 0
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    49
		return full, validationError{
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    50
			ErrorType: ErrorTooManyValues,
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    51
			CellValue: &v,
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    52
		}
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    53
	}
8
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    54
	if counters[1] > size/2 {
9
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    55
		v := 1
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    56
		return full, validationError{
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    57
			ErrorType: ErrorTooManyValues,
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    58
			CellValue: &v,
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    59
		}
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    60
	}
8
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    61
	return full, nil
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    62
}
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    63
8
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    64
// CheckRangeCounts returns true if all cells of the provided range are defined,
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    65
// as well as the number of 0s and the number of 1s in the range.
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    66
func CheckRangeCounts(cells []Cell) (full bool, n0, n1 int) {
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    67
	counters := []int{0, 0}
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    68
	full = true
2
d41c4f8fe066 Add some checks
Mikael Berthe <mikael@lilotux.net>
parents: 0
diff changeset
    69
8
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    70
	for _, c := range cells {
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    71
		if c.Defined {
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    72
			counters[c.Value]++
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    73
		} else {
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    74
			full = false
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    75
		}
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    76
	}
8
955d3add9426 More code refactoring; split takuzu.go and create validate.go
Mikael Berthe <mikael@lilotux.net>
parents: 7
diff changeset
    77
	return full, counters[0], counters[1]
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    78
}
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    79
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    80
// CheckLine returns an error if the line i fails validation
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    81
func (b Takuzu) CheckLine(i int) error {
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    82
	_, err := checkRange(b.GetLine(i))
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    83
	return err
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    84
}
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    85
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    86
// CheckColumn returns an error if the column i fails validation
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    87
func (b Takuzu) CheckColumn(i int) error {
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    88
	_, err := checkRange(b.GetColumn(i))
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    89
	return err
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    90
}
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    91
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    92
// Validate checks a whole board for errors (not completeness)
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    93
// Returns true if all cells are defined.
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    94
func (b Takuzu) Validate() (bool, error) {
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    95
	finished := true
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    96
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    97
	computeVal := func(cells []Cell) (val int) {
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    98
		for i := 0; i < len(cells); i++ {
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
    99
			val += cells[i].Value * 1 << uint(i)
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   100
		}
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   101
		return
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   102
	}
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   103
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   104
	lineVals := make(map[int]bool)
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   105
	colVals := make(map[int]bool)
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   106
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   107
	for i := 0; i < b.Size; i++ {
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   108
		var d []Cell
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   109
		var full bool
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   110
		var err error
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   111
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   112
		// Let's check line i
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   113
		d = b.GetLine(i)
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   114
		full, err = checkRange(d)
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   115
		if err != nil {
9
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   116
			err := err.(validationError)
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   117
			err.LineNumber = &i
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   118
			return false, err
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   119
		}
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   120
		if full {
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   121
			hv := computeVal(d)
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   122
			if lineVals[hv] {
9
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   123
				err := validationError{
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   124
					ErrorType:  ErrorDuplicate,
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   125
					LineNumber: &i,
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   126
				}
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   127
				return false, err
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   128
			}
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   129
			lineVals[hv] = true
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   130
		} else {
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   131
			finished = false
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   132
		}
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   133
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   134
		// Let's check column i
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   135
		d = b.GetColumn(i)
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   136
		full, err = checkRange(d)
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   137
		if err != nil {
9
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   138
			err := err.(validationError)
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   139
			err.ColumnNumber = &i
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   140
			return false, err
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   141
		}
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   142
		if full {
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   143
			hv := computeVal(d)
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   144
			if colVals[hv] {
9
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   145
				err := validationError{
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   146
					ErrorType:    ErrorDuplicate,
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   147
					ColumnNumber: &i,
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   148
				}
4b3436c03726 Switch completely to the new validation "ErrorType"
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   149
				return false, err
0
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   150
			}
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   151
			colVals[hv] = true
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   152
		} else {
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   153
			finished = false
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   154
		}
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   155
	}
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   156
	return finished, nil
00371339bbcc Import refactored version
Mikael Berthe <mikael@lilotux.net>
parents:
diff changeset
   157
}