diff options
author | Nat Lasseter <user@4574.co.uk> | 2024-01-31 14:12:16 +0000 |
---|---|---|
committer | Nat Lasseter <user@4574.co.uk> | 2024-01-31 14:12:16 +0000 |
commit | 96a28a4f378b94f25dc3feba3a645f50776249b8 (patch) | |
tree | b4358180fa512ff64fd30b59a727cc191f40464d | |
parent | 703595f8f8380acc6816f0a770afee6acba8adc4 (diff) |
end abbreviates sexps with nil
-rw-r--r-- | lib/sexp/parse.rb | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/sexp/parse.rb b/lib/sexp/parse.rb index adfd513..44052c2 100644 --- a/lib/sexp/parse.rb +++ b/lib/sexp/parse.rb @@ -34,6 +34,10 @@ class SExp @data = data end + def nil? + car.nil? && cdr.nil? + end + def to_s if car.nil? "()" @@ -75,13 +79,8 @@ def num_members(tokens) end def members_to_tree(members) - case members.length - when 0 - nil - when 1 - SExp.new(members[0], SExp.new) - when 2 - SExp.new(members[0], members[1]) + if members.empty? + SExp.new else SExp.new(members[0], members_to_tree(members[1..-1])) end |