Fix unicode issue for windows (force an encoding)
This commit is contained in:
parent
b147aa0eb1
commit
fecf27165f
@ -7,7 +7,7 @@ from wireviz import wv_colors, wv_helper
|
||||
from wireviz.wv_colors import get_color_hex
|
||||
from wireviz.wv_helper import awg_equiv, mm2_equiv, tuplelist2tsv, \
|
||||
nested_html_table, flatten2d, index_if_list, html_line_breaks, \
|
||||
graphviz_line_breaks, remove_line_breaks
|
||||
graphviz_line_breaks, remove_line_breaks, open_file_read, open_file_write
|
||||
from collections import Counter
|
||||
from typing import List
|
||||
from pathlib import Path
|
||||
@ -303,15 +303,15 @@ class Harness:
|
||||
graph.save(filename=f'{filename}.gv')
|
||||
# bom output
|
||||
bom_list = self.bom_list()
|
||||
with open(f'{filename}.bom.tsv', 'w') as file:
|
||||
with open_file_write(f'{filename}.bom.tsv') as file:
|
||||
file.write(tuplelist2tsv(bom_list))
|
||||
# HTML output
|
||||
with open(f'{filename}.html', 'w') as file:
|
||||
with open_file_write(f'{filename}.html') as file:
|
||||
file.write('<!DOCTYPE html>\n')
|
||||
file.write('<html><body style="font-family:Arial">')
|
||||
file.write('<html><head><meta charset="UTF-8"></head><body style="font-family:Arial">')
|
||||
|
||||
file.write('<h1>Diagram</h1>')
|
||||
with open(f'{filename}.svg') as svg:
|
||||
with open_file_read(f'{filename}.svg') as svg:
|
||||
file.write(re.sub(
|
||||
'^<[?]xml [^?>]*[?]>[^<]*<!DOCTYPE [^>]*>',
|
||||
'<!-- XML and DOCTYPE declarations from SVG file removed -->',
|
||||
|
||||
@ -5,6 +5,9 @@ import os
|
||||
import sys
|
||||
from fnmatch import fnmatch
|
||||
|
||||
# noinspection PyUnresolvedReferences
|
||||
from wv_helper import open_file_write, open_file_read
|
||||
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
||||
|
||||
from wireviz import wireviz
|
||||
@ -25,7 +28,7 @@ def build_demos():
|
||||
wireviz.parse_file(abspath)
|
||||
|
||||
def build_examples():
|
||||
with open(os.path.join(examples_path, readme), 'w') as file:
|
||||
with open_file_write(os.path.join(examples_path, readme)) as file:
|
||||
file.write('# Example gallery\n')
|
||||
for fn in os.listdir(examples_path):
|
||||
if fnmatch(fn, "ex*.yml"):
|
||||
@ -43,7 +46,7 @@ def build_examples():
|
||||
file.write(f'[Source]({fn}) - [Bill of Materials]({outfile_name}.bom.tsv)\n\n\n')
|
||||
|
||||
def build_tutorials():
|
||||
with open(os.path.join(tutorials_path, readme), 'w') as file:
|
||||
with open_file_write(os.path.join(tutorials_path, readme)) as file:
|
||||
file.write('# WireViz Tutorial\n')
|
||||
for fn in os.listdir(tutorials_path):
|
||||
if fnmatch(fn, "tutorial*.yml"):
|
||||
@ -55,12 +58,12 @@ def build_tutorials():
|
||||
|
||||
outfile_name = abspath.split(".yml")[0]
|
||||
|
||||
with open(outfile_name + '.md', 'r') as info:
|
||||
with open_file_read(outfile_name + '.md') as info:
|
||||
for line in info:
|
||||
file.write(line.replace('## ', '## {} - '.format(i)))
|
||||
file.write(f'\n[Source]({fn}):\n\n')
|
||||
|
||||
with open(abspath, 'r') as src:
|
||||
with open_file_read(abspath) as src:
|
||||
file.write('```yaml\n')
|
||||
for line in src:
|
||||
file.write(line)
|
||||
|
||||
@ -14,7 +14,7 @@ if __name__ == '__main__':
|
||||
|
||||
|
||||
from wireviz.Harness import Harness
|
||||
from wireviz.wv_helper import expand
|
||||
from wireviz.wv_helper import expand, open_file_read
|
||||
|
||||
|
||||
def parse(yaml_input: str, file_out: (str, Path) = None, return_types: (None, str, Tuple[str]) = None) -> Any:
|
||||
@ -198,7 +198,7 @@ def parse(yaml_input: str, file_out: (str, Path) = None, return_types: (None, st
|
||||
|
||||
|
||||
def parse_file(yaml_file: str, file_out: (str, Path) = None) -> None:
|
||||
with open(yaml_file, 'r') as file:
|
||||
with open_file_read(yaml_file) as file:
|
||||
yaml_input = file.read()
|
||||
|
||||
if not file_out:
|
||||
@ -228,14 +228,14 @@ def main():
|
||||
print(f'Error: input file {args.input_file} inaccessible or does not exist, check path')
|
||||
sys.exit(1)
|
||||
|
||||
with open(args.input_file) as fh:
|
||||
with open_file_read(args.input_file) as fh:
|
||||
yaml_input = fh.read()
|
||||
|
||||
if args.prepend_file:
|
||||
if not os.path.exists(args.prepend_file):
|
||||
print(f'Error: prepend input file {args.prepend_file} inaccessible or does not exist, check path')
|
||||
sys.exit(1)
|
||||
with open(args.prepend_file) as fh:
|
||||
with open_file_read(args.prepend_file) as fh:
|
||||
prepend = fh.read()
|
||||
yaml_input = prepend + yaml_input
|
||||
|
||||
|
||||
@ -3,8 +3,6 @@
|
||||
|
||||
from typing import List
|
||||
|
||||
from wireviz import wv_colors
|
||||
|
||||
awg_equiv_table = {
|
||||
'0.09': '28',
|
||||
'0.14': '26',
|
||||
@ -114,3 +112,9 @@ def graphviz_line_breaks(inp):
|
||||
def remove_line_breaks(inp):
|
||||
return inp.replace('\n', ' ').rstrip() if isinstance(inp, str) else inp
|
||||
|
||||
def open_file_read(filename):
|
||||
# TODO: Intelligently determine encoding
|
||||
return open(filename, 'r', encoding='UTF-8')
|
||||
|
||||
def open_file_write(filename):
|
||||
return open(filename, 'w', encoding='UTF-8')
|
||||
Loading…
x
Reference in New Issue
Block a user