interpreter.rs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. use dioxus_core::{prelude::*, TemplateNode, VTemplate, VText};
  2. // #[test]
  3. // fn simple_static() {
  4. // fn app(cx: Scope) -> Element {
  5. // static MyTemplate: TemplateDef = TemplateDef {
  6. // id: "my-template",
  7. // static_nodes: &[TemplateNode::Element {
  8. // attributes: &[],
  9. // nodes: &[TemplateNode::StaticText("Hello, world!")],
  10. // tag: "div",
  11. // }],
  12. // dynamic_nodes: &[],
  13. // };
  14. // Some(VNode::Template(NodeFactory::new(&cx).bump().alloc(
  15. // VTemplate {
  16. // def: &MyTemplate,
  17. // dynamic_nodes: &[],
  18. // rendered_nodes: &[],
  19. // },
  20. // )))
  21. // }
  22. // let mut dom = VirtualDom::new(app);
  23. // let edits = dom.rebuild();
  24. // dbg!(edits);
  25. // }
  26. // #[test]
  27. // fn mixed_dynamic() {
  28. // fn app(cx: Scope) -> Element {
  29. // static MyTemplate: TemplateDef = TemplateDef {
  30. // id: "my-template",
  31. // static_nodes: &[TemplateNode::Element {
  32. // tag: "div",
  33. // attributes: &[],
  34. // nodes: &[
  35. // TemplateNode::StaticText("Hello, world!"),
  36. // TemplateNode::DynamicText,
  37. // ],
  38. // }],
  39. // dynamic_nodes: &[],
  40. // };
  41. // let val = cx.use_hook(|| 0);
  42. // *val += 1;
  43. // let fact = NodeFactory::new(&cx);
  44. // Some(VNode::Template(fact.bump().alloc(VTemplateRef {
  45. // def: &MyTemplate,
  46. // dynamic_nodes: fact.bump().alloc([fact.text(format_args!("{val}"))]),
  47. // })))
  48. // }
  49. // let mut dom = VirtualDom::new(app);
  50. // let edits = dom.rebuild();
  51. // dbg!(edits);
  52. // let edits = dom.hard_diff(ScopeId(0));
  53. // dbg!(edits);
  54. // let edits = dom.hard_diff(ScopeId(0));
  55. // dbg!(edits);
  56. // let edits = dom.hard_diff(ScopeId(0));
  57. // dbg!(edits);
  58. // }
  59. // #[test]
  60. // fn mixes() {
  61. // fn app(cx: Scope) -> Element {
  62. // static MyTemplate: TemplateDef = TemplateDef {
  63. // id: "my-template",
  64. // static_nodes: &[TemplateNode::Element {
  65. // tag: "div",
  66. // attributes: &[],
  67. // nodes: &[
  68. // TemplateNode::StaticText("Hello, world!"),
  69. // TemplateNode::DynamicText,
  70. // ],
  71. // }],
  72. // dynamic_nodes: &[],
  73. // };
  74. // let val = cx.use_hook(|| 1);
  75. // *val += 1;
  76. // let fact = NodeFactory::new(&cx);
  77. // if *val % 2 == 0 {
  78. // Some(VNode::Template(fact.bump().alloc(VTemplateRef {
  79. // def: &MyTemplate,
  80. // dynamic_nodes: fact.bump().alloc([fact.text(format_args!("{val}"))]),
  81. // })))
  82. // } else {
  83. // Some(fact.text(format_args!("Hello, world! {val}")))
  84. // }
  85. // }
  86. // let mut dom = VirtualDom::new(app);
  87. // let edits = dom.rebuild();
  88. // dbg!(edits);
  89. // let edits = dom.hard_diff(ScopeId(0));
  90. // dbg!(edits);
  91. // let edits = dom.hard_diff(ScopeId(0));
  92. // dbg!(edits);
  93. // let edits = dom.hard_diff(ScopeId(0));
  94. // dbg!(edits);
  95. // }