Skip to content

Commit bd985be

Browse files
NduatiKcarson-katri
authored andcommitted
Include original source in the annotation
1 parent e159cc3 commit bd985be

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

lib/live_view_native/swiftui/rules_parser/parser/annotations.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ defmodule LiveViewNative.SwiftUI.RulesParser.Parser.Annotations do
33
# Helpers
44

55
def context_to_annotation(%Context{annotations: true} = context, line) do
6-
[file: context.file, line: line, module: context.module]
6+
source = Enum.at(context.source_lines, line - context.source_line, "")
7+
[file: context.file, line: line, module: context.module, source: String.trim(source)]
78
end
89

910
def context_to_annotation(_, _) do

lib/live_view_native/swiftui/rules_parser/parser/context.ex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ defmodule LiveViewNative.SwiftUI.RulesParser.Parser.Context do
44
:annotations,
55
:module,
66
source: "",
7+
source_lines: [],
78
errors: [],
89
highlight_error: true,
910
# Where in the code does the input start?
@@ -18,6 +19,7 @@ defmodule LiveViewNative.SwiftUI.RulesParser.Parser.Context do
1819
context
1920
|> Map.put_new(:context, %__MODULE__{
2021
source: rest,
22+
source_lines: String.split(rest, "\n"),
2123
file: context[:file] || "",
2224
module: context[:module] || nil,
2325
source_line: context[:source_line] || 1,

test/live_view_native/swiftui/rules_parser_test.exs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ defmodule LiveViewNative.SwiftUI.RulesParserTest do
1818
{line, input} = {__ENV__.line, "\nbold(true)"}
1919

2020
# We add 1 because the modifier is on the second line of the input
21-
output = {:bold, [file: __ENV__.file, line: line + 1, module: __ENV__.module], [true]}
21+
output = {:bold, [file: __ENV__.file, line: line + 1, module: __ENV__.module, source: "bold(true)"], [true]}
2222

2323
assert parse(input,
2424
file: __ENV__.file,
@@ -27,6 +27,27 @@ defmodule LiveViewNative.SwiftUI.RulesParserTest do
2727
annotations: true
2828
) ==
2929
output
30+
end
31+
32+
test "parses modifier function definition with annotation (2)" do
33+
{line, input} = {__ENV__.line,"""
34+
font(.largeTitle)
35+
bold(true)
36+
italic(true)
37+
"""}
38+
39+
output = [
40+
{:font, [file: __ENV__.file, line: line, module: __ENV__.module, source: "font(.largeTitle)"], [{:., [file: __ENV__.file, line: line, module: __ENV__.module, source: "font(.largeTitle)"], [nil, :largeTitle]}]},
41+
{:bold, [file: __ENV__.file, line: line + 1, module: __ENV__.module, source: "bold(true)"], [true]},
42+
{:italic, [file: __ENV__.file, line: line + 2, module: __ENV__.module, source: "italic(true)"], [true]}
43+
]
44+
45+
assert parse(input,
46+
file: __ENV__.file,
47+
module: __ENV__.module,
48+
line: line,
49+
annotations: true
50+
) == output
3051
end
3152

3253
test "parses modifier function definition" do

0 commit comments

Comments
 (0)