Skip to content

Commit bdd4a34

Browse files
authored
Use Refract (#948)
2 parents 4c4abaa + ce1768d commit bdd4a34

File tree

7 files changed

+408
-971
lines changed

7 files changed

+408
-971
lines changed

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,5 @@ group :development do
1919
gem "ruby-lsp"
2020
gem "benchmark-ips"
2121
end
22+
23+
gem "refract", github: "yippee-fun/refract"

lib/phlex/compiler.rb

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,28 @@
11
# frozen_string_literal: true
22

33
require "prism"
4+
require "refract"
45

56
module Phlex::Compiler
67
Error = Class.new(StandardError)
78

9+
class BufferPush
10+
def initialize(value, escape:)
11+
@value = value
12+
@escape = escape
13+
freeze
14+
end
15+
16+
attr_reader :value, :escape
17+
end
18+
819
def self.compile(component)
920
path, line = Object.const_source_location(component.name)
1021
return unless File.exist?(path)
1122
source = File.read(path)
1223
tree = Prism.parse(source).value
13-
Compilation.new(component, path, line, source, tree).compile
24+
refract = Refract::Converter.new.visit(tree)
25+
26+
Compilation.new(component, path, line, source, refract).compile
1427
end
1528
end
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
# frozen_string_literal: true
22

3-
class Phlex::Compiler::ClassCompiler < Prism::Visitor
3+
class Phlex::Compiler::ClassCompiler < Refract::Visitor
44
def initialize(compiler)
5+
super()
56
@compiler = compiler
67
end
78

89
def compile(node)
9-
visit_all(node.child_nodes)
10+
visit(node.body)
1011
end
1112

12-
def visit_def_node(node)
13+
visit Refract::DefNode do |node|
1314
return if node.name == :initialize
1415
return if node.receiver
1516

1617
compiled_source = Phlex::Compiler::MethodCompiler.new(@compiler.component).compile(node)
1718

1819
if compiled_source
19-
# puts compiled_source
20-
@compiler.redefine_method(compiled_source, node.location.start_line)
20+
@compiler.redefine_method(compiled_source, node.start_line)
2121
end
2222
end
2323

24-
def visit_class_node(node)
24+
visit Refract::ClassNode do |node|
2525
nil
2626
end
2727

28-
def visit_module_node(node)
28+
visit Refract::ModuleNode do |node|
2929
nil
3030
end
3131

32-
def visit_block_node(node)
32+
visit Refract::BlockNode do |node|
3333
nil
3434
end
3535
end
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
# frozen_string_literal: true
22

3-
class Phlex::Compiler::FileCompiler < Prism::Visitor
3+
class Phlex::Compiler::FileCompiler < Refract::Visitor
44
def initialize(compiler)
5+
super()
56
@compiler = compiler
67
end
78

89
def compile(node)
910
visit(node)
1011
end
1112

12-
def visit_class_node(node)
13-
if @compiler.line == node.location.start_line
13+
visit Refract::ClassNode do |node|
14+
if @compiler.line == node.start_line
1415
Phlex::Compiler::ClassCompiler.new(@compiler).compile(node)
1516
end
1617
end
@@ -19,11 +20,11 @@ def visit_class_node(node)
1920
# super
2021
# end
2122

22-
def visit_def_node(node)
23+
visit Refract::DefNode do |node|
2324
nil
2425
end
2526

26-
def visit_block_node(node)
27+
visit Refract::BlockNode do |node|
2728
nil
2829
end
2930
end

lib/phlex/compiler/formatter.rb

Lines changed: 0 additions & 126 deletions
This file was deleted.

0 commit comments

Comments
 (0)