Browse Source

Prettier

master
Dylan Baker 5 years ago
parent
commit
9b28b56a3a

+ 1
- 3
lib/ahem/ast/hash.rb View File

@@ -12,9 +12,7 @@ class AST::Hash
12 12
   def execute(env)
13 13
     result = Hash.new
14 14
 
15
-    @data.each do |k, v|
16
-      result[k] = v.execute(env)
17
-    end
15
+    @data.each { |k, v| result[k] = v.execute(env) }
18 16
 
19 17
     result
20 18
   end

+ 1
- 5
lib/ahem/ast/identifier.rb View File

@@ -12,10 +12,6 @@ class AST::Identifier
12 12
   def execute(env)
13 13
     value = env.get(@name)
14 14
 
15
-    if value.respond_to?(:execute)
16
-      value.execute(env)
17
-    else
18
-      value
19
-    end
15
+    value.respond_to?(:execute) ? value.execute(env) : value
20 16
   end
21 17
 end

+ 3
- 3
lib/ahem/ast/index.rb View File

@@ -19,12 +19,12 @@ class AST::Index
19 19
         if key.to_i == key && object.size > key
20 20
           object[key]
21 21
         elsif key.to_i != key
22
-          raise "Array index requires integer key"
22
+          raise 'Array index requires integer key'
23 23
         elsif object.size <= key
24
-          raise "Array index out of bounds"
24
+          raise 'Array index out of bounds'
25 25
         end
26 26
       else
27
-        raise "Array index requires integer key"
27
+        raise 'Array index requires integer key'
28 28
       end
29 29
     elsif object.is_a?(Hash)
30 30
       if object.has_key?(key)

+ 2
- 2
lib/ahem/core.rb View File

