Skip to content

Commit

Permalink
feat: add option to collect meta from slotted components
Browse files Browse the repository at this point in the history
  • Loading branch information
eWert-Online committed May 19, 2024
1 parent e58dfb4 commit 0be5547
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 22 deletions.
21 changes: 11 additions & 10 deletions lib/pinc_backend/Tag.ml
Original file line number Diff line number Diff line change
Expand Up @@ -515,27 +515,28 @@ module Tag_Slot = struct

let tag =
Types.Type_Tag.Tag_Slot
(fun ~tag ~tag_data_provider ->
(fun ~tag ~tag_data_provider ~tag_meta_provider ->
let state =
State.make
~context:state.context
~mode:state.mode
~tag_meta:state.tag_meta
~tag_meta:[]
~root_tag_data_provider:state.root_tag_data_provider
~tag_data_provider
~root_tag_meta_provider:state.root_tag_meta_provider
~tag_meta_provider:state.root_tag_meta_provider
~tag_meta_provider
state.declarations
in

let evaluated =
tag |> DeclarationEvaluator.eval ~eval_expression ~state |> State.get_output
in
let state = tag |> DeclarationEvaluator.eval ~eval_expression ~state in
let output = State.get_output state in
let meta = state.tag_meta in

{
value_loc = Pinc_Diagnostics.Location.none;
value_desc = Value.ComponentTemplateNode (tag, StringMap.empty, evaluated);
})
( meta,
{
value_loc = Pinc_Diagnostics.Location.none;
value_desc = Value.ComponentTemplateNode (tag, StringMap.empty, output);
} ))
in

let meta = state.State.tag_meta_provider ~tag ~key ~attributes ~required in
Expand Down
27 changes: 15 additions & 12 deletions lib/pinc_backend/Types.ml
Original file line number Diff line number Diff line change
Expand Up @@ -105,18 +105,6 @@ end = struct
end

and Type_Tag : sig
type kind =
| Tag_String
| Tag_Int
| Tag_Float
| Tag_Boolean
| Tag_Array
| Tag_Record
| Tag_Slot of
(tag:string -> tag_data_provider:Type_Tag.data_provider -> Type_Value.value)
| Tag_Store of Type_Store.t
| Tag_Custom of string

type meta =
[ `String of string
| `Int of int
Expand All @@ -129,6 +117,21 @@ and Type_Tag : sig
| `Errors of string list
]

type kind =
| Tag_String
| Tag_Int
| Tag_Float
| Tag_Boolean
| Tag_Array
| Tag_Record
| Tag_Slot of
(tag:string ->
tag_data_provider:Type_Tag.data_provider ->
tag_meta_provider:Type_Tag.meta_provider ->
(string * Type_Tag.meta) list * Type_Value.value)
| Tag_Store of Type_Store.t
| Tag_Custom of string

type data_provider =
tag:kind ->
attributes:Type_Value.value StringMap.t ->
Expand Down

0 comments on commit 0be5547

Please sign in to comment.