kaiser-ruby 0.7 → 0.7.1

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.
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