# FeathersUI backend for coconut.ui

**URL:** https://community.haxe.org/t/feathersui-backend-for-coconut-ui/2666
**Category:** Showcase
**Tags:** coconut
**Created:** [September 12, 2020, 4:49pm UTC](https://community.haxe.org/t/feathersui-backend-for-coconut-ui/2666 "2020-09-12T16:49:32Z")
**Posts on this page:** 1
**Showing post:** 11

<div class="post-metadata">

### Author: ![back2dos](https://community.haxe.org/user_avatar/community.haxe.org/back2dos/32/30_2.png) [@back2dos](https://community.haxe.org/u/back2dos)
#### Post date: [September 18, 2020, 5:06am UTC](https://community.haxe.org/t/feathersui-backend-for-coconut-ui/2666/11 "2020-09-18T05:06:42Z")

</div>

> [@joshtynjala](#):
>
> Side note: I tried using a single expression, like the one below, but I couldn’t for the life of me figure out how to make a macro resolve the original string value.
> 
> ```haxe
> @:event(openfl.events.Event.CHANGE) // not sure how to resolve
> 
> ```

The safest path is via the typed AST:

```haxe
switch Context.typeExpr(e).expr {
  case TField(_, FStatic(_.get() => cl, _.get() => f)):
    trace(cl.pack.concat([cl.name]).join('.') + '.' + f.name + '=' + TypedExprTools.toString(f.expr()));
  default:
}

```

In this case you’ll find that `f.expr().expr` is `TConst(TString(v))` where `v` is the value you’re after.

---

_[View the full topic](https://community.haxe.org/t/feathersui-backend-for-coconut-ui/2666)._