@@ -1,5 +1,5 @@
1 1
 CORE = {
2
-  :print => -> *args do
2
+  print: lambda do |*args|
3 3
     args.each do |arg|
4 4
       if arg.is_a?(Array)
5 5
         puts "[#{arg.join(', ')}]"
@@ -7,5 +7,5 @@ CORE = {
7 7
         puts arg
8 8
       end
9 9
     end
10
-  end,
10
+  end
11 11
 }

+ 2
- 8
lib/ahem/environment.rb View File

@@ -4,15 +4,9 @@ class Environment
4 4
   def initialize(parent = nil)
5 5
     @data = Hash.new
6 6
 
7
-    CORE.each do |k, v|
8
-      @data[k.to_s] = v
9
-    end
7
+    CORE.each { |k, v| @data[k.to_s] = v }
10 8
 
11
-    unless parent.nil?
12
-      parent.data.each do |k, v|
13
-        @data[k] = v
14
-      end
15
-    end
9
+    parent.data.each { |k, v| @data[k] = v } unless parent.nil?
16 10
   end
17 11
 
18 12
   def get(name)

+ 1
- 3
lib/ahem/interpreter.rb View File

@@ -5,8 +5,6 @@ class Interpreter
5 5
   end
6 6
 
7 7
   def interpret
8
-    @tree.each do |node|
9
-      node.execute(@env)
10
-    end
8
+    @tree.each { |node| node.execute(@env) }
11 9
   end
12 10
 end

+ 32
- 31
lib/ahem/parser.rb View File

@@ -204,7 +204,7 @@ class Parser
204 204
 
205 205
   def unary
206 206
     if @current_token.type == TokenKinds::OPERATOR &&
207
-        %i[- !].include?(@current_token.value)
207
+       %i[- !].include?(@current_token.value)
208 208
       operator = eat(TokenKinds::OPERATOR).value
209 209
       expr = primary
210 210
       AST::Unary.new(operator, expr)
@@ -215,36 +215,37 @@ class Parser
215 215
 
216 216
   def primary
217 217
     token = @current_token
218
-    expr = case token.type
219
-    when TokenKinds::NULL
220
-      advance
221
-      AST::Null.new
222
-    when TokenKinds::BOOLEAN
223
-      advance
224
-      AST::Boolean.new(token.value)
225
-    when TokenKinds::NUMBER
226
-      advance
227
-      AST::Number.new(token.value)
228
-    when TokenKinds::STRING
229
-      advance
230
-      AST::String.new(token.value)
231
-    when TokenKinds::ATOM
232
-      advance
233
-      AST::Atom.new(token.value)
234
-    when TokenKinds::IDENTIFIER
235
-      identifier
236
-    when TokenKinds::LBRACKET
237
-      array
238
-    when TokenKinds::LBRACE
239
-      hash
240
-    when TokenKinds::LPAREN
241
-      eat(TokenKinds::LPAREN)
242
-      e = expression
243
-      eat(TokenKinds::RPAREN)
244
-      e
245
-    else
246
-      raise "Unexpected token #{token.type}"
247
-    end
218
+    expr =
219
+      case token.type
220
+      when TokenKinds::NULL
221
+        advance
222
+        AST::Null.new
223
+      when TokenKinds::BOOLEAN
224
+        advance
225
+        AST::Boolean.new(token.value)
226
+      when TokenKinds::NUMBER
227
+        advance
228
+        AST::Number.new(token.value)
229
+      when TokenKinds::STRING
230
+        advance
231
+        AST::String.new(token.value)
232
+      when TokenKinds::ATOM
233
+        advance
234
+        AST::Atom.new(token.value)
235
+      when TokenKinds::IDENTIFIER
236
+        identifier
237
+      when TokenKinds::LBRACKET
238
+        array
239
+      when TokenKinds::LBRACE
240
+        hash
241
+      when TokenKinds::LPAREN
242
+        eat(TokenKinds::LPAREN)
243
+        e = expression
244
+        eat(TokenKinds::RPAREN)
245
+        e
246
+      else
247
+        raise "Unexpected token #{token.type}"
248
+      end
248 249
 
249 250
     if @current_token.type == TokenKinds::LPAREN
250 251
       args = arguments

+ 11
- 29
spec/parser_spec.rb View File

@@ -310,50 +310,32 @@ RSpec.describe Parser do
310 310
   it 'gives function calls higher precedence than binary operations' do
311 311
     expect(parse('x + func(y);')).to eq(
312 312
       [
313
-          AST::Binary.new(
314
-            AST::Operators::ADD,
315
-            AST::Identifier.new('x'),
316
-            AST::FunctionCall.new(
317
-              AST::Identifier.new('func'),
318
-              [
319
-                AST::Identifier.new('y'),
320
-              ]
321
-            )
313
+        AST::Binary.new(
314
+          AST::Operators::ADD,
315
+          AST::Identifier.new('x'),
316
+          AST::FunctionCall.new(
317
+            AST::Identifier.new('func'),
318
+            [AST::Identifier.new('y')]
322 319
           )
320
+        )
323 321
       ]
324 322
     )
325 323
   end
326 324
 
327 325
   it 'parses hashes' do
328 326
     expect(parse('{ :a => 1, :b => 2 };')).to eq(
329
-      [
330
-        AST::Hash.new(
331
-          {
332
-            :a => AST::Number.new(1.0),
333
-            :b => AST::Number.new(2.0),
334
-          }
335
-        )
336
-      ]
327
+      [AST::Hash.new({ a: AST::Number.new(1.0), b: AST::Number.new(2.0) })]
337 328
     )
338 329
   end
339 330
 
340 331
   it 'parses bracket indexing' do
341 332
     expect(parse('array[0];')).to eq(
342
-      [
343
-        AST::Index.new(
344
-          AST::Identifier.new('array'),
345
-          AST::Number.new(0),
346
-        )
347
-      ]
333
+      [AST::Index.new(AST::Identifier.new('array'), AST::Number.new(0))]
348 334
     )
349 335
   end
350 336
 
351 337
   it 'parses atoms' do
352
-    expect(parse(':atom;')).to eq(
353
-      [
354
-        AST::Atom.new(:atom)
355
-      ]
356
-    )
338
+    expect(parse(':atom;')).to eq([AST::Atom.new(:atom)])
357 339
   end
358 340
 
359 341
   it 'parses unary expressions' do
@@ -371,7 +353,7 @@ RSpec.describe Parser do
371 353
             AST::Number.new(1.0),
372 354
             AST::Number.new(2.0)
373 355
           ),
374
-          AST::Number.new(3.0),
356
+          AST::Number.new(3.0)
375 357
         )
376 358
       ]
377 359
     )

Loading…
Cancel
Save