kaiser-ruby 0.7 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ed13667ff5f7efa6ac48fda708e248bf329466e999604dc3896eccc5b3b47cbe
4
- data.tar.gz: be140e748235e62bab3e24d86a55aaea75b2a33521220355e9e9274dfdd58324
3
+ metadata.gz: d86f7b4d4eeb3c6c63aee4afd51fafb2e1676fe6d743a8df48a10a77b7e761e8
4
+ data.tar.gz: 1090782c7e4bb4684ffbc3162f4d5ae6529c0e4cfd3d29d227938f1a930d8519
5
5
  SHA512:
6
- metadata.gz: c16d9fb8793f6f81cd7bdddad78c14efc749a7d9ac47b9d25d6565c78443372dbbd57a77ac65de9531d168101a40f6825ec75e8c30d802df936799c3827468ec
7
- data.tar.gz: 5a3fd840db588ca27ee1ceed35a651fa9ff019ea40cbf67f1ea6258a6808016b232bf2679a0ee683af50ae71268eef7b37f00cd58bd37ef078e95bb3f4c57447
6
+ metadata.gz: 9cf3a4423bc2d0da323ac5dcf575cdacf373eac7d3aaccee48c23781a85589342941a225a909b53f7e342baa611e0fe8ad8997c37386f44ffc306bff96160839
7
+ data.tar.gz: 100adddde94add35ad05b3a2d58d8a99993bc88b55f8d71a452f0356468d8f4a1be669a6bb3531d0ca596d8230b73098ee447b28b65d86bfefe40c245fb26d22
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # 0.7.1
2
+
3
+ - [x] Strips all lines while parsing, so you can indent the .rock file however you want
4
+ - [x] Adds line numbers to all parse/transform errors
5
+ - [x] More examples
6
+ - [x] Fix CLI (@jzaia18)
7
+
1
8
  # 0.7
2
9
 
3
10
  Language Implementation
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kaiser-ruby (0.7)
4
+ kaiser-ruby (0.7.1)
5
5
  hashie
6
6
  thor (~> 0.20)
7
7
 
data/README.md CHANGED
@@ -63,7 +63,7 @@ end
63
63
 
64
64
  ```
65
65
 
66
- You can also use the `--save=FILE` option to write the resulting transpiled code as a file instead of outputting it.
66
+ You can also use the `--save=FILE` option to write the resulting transpiled code as a file instead of outputting it.
67
67
 
68
68
  ```
69
69
  $ kaiser-ruby transpile ./examples/simple.rock --save=simple.rb
@@ -74,7 +74,7 @@ Saved output in `simple.rb`
74
74
  The saved output will have a few additional lines at the start that include the language changes necessary for Rockstar to work correctly. You need the gem installed to run this file:
75
75
 
76
76
  ```
77
- $ ruby simple.rb
77
+ $ ruby simple.rb
78
78
  15.0
79
79
 
80
80
  ```
data/TODO.md CHANGED
@@ -6,7 +6,6 @@
6
6
 
