File size: 3,909 Bytes
53e6ab1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
def apply_search_replace_changes(original_content: str, changes_text: str) -> str:
    """Apply search/replace changes to content (HTML, Python, etc.)"""
    if not changes_text.strip():
        return original_content
    blocks=[]
    current_block=""
    lines=changes_text.split('\n')
    for line in lines:
        if line.strip()==SEARCH_START:
            if current_block.strip(): blocks.append(current_block.strip())
            current_block=line+"\n"
        elif line.strip()==REPLACE_END:
            current_block+=line+"\n"
            blocks.append(current_block.strip())
            current_block=""
        else:
            current_block+=line+"\n"
    if current_block.strip(): blocks.append(current_block.strip())
    modified_content=original_content
    for block in blocks:
        lines=block.split('\n')
        search_lines=[]; replace_lines=[]
        in_search=False; in_replace=False
        for ln in lines:
            if ln.strip()==SEARCH_START:
                in_search=True; in_replace=False
            elif ln.strip()==DIVIDER:
                in_search=False; in_replace=True
            elif ln.strip()==REPLACE_END:
                in_replace=False
            elif in_search:
                search_lines.append(ln)
            elif in_replace:
                replace_lines.append(ln)
        if search_lines:
            search_text='\n'.join(search_lines).strip()
            replace_text='\n'.join(replace_lines).strip()
            if search_text in modified_content:
                modified_content=modified_content.replace(search_text,replace_text)
            else:
                print(f"Warning: Search text not found in content: {search_text[:100]}...")
    return modified_content

def apply_transformers_js_search_replace_changes(original_formatted_content: str, changes_text: str) -> str:
    """Apply search/replace changes to transformers.js formatted content (three files)"""
    if not changes_text.strip():
        return original_formatted_content
    files=parse_transformers_js_output(original_formatted_content)
    blocks=[]; current_block=""
    lines=changes_text.split('\n')
    for line in lines:
        if line.strip()==SEARCH_START:
            if current_block.strip(): blocks.append(current_block.strip())
            current_block=line+"\n"
        elif line.strip()==REPLACE_END:
            current_block+=line+"\n"
            blocks.append(current_block.strip())
            current_block=""
        else:
            current_block+=line+"\n"
    if current_block.strip(): blocks.append(current_block.strip())
    for block in blocks:
        lines=block.split('\n')
        search_lines=[]; replace_lines=[]
        in_search=False; in_replace=False; target_file=None
        for ln in lines:
            if ln.strip()==SEARCH_START:
                in_search=True; in_replace=False
            elif ln.strip()==DIVIDER:
                in_search=False; in_replace=True
            elif ln.strip()==REPLACE_END:
                in_replace=False
            elif in_search:
                search_lines.append(ln)
            elif in_replace:
                replace_lines.append(ln)
        if search_lines:
            search_text='\n'.join(search_lines).strip()
            replace_text='\n'.join(replace_lines).strip()
            if search_text in files['index.html']:
                target_file='index.html'
            elif search_text in files['index.js']:
                target_file='index.js'
            elif search_text in files['style.css']:
                target_file='style.css'
            if target_file and search_text in files[target_file]:
                files[target_file]=files[target_file].replace(search_text,replace_text)
            else:
                print(f"Warning: Search text not found in any transformers.js file: {search_text[:100]}...")
    return format_transformers_js_output(files)