luaapi 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/luaapi.rb +133 -0
  3. metadata +48 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 494a1fb9309aa089eec1d339bf5a7b122b6017c953fde685a3e5c222348a7192
4
+ data.tar.gz: c6c7666b72b34ddcda01be334c1745b43c3787966728f22f6c52cb1db4a2c54e
5
+ SHA512:
6
+ metadata.gz: d16ae7e7367d41ca1a7bc9a9507f057befcc6414dc8614fdd611c793bad7e811ab75f6374a8f32f13150eab28ff654fd62d0bd59d9d8a8f570993bded9c873b8
7
+ data.tar.gz: 604cf3b408055660943978ddb1711e8f1cf4474c9012b41fe002476d39a846fdbbc15c35f1437dfe1c73327ef7680561f885ec7faf3f2063b5bf2d057838b4e5
@@ -0,0 +1,133 @@
1
+ # Author: Marek K.
2
+
3
+ =begin
4
+
5
+ This program is free software: you can redistribute it and/or modify
6
+ it under the terms of the GNU General Public License as published by
7
+ the Free Software Foundation, either version 3 of the License, or
8
+ (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License
16
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ Dieses Programm ist Freie Software: Sie können es unter den Bedingungen
19
+ der GNU General Public License, wie von der Free Software Foundation,
20
+ Version 3 der Lizenz oder (nach Ihrer Wahl) jeder neueren
21
+ veröffentlichten Version, weiter verteilen und/oder modifizieren.
22
+
23
+ Dieses Programm wird in der Hoffnung bereitgestellt, dass es nützlich sein wird, jedoch
24
+ OHNE JEDE GEWÄHR,; sogar ohne die implizite
25
+ Gewähr der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
26
+ Siehe die GNU General Public License für weitere Einzelheiten.
27
+
28
+ Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
29
+ Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
30
+
31
+ =end
32
+
33
+ class LuaApi
34
+ require "net/http"
35
+ require "uri"
36
+
37
+ attr_accessor :type
38
+
39
+ def initialize
40
+ begin
41
+ File.open "./lua_api-in.txt", "w" do |f|
42
+ f.write "print(_VERSION)"
43
+ f.close
44
+ end
45
+
46
+ IO.popen "lua ./lua_api-in.txt" do |p|
47
+ @version = p.gets
48
+ p.close
49
+ end
50
+
51
+ @type = 0
52
+ rescue Errno::ENOENT => e
53
+ @type = 1
54
+ uri = URI("https://www.lua.org/cgi-bin/demo")
55
+ https = Net::HTTP.new(uri.host, uri.port)
56
+ https.use_ssl = true
57
+ req = Net::HTTP::Post.new(uri.path)
58
+ req.body = "input=" + URI::encode("print(_VERSION)")
59
+ res = https.request(req)
60
+ if res.code == "200"
61
+ @version = res.body.match(/<H2>Output<\/H2>\n<TEXTAREA ROWS="8" COLS="80">\n(.*)\n<\/TEXTAREA><P><IMG SRC="images\/ok.png" ALIGN="absbottom">\nYour program ran successfully\./m)[1]
62
+ else
63
+ @type = 2
64
+ raise RuntimeError, "No interpreter found!"
65
+ end
66
+ end
67
+ end
68
+
69
+ def version?
70
+ return @version
71
+ end
72
+
73
+ def good?
74
+ true unless @type == 2
75
+ end
76
+
77
+ def interpret code
78
+ case @type
79
+ when 0
80
+ File.open "./lua_api-in.txt", "w" do |f|
81
+ f.write code
82
+ f.close
83
+ end
84
+
85
+ begin
86
+ IO.popen "lua ./lua_api-in.txt" do |p|
87
+ @result = p.gets
88
+ p.close
89
+ end
90
+ rescue Errno::ENOENT => e
91
+ raise RuntimeError, "No interpreter found!"
92
+ end
93
+ when 1
94
+ uri = URI("https://www.lua.org/cgi-bin/demo")
95
+ https = Net::HTTP.new(uri.host, uri.port)
96
+ https.use_ssl = true
97
+
98
+ req = Net::HTTP::Post.new(uri.path)
99
+ req.body = "input=" + URI::encode(code)
100
+ res = https.request(req)
101
+
102
+ if res.code == "200"
103
+ r = res.body.match(/<H2>Output<\/H2>\n<TEXTAREA ROWS="8" COLS="80">\n(.*)\n<\/TEXTAREA><P><IMG SRC="images\/ok.png" ALIGN="absbottom">\nYour program ran successfully\./m)
104
+ unless r
105
+ r = res.body.match(/<H2>Output<\/H2>\n<TEXTAREA ROWS="8" COLS="80">\n(.*)<\/TEXTAREA><P><IMG SRC="images\/alert.png" ALIGN="absbottom">\nYour program failed to compile\./m)
106
+ end
107
+ unless r
108
+ r = res.body.match(/<H2>Output<\/H2>\n<TEXTAREA ROWS="8" COLS="80">\n(.*)<\/TEXTAREA><P><IMG SRC="images\/alert.png" ALIGN="absbottom">\nYour program failed to run\./m)
109
+ end
110
+ unless r
111
+ r = res.body.match(/<H2>Output<\/H2>\n<TEXTAREA ROWS="8" COLS="80">\n(.*)<\/TEXTAREA><P><IMG SRC="images\/alert.png" ALIGN="absbottom">\nYour program was aborted\./m)
112
+ end
113
+ @result = nil unless r
114
+ @result = r[1]
115
+ else
116
+ raise RuntimeError, "Online Interpreter not available!"
117
+ end
118
+ when 2
119
+ raise RuntimeError, "No interpreter found!"
120
+ end
121
+ return @result
122
+ end
123
+
124
+ def result
125
+ @result
126
+ end
127
+
128
+ def close
129
+ File.delete "./lua_api-in.txt" if File.exist? "./lua_api-in.txt"
130
+ @type = 2
131
+ end
132
+
133
+ end
metadata ADDED
@@ -0,0 +1,48 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: luaapi
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Marek K.
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-11-15 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: The Lua API runs Lua scripts. The API does this by trying to connect
14
+ to a local Lua interpreter. If this does not work, the API connects to an online
15
+ interpreter.
16
+ email: m.k@mk16.de
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - lib/luaapi.rb
22
+ homepage: http://test.mk16.de/projects/luaapi-gem
23
+ licenses:
24
+ - GPL-3.0
25
+ metadata:
26
+ documentation_uri: http://test.mk16.de/projects/luaapi-gem
27
+ source_code_uri: http://test.mk16.de/scriptFiles/luaapi.rb
28
+ post_install_message:
29
+ rdoc_options: []
30
+ require_paths:
31
+ - lib
32
+ required_ruby_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ required_rubygems_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements: []
43
+ rubyforge_project:
44
+ rubygems_version: 2.7.8
45
+ signing_key:
46
+ specification_version: 4
47
+ summary: The Lua API runs Lua scripts.
48
+ test_files: []