7
7
  - [ ] Should be able to run the [Cellular Rockomata](https://github.com/Rifhutch/cellular-rocktomata)
8
8
  - [ ] Math module https://gist.github.com/wrenoud/6be6f7509c88a3d8f9867ae782fb768f
9
- - [ ] Primality checker https://www.reddit.com/r/RockstarDevs/comments/92i6sm/primality_checker_in_rockstar/
10
9
 
11
10
  ## Other stuff
12
11
 
@@ -1,9 +1,10 @@
1
1
  require 'thor'
2
+ require_relative 'version'
2
3
 
3
4
  module KaiserRuby
4
5
  class CLI < Thor
5
6
  package_name "Kaiser-Ruby v#{KaiserRuby::VERSION}"
6
-
7
+
7
8
  desc "transpile FILE", "transpile a .rock FILE and output the result"
8
9
  option 'show-source'.to_sym, type: :boolean, desc: "prints out the source file along with the transpiled output"
9
10
  option :save, desc: "saves the transpiled output in SAVE"
@@ -21,7 +22,7 @@ module KaiserRuby
21
22
  out.write <<~REQ
22
23
  require 'kaiser_ruby/refinements'
23
24
  using KaiserRuby::Refinements
24
-
25
+
25
26
  REQ
26
27
  out.write output
27
28
  out.close
@@ -94,7 +94,9 @@ module KaiserRuby
94
94
  end
95
95
 
96
96
  def parse_line(line)
97
- if line.strip.empty?
97
+ line = line.strip
98
+
99
+ if line.empty?
98
100
  if @nesting > 0
99
101
  @nesting -= 1
100
102
  @nesting_start_line = nil
@@ -158,7 +160,7 @@ module KaiserRuby
158
160
  end
159
161
  end
160
162
 
161
- raise KaiserRuby::RockstarSyntaxError, "couldn't parse line: #{line}"
163
+ raise KaiserRuby::RockstarSyntaxError, "couldn't parse line: #{line}:#{@lnum+1}"
162
164
  end
163
165
 
164
166
  # statements
@@ -276,16 +278,16 @@ module KaiserRuby
276
278
  words = string.split /\s/
277
279
 
278
280
  if matches_first?(words, NIL_TYPE)
279
- raise KaiserRuby::RockstarSyntaxError, "extra words are not allowed after literal type keyword" if words.count > 1
281
+ raise KaiserRuby::RockstarSyntaxError, "extra words are not allowed after literal type keyword: #{string}:#{@lnum+1}" if words.count > 1
280
282
  { type: 'nil' }
281
283
  elsif matches_first?(words, NULL_TYPE)
282
- raise KaiserRuby::RockstarSyntaxError, "extra words are not allowed after literal type keyword" if words.count > 1
284
+ raise KaiserRuby::RockstarSyntaxError, "extra words are not allowed after literal type keyword: #{string}:#{@lnum+1}" if words.count > 1
283
285
  { type: 'null' }
284
286
  elsif matches_first?(words, TRUE_TYPE)
285
- raise KaiserRuby::RockstarSyntaxError, "extra words are not allowed after literal type keyword" if words.count > 1
287
+ raise KaiserRuby::RockstarSyntaxError, "extra words are not allowed after literal type keyword: #{string}:#{@lnum+1}" if words.count > 1
286
288
  { type: 'true' }
287
289
  elsif matches_first?(words, FALSE_TYPE)
288
- raise KaiserRuby::RockstarSyntaxError, "extra words are not allowed after literal type keyword" if words.count > 1
290
+ raise KaiserRuby::RockstarSyntaxError, "extra words are not allowed after literal type keyword: #{string}:#{@lnum+1}" if words.count > 1
289
291
  { type: 'false' }
290
292
  elsif string.strip.start_with?('"') && string.strip.end_with?('"')
291
293
  parse_literal_string(string)
@@ -296,7 +298,7 @@ module KaiserRuby
296
298
 
297
299
  def parse_type_literal(string)
298
300
  words = string.split /\s/
299
- raise SyntaxError, "too many words in poetic type literal: #{string}" if words.size > 1
301
+ raise SyntaxError, "too many words in poetic type literal: #{string}:#{@lnum+1}" if words.size > 1
300
302
 
301
303
  if matches_first?(words, NIL_TYPE)
302
304
  { type: 'nil' }
@@ -307,7 +309,7 @@ module KaiserRuby
307
309
  elsif matches_first?(words, FALSE_TYPE)
308
310
  { type: 'false' }
309
311
  else
310
- raise SyntaxError, "unknown poetic type literal: #{string}"
312
+ raise SyntaxError, "unknown poetic type literal: #{string}:#{@lnum+1}"
311
313
  end
312
314
  end
313
315
 
@@ -562,7 +564,7 @@ module KaiserRuby
562
564
  copied = words.dup
563
565
  copied.shift
564
566
  copied.each do |w|
565
- raise SyntaxError, "invalid common variable name: #{string}" if w =~ /[[:upper:]]/
567
+ raise SyntaxError, "invalid common variable name: #{string}:#{@lnum+1}" if w =~ /[[:upper:]]/
566
568
  end
567
569
 
568
570
  words = words.map { |e| e.chars.select { |c| c =~ /[[:alpha:]]/ }.join }
@@ -575,7 +577,7 @@ module KaiserRuby
575
577
  copied = words.dup
576
578
  copied.shift
577
579
  copied.each do |w|
578
- raise SyntaxError, "invalid proper variable name: #{string}" unless w =~ /\A[[:upper:]]/
580
+ raise SyntaxError, "invalid proper variable name: #{string}:#{@lnum+1}" unless w =~ /\A[[:upper:]]/
579
581
  end
580
582
 
581
583
  words = words.map { |e| e.chars.select { |c| c =~ /[[:alpha:]]/ }.join }
@@ -89,9 +89,9 @@ module KaiserRuby
89
89
  else
90
90
  @local_variables << varname
91
91
  end
92
- else
93
- unless @local_variables.include?(varname)
94
- varname = @method_names.include?(varname) ? varname : "@#{varname}"
92
+ else
93
+ unless @local_variables.include?(varname)
94
+ varname = @method_names.include?(varname) ? varname : "@#{varname}"
95
95
  end
96
96
  end
97
97
 
@@ -237,7 +237,7 @@ module KaiserRuby
237
237
  end
238
238
 
239
239
  def additional_argument_transformation(argument)
240
- # testing function existence
240
+ # testing function existence
241
241
  arg = @method_names.include?(argument) ? "defined?(#{argument})" : argument
242
242
 
243
243
  # single variable without any operator needs to return a refined boolean
@@ -1,3 +1,3 @@
1
1
  module KaiserRuby
2
- VERSION = "0.7"
2
+ VERSION = "0.7.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kaiser-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.7'
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcin Ruszkiewicz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-18 00:00:00.000000000 Z
11
+ date: 2019-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler