Skip to content
Snippets Groups Projects
Commit 9ea8564d authored by David Rouquet's avatar David Rouquet
Browse files

Add orig text print before unl graph

parent e3beb791
No related branches found
No related tags found
No related merge requests found
Pipeline #205 passed
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
import tempfile import tempfile
import os import os
import re
from subprocess import Popen, PIPE, STDOUT from subprocess import Popen, PIPE, STDOUT
from IPython.core.display import SVG from IPython.core.display import SVG
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
def unl2dot(text, path): def unl2dot(text, path):
with tempfile.NamedTemporaryFile() as temp: with tempfile.NamedTemporaryFile() as temp:
out_name = os.path.basename(temp.name) out_name = os.path.basename(temp.name)
out_dir = os.path.dirname(temp.name) out_dir = os.path.dirname(temp.name)
with tempfile.NamedTemporaryFile(mode="w") as in_file: with tempfile.NamedTemporaryFile(mode="w") as in_file:
# Remove CRLF and flush output to avoid java errors # Remove CRLF and flush output to avoid java errors
in_file.write(text.replace("\r\n", "\n")) in_file.write(text.replace("\r\n", "\n"))
in_file.flush() in_file.flush()
# Run java parser # Run java parser
cmd = ['java', '-jar', path, cmd = ['java', '-jar', path,
'--input-file', in_file.name, '--input-file', in_file.name,
'--output-Dir', out_dir, '--output-file', out_name, '--output-Dir', out_dir, '--output-file', out_name,
'--output-type', 'dot'] '--output-type', 'dot']
with Popen(cmd, stdout=PIPE, stderr=STDOUT) as p: with Popen(cmd, stdout=PIPE, stderr=STDOUT) as p:
p.wait() p.wait()
p.stdout.flush() p.stdout.flush()
if p.returncode != 0: if p.returncode != 0:
print("Error in unl2rdf: \n\n"+p.stdout.read().decode()) print("Error in unl2rdf: \n\n"+p.stdout.read().decode())
print('UNL;') print('UNL;')
print(text) print(text)
# generate dot output # generate dot output
fname = '{}/{}.dot'.format(out_dir, out_name) fname = '{}/{}.dot'.format(out_dir, out_name)
cmd = ['dot', '-Tsvg', fname] cmd = ['dot', '-Tsvg', fname]
with Popen(cmd, stdout=PIPE, stderr=PIPE) as p: with Popen(cmd, stdout=PIPE, stderr=PIPE) as p:
p.wait() p.wait()
if p.returncode != 0: if p.returncode != 0:
print("Error creating svg: \n\n"+p.stderr.read().decode()) print("Error creating svg: \n\n"+p.stderr.read().decode())
print('UNL:') print('UNL:')
print(text) print(text)
try: try:
with open(fname) as f: with open(fname) as f:
print('DOT:') print('DOT:')
print(f.read()) print(f.read())
except FileNotFoundError: except FileNotFoundError:
pass pass
else: else:
svg = p.stdout.read().decode() svg = p.stdout.read().decode()
os.remove(fname) os.remove(fname)
return svg return svg
return "" return ""
def displayUnl(unldata) : def displayUnl(unldata) :
# We generate protoSVG because whent there are several sentences, # We generate protoSVG because whent there are several sentences,
# a string composed of several concatenated SVG is produced (not a valid SVG). # a string composed of several concatenated SVG is produced (not a valid SVG).
# We must then split the string to obtain several valid SVG to display. # We must then split the string to obtain several valid SVG to display.
protoSvg = unl2dot(unldata, "unl2rdf-app-1.0-SNAPSHOT-jar-with-dependencies.jar") protoSvg = unl2dot(unldata, "unl2rdf-app-1.0-SNAPSHOT-jar-with-dependencies.jar")
sep = "</svg>\n" sep = "</svg>\n"
svgArray = [x+sep for x in protoSvg.split(sep)] svgArray = [x+sep for x in protoSvg.split(sep)]
svgArray.pop() svgArray.pop()
for svg in svgArray : for svg in svgArray :
text = re.search('\{org.*\n(.*)\n.*org\}',unldata).group(1)
print(text)
display(SVG(svg)) display(SVG(svg))
``` ```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment