forked from amironov73/GoIrbis
/
SearchScenario.go
83 lines (65 loc) · 2.53 KB
/
SearchScenario.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package irbis
import "strconv"
// SearchScenario Сценарий поиска.
type SearchScenario struct {
// Name Название поискового атрибута
// (автор, инвентарный номер и т. д.).
Name string
// Prefix Префикс соответствующих терминов
// в словаре (может быть пустым).
Prefix string
// DictionaryType Тип словаря для соответствующего поиска.
DictionaryType int
// MenuName Имя файла справочника.
MenuName string
// OldFormat Имя формата (без расширения).
OldFormat string
// Correction Способ корректировки по словарю.
Correction string
// Truncation Исходное положение переключателя "Усечение".
Truncation string
// Hint Текст подсказки/предупреждения.
Hint string
// ModByDicAuto Параметр пока не задействован.
ModByDicAuto string
// Logic Применимые логические операторы.
Logic string
// Advance Правила автоматического расширения поиска
// на основе авторитетного файла или тезауруса.
Advance string
// Format Имя формата показа документов.
Format string
}
func (section *IniSection) get(name string, index int) string {
fullName := "Item" + name + strconv.Itoa(index)
return section.GetValue(fullName, "")
}
func (section *IniSection) getInt(name string, index int) int {
value := section.get(name, index)
result, _ := strconv.Atoi(value)
return result
}
func ParseScenarios(ini *IniFile) (result []SearchScenario) {
section := ini.FindSection("SEARCH")
if section == nil {
return
}
count, _ := strconv.Atoi(section.GetValue("ItemNumb", "0"))
for i := 0; i < count; i++ {
scenario := SearchScenario{}
scenario.Name = section.get("Name", i)
scenario.Prefix = section.get("Pref", i)
scenario.DictionaryType = section.getInt("DictionType", i)
scenario.MenuName = section.get("Menu", i)
scenario.OldFormat = ""
scenario.Correction = section.get("ModByDic", i)
scenario.Truncation = section.get("Tranc", i)
scenario.Hint = section.get("Hint", i)
scenario.ModByDicAuto = section.get("ModByDicAuto", i)
scenario.Logic = section.get("Logic", i)
scenario.Advance = section.get("Adv", i)
scenario.Format = section.get("Pft", i)
result = append(result, scenario)
}
return
}