-
Notifications
You must be signed in to change notification settings - Fork 2
/
BookmarkUtils.py
94 lines (85 loc) · 3.71 KB
/
BookmarkUtils.py
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
84
85
86
87
88
89
90
91
92
93
94
from BasicElements import Bookmark
from random import random
def raw_process(self, b):
name_key = '_name'
if 'n' in b:
name_key = 'n' #V3
time_key = '_time'
if 'b' in b:
time_key = 'b' #V3
# blanck check
if b[name_key] == '':
self.logger.log(
f'{b[time_key]} 空白のブックマークを検出。デフォルト値として stop を代入します。')
b[name_key] = 'stop'
# -> check
if '->' in b[name_key]:
self.logger.log(
f'補助コマンド「->」を確認。「stop,」を代入します。')
b[name_key] = b[name_key].replace('->', 'stop,')
# start check
if b[time_key] <= 1:
self.logger.log('スタートから 1 グリッド以内のブックマークはスタート地点にセットします')
b[time_key] = 0
self.raw_b.append(Bookmark(b[time_key], b[name_key], 0))
def fill_process(self, i):
text = self.raw_b[i].text
start_grid = self.raw_b[i].grid
if i == 0 and start_grid != 0:
self.filled_b.append(Bookmark(0, 'center-2'))
self.logger.log(
'開始位置(グリッド0)にブックマークがないため、スクリプト center-2 を挿入しました。')
if text[:4] == 'fill':
if text.split(',')[0] == 'fill':
self.logger.log('! fill にパラメータが指定されていません。')
return
param = eval(text.split(',')[0][4:])
self.logger.log(f'fill を検出 パラメータ {str(param)}')
orig_text_pattern = ','.join(text.split(',')[1:])
span = param
end_grid = self.raw_b[i+1].grid
self.logger.log(
f'スクリプト {orig_text_pattern} をグリッド {start_grid} から',
f'{end_grid} の直前まで {span} の間隔で敷き詰めます。')
cnt = 0
current_grid = start_grid
while current_grid < end_grid:
# "!"と'?'を変数に
text_pattern = orig_text_pattern.replace('!', str(cnt))
text_pattern = text_pattern.replace('?', str(random()))
cnt += 1
self.filled_b.append(Bookmark(current_grid, text_pattern))
self.logger.log(f'{current_grid} : {text_pattern}')
current_grid += span
self.logger.log(f'n = {cnt}')
else:
self.filled_b.append(self.raw_b[i])
def copy_process(self, i):
text = self.filled_b[i].text
start_grid = self.filled_b[i].grid
if i == 0 and start_grid != 0:
self.copied_b.append(Bookmark(0, 'center-2'))
self.logger.log(
'開始位置(グリッド0)にブックマークがないため、スクリプト center-2 を挿入しました。')
if text[:4] == 'copy':
if text.split(',')[0] == 'copy':
self.logger.log('! copy にパラメータが指定されていません。')
return
param = eval(text.split(',')[0][4:])
self.logger.log(f'copy を検出 パラメータ {str(param)}')
end_grid = self.filled_b[i+1].grid
t_start_grid = param
t_end_grid = param + end_grid - start_grid
self.logger.log(
f'グリッド {start_grid}~{end_grid} のスクリプトを',
f'グリッド {t_start_grid}~{t_end_grid} からコピーします')
tmp = self.copied_b
for t in tmp:
t_grid = t.grid
t_text = t.text
if t_start_grid <= t_grid and t_grid < t_end_grid:
append_grid = start_grid + t_grid - t_start_grid
self.copied_b.append(Bookmark(append_grid, t_text))
self.logger.log(f'{t_grid} -> {append_grid} {t_text}')
else:
self.copied_b.append(self.filled_b[i])