Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Apr 25, 2023. It is now read-only.

Commit76bc950

Browse files
committed
Add existing
1 parentcee07be commit76bc950

File tree

6 files changed

+81
-18
lines changed

6 files changed

+81
-18
lines changed

‎handlers/abc.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
fromos.pathimportabspath,expanduser,join
44

55

6-
classBaseHandler(metaclass=abc.ABCMeta):
6+
classBaseHandler(abc.ABC):
77
"""Base Handler class that defines abstract methods"""
88

99
@property

‎handlers/c.py‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,20 @@
77
classCHandler(BaseHandler):
88
"""Compile and run C programs."""
99

10-
defrun(self,code_file):
10+
defrun(self,code_file,directory):
1111
try:
1212
check_call(["bash","-c",'which -s clang'])
1313
exceptException:
1414
compiler="gcc"
1515
else:
1616
compiler="clang"
17-
comp=run([compiler,code_file,"-o","script"])
17+
comp=run([compiler,code_file,"-o",f"{directory}/script"])
1818
ifcomp.returncode!=0:
1919
exit(comp.returncode)
2020
else:
21-
exit(run(["bash","-c","./script"]).returncode)
21+
exit(run(["bash","-c",f"{directory}/script"]).returncode)
2222

2323
defbuild(self,code,directory=None):
2424
withself.file("c",directory=directory)asf:
2525
f.write(code)
26-
self.run(f.name)
26+
self.run(f.name,directory=directoryifdirectoryelseself.tempdir)

‎handlers/cpp.py‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
fromsubprocessimportcheck_call,run
2+
fromsysimportexit
3+
4+
from .abcimportBaseHandler
5+
6+
7+
classCPPHandler(BaseHandler):
8+
"""Compile and run C++ programs."""
9+
10+
defrun(self,code_file,directory):
11+
try:
12+
check_call(["bash","-c",'which -s clang++'])
13+
exceptException:
14+
compiler="g++"
15+
else:
16+
compiler="clang++"
17+
comp=run([compiler,code_file,"-o",f"{directory}/script"])
18+
ifcomp.returncode!=0:
19+
exit(comp.returncode)
20+
else:
21+
exit(run(["bash","-c",f"{directory}/script"]).returncode)
22+
23+
defbuild(self,code,directory=None):
24+
withself.file("cpp",directory=directory)asf:
25+
f.write(code)
26+
self.run(f.name,directory=directoryifdirectoryelseself.tempdir)

‎handlers/java.py‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
importre
2+
fromos.pathimportabspath,expanduser,join,dirname,basename
3+
fromosimportchdir
4+
fromsubprocessimportCalledProcessError,check_call,run
5+
fromsysimportexit
6+
7+
from .abcimportBaseHandler
8+
9+
10+
classJavaHandler(BaseHandler):
11+
"""Run a Java program."""
12+
13+
defrun(self,code_file):
14+
try:
15+
check_call(["javac",code_file])
16+
exceptCalledProcessErrorase:
17+
exit(e.returncode)
18+
chdir(dirname(code_file))
19+
code_file=basename(code_file)
20+
exit(run(["java",code_file.rpartition(".java")[0]]).returncode)
21+
22+
defbuild(self,code,directory=None):
23+
classname=re.search(r"public class ([A-Za-z0-9_]+)",code).group(1)
24+
directory=self.tempdirifdirectoryisNoneelseabspath(expanduser(directory))
25+
withopen(join(directory,classname+".java"),"w")asfile:
26+
file.write(code)
27+
self.run(file.name)

‎main.py‎

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,23 @@
44
importsys
55

66
fromhandlers.cimportCHandler
7-
fromhandlers.pythonimportPythonHandler,Python2Handler
7+
fromhandlers.cppimportCPPHandler
8+
fromhandlers.javaimportJavaHandler
9+
fromhandlers.pythonimportPython2Handler,PythonHandler
810
fromhandlers.shellimportBashShellHandler,ShellHandler,ZshShellHandler
11+
fromutilimportreverse_dict
912

10-
handlers= {
11-
"--bash":BashShellHandler,
12-
"--c":CHandler,
13-
"--python":PythonHandler,
14-
"--py":PythonHandler,
15-
"--py2":Python2Handler,
16-
"--python2":Python2Handler,
17-
"--sh":ShellHandler,
18-
"--zsh":ZshShellHandler,
13+
handlers_unwrapped= {
14+
BashShellHandler: ["--bash"],
15+
CHandler: ["--c"],
16+
CPPHandler: ["--cpp","--c++","--cplusplus"],
17+
JavaHandler: ["--java"],
18+
PythonHandler: ["--python","--python3","--py","--py3"],
19+
Python2Handler: ["--python2","--py2"],
20+
ShellHandler: ["--sh"],
21+
ZshShellHandler: ["--zsh"]
1922
}
23+
handlers=reverse_dict(handlers_unwrapped)
2024

2125

2226
defmain(args=None):
@@ -35,13 +39,13 @@ def main(args=None):
3539
help="Give the stored file the speified name (does not do anything without --keep)",
3640
default="script",
3741
)
38-
forargname,handlerinhandlers.items():
42+
forhandler,argnamesinhandlers_unwrapped.items():
3943
parser.add_argument(
40-
argname,action="store_true",default=None,help=handler.__doc__
44+
*argnames,action="store_true",default=None,help=handler.__doc__
4145
)
4246
ns=parser.parse_args(args)
4347
parsed_dict= {
44-
argname.split("-")[-1]:getattr(ns,argname.split("-")[-1])
48+
argname.split("-")[-1]:getattr(ns,argname.split("-")[-1],None)
4549
forargnameinhandlers.keys()
4650
}
4751
parse_count= [bool(val)forname,valinparsed_dict.items()].count(True)

‎util.py‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
defreverse_dict(dictionary):
2+
d= {}
3+
forkey,valuesindictionary.items():
4+
forvalueinvalues:
5+
d[value]=key
6+
returnd

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp