gloss 0.0.4 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitattributes +3 -0
- data/.github/workflows/{crystal.yml → crystal_specs.yml} +1 -1
- data/.github/workflows/{ruby.yml → ruby_specs.yml} +2 -2
- data/.gloss.yml +1 -0
- data/.rspec +1 -0
- data/Gemfile.lock +9 -11
- data/README.md +35 -5
- data/Rakefile +1 -1
- data/exe/gloss +13 -2
- data/ext/gloss/Makefile +8 -19
- data/ext/gloss/spec/parser_spec.cr +83 -83
- data/ext/gloss/src/cr_ast.cr +63 -77
- data/ext/gloss/src/gloss.cr +1 -2
- data/ext/gloss/src/rb_ast.cr +40 -38
- data/lib/gloss.rb +15 -7
- data/lib/gloss/cli.rb +75 -32
- data/lib/gloss/config.rb +10 -3
- data/lib/gloss/errors.rb +1 -1
- data/lib/gloss/initializer.rb +6 -5
- data/lib/gloss/logger.rb +29 -0
- data/lib/gloss/parser.rb +17 -2
- data/lib/gloss/prog_loader.rb +141 -0
- data/lib/gloss/scope.rb +1 -1
- data/lib/gloss/source.rb +1 -1
- data/lib/gloss/type_checker.rb +80 -32
- data/lib/gloss/utils.rb +44 -0
- data/lib/gloss/version.rb +5 -5
- data/lib/gloss/{builder.rb → visitor.rb} +125 -74
- data/lib/gloss/watcher.rb +47 -11
- data/lib/gloss/writer.rb +22 -11
- data/sig/core.rbs +2 -0
- data/sig/fast_blank.rbs +4 -0
- data/sig/{gloss.rbs → gls.rbs} +0 -0
- data/sig/optparse.rbs +6 -0
- data/sig/rubygems.rbs +9 -0
- data/sig/yaml.rbs +3 -0
- data/src/exe/gloss +19 -0
- data/src/lib/gloss.gl +26 -0
- data/src/lib/gloss/cli.gl +53 -24
- data/src/lib/gloss/config.gl +9 -3
- data/src/lib/gloss/initializer.gl +4 -6
- data/src/lib/gloss/logger.gl +21 -0
- data/src/lib/gloss/parser.gl +17 -5
- data/src/lib/gloss/prog_loader.gl +133 -0
- data/src/lib/gloss/scope.gl +0 -2
- data/src/lib/gloss/type_checker.gl +85 -39
- data/src/lib/gloss/utils.gl +38 -0
- data/src/lib/gloss/version.gl +1 -1
- data/src/lib/gloss/{builder.gl → visitor.gl} +123 -68
- data/src/lib/gloss/watcher.gl +44 -10
- data/src/lib/gloss/writer.gl +16 -14
- metadata +23 -8
data/src/lib/gloss/writer.gl
CHANGED
@@ -4,29 +4,31 @@ require "pathname"
|
|
4
4
|
require "fileutils"
|
5
5
|
|
6
6
|
module Gloss
|
7
|
-
module Utils
|
8
|
-
module_function
|
9
|
-
|
10
|
-
def src_path_to_output_path(src_path : String) : String
|
11
|
-
src_path.sub(%r{\A(?:\./)?#{Config.src_dir}/?}, "")
|
12
|
-
.sub(/\.gl$/, ".rb")
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
7
|
class Writer
|
17
|
-
include Utils
|
18
|
-
|
19
8
|
def initialize(
|
20
9
|
@content,
|
21
|
-
src_path : String,
|
22
|
-
@output_path : Pathname? = Pathname.new(
|
10
|
+
@src_path : String,
|
11
|
+
@output_path : Pathname? = Pathname.new(
|
12
|
+
Utils.src_path_to_output_path(src_path)
|
13
|
+
)
|
23
14
|
)
|
24
15
|
end
|
25
16
|
|
26
17
|
def run
|
27
18
|
FileUtils.mkdir_p(@output_path.parent) unless @output_path.parent.exist?
|
28
19
|
File.open(@output_path, "wb") do |file|
|
29
|
-
|
20
|
+
sb = shebang
|
21
|
+
file.puts sb if sb
|
22
|
+
file.puts @content
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private def shebang
|
27
|
+
if @output_path.executable?
|
28
|
+
first_line = File.open(@src_path) { |f| f.readline }
|
29
|
+
first_line.start_with?("#!") ? first_line : nil
|
30
|
+
else
|
31
|
+
nil
|
30
32
|
end
|
31
33
|
end
|
32
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gloss
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- johansenja
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fast_blank
|
@@ -131,10 +131,12 @@ extensions:
|
|
131
131
|
- ext/gloss/extconf.rb
|
132
132
|
extra_rdoc_files: []
|
133
133
|
files:
|
134
|
-
- ".
|
135
|
-
- ".github/workflows/
|
134
|
+
- ".gitattributes"
|
135
|
+
- ".github/workflows/crystal_specs.yml"
|
136
|
+
- ".github/workflows/ruby_specs.yml"
|
136
137
|
- ".gitignore"
|
137
138
|
- ".gloss.yml"
|
139
|
+
- ".rspec"
|
138
140
|
- ".rubocop.yml"
|
139
141
|
- Gemfile
|
140
142
|
- Gemfile.lock
|
@@ -157,30 +159,43 @@ files:
|
|
157
159
|
- ext/gloss/src/rb_ast.cr
|
158
160
|
- gloss.gemspec
|
159
161
|
- lib/gloss.rb
|
160
|
-
- lib/gloss/builder.rb
|
161
162
|
- lib/gloss/cli.rb
|
162
163
|
- lib/gloss/config.rb
|
163
164
|
- lib/gloss/errors.rb
|
164
165
|
- lib/gloss/initializer.rb
|
166
|
+
- lib/gloss/logger.rb
|
165
167
|
- lib/gloss/parser.rb
|
168
|
+
- lib/gloss/prog_loader.rb
|
166
169
|
- lib/gloss/scope.rb
|
167
170
|
- lib/gloss/source.rb
|
168
171
|
- lib/gloss/type_checker.rb
|
172
|
+
- lib/gloss/utils.rb
|
169
173
|
- lib/gloss/version.rb
|
174
|
+
- lib/gloss/visitor.rb
|
170
175
|
- lib/gloss/watcher.rb
|
171
176
|
- lib/gloss/writer.rb
|
172
|
-
- sig/
|
177
|
+
- sig/core.rbs
|
178
|
+
- sig/fast_blank.rbs
|
179
|
+
- sig/gls.rbs
|
173
180
|
- sig/listen.rbs
|
174
|
-
-
|
181
|
+
- sig/optparse.rbs
|
182
|
+
- sig/rubygems.rbs
|
183
|
+
- sig/yaml.rbs
|
184
|
+
- src/exe/gloss
|
185
|
+
- src/lib/gloss.gl
|
175
186
|
- src/lib/gloss/cli.gl
|
176
187
|
- src/lib/gloss/config.gl
|
177
188
|
- src/lib/gloss/errors.gl
|
178
189
|
- src/lib/gloss/initializer.gl
|
190
|
+
- src/lib/gloss/logger.gl
|
179
191
|
- src/lib/gloss/parser.gl
|
192
|
+
- src/lib/gloss/prog_loader.gl
|
180
193
|
- src/lib/gloss/scope.gl
|
181
194
|
- src/lib/gloss/source.gl
|
182
195
|
- src/lib/gloss/type_checker.gl
|
196
|
+
- src/lib/gloss/utils.gl
|
183
197
|
- src/lib/gloss/version.gl
|
198
|
+
- src/lib/gloss/visitor.gl
|
184
199
|
- src/lib/gloss/watcher.gl
|
185
200
|
- src/lib/gloss/writer.gl
|
186
201
|
homepage:
|
@@ -202,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
202
217
|
- !ruby/object:Gem::Version
|
203
218
|
version: '0'
|
204
219
|
requirements: []
|
205
|
-
rubygems_version: 3.2
|
220
|
+
rubygems_version: 3.1.2
|
206
221
|
signing_key:
|
207
222
|
specification_version: 4
|
208
223
|
summary: A superset of ruby
|