Great, thanks! This should help a lot.<br><br><div class="gmail_quote">On Wed, Jul 13, 2011 at 9:26 AM, Joseph Norton <span dir="ltr"><<a href="mailto:norton@lovely.email.ne.jp">norton@lovely.email.ne.jp</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word"><div><br></div><div>Tristan -</div><div><br></div><div>It has been awhile since I dabbled with this code - it is an incomplete prototype to re-use a module's types as part of a UBF contract.  Nevertheless, there is a working unit test that illustrates using a parse transform on a module's types.</div>
<div><br></div><div>The test module is here:</div><div><br></div><div><a href="https://github.com/norton/ubf-eep8/blob/master/test/eunit/ubf_eep8_samples.erl" target="_blank">https://github.com/norton/ubf-eep8/blob/master/test/eunit/ubf_eep8_samples.erl</a></div>
<div><br></div><div>The unit test is here:</div><div><br></div><div><a href="https://github.com/norton/ubf-eep8/blob/master/test/eunit/ubf_eep8_samples_tests.erl" target="_blank">https://github.com/norton/ubf-eep8/blob/master/test/eunit/ubf_eep8_samples_tests.erl</a></div>
<div><br></div><div>The parse transform code is here:</div><div><br></div><div><a href="https://github.com/norton/ubf-eep8/blob/master/src/eep8_contract_parser.erl" target="_blank">https://github.com/norton/ubf-eep8/blob/master/src/eep8_contract_parser.erl</a></div>
<div><br></div><div>and finally instructions to download and to build are here:</div><div><br></div><div><a href="https://github.com/norton/ubf-eep8" target="_blank">https://github.com/norton/ubf-eep8</a></div><div><br></div>
<div>Hope this helps.</div><div><br></div><div>- Joe N.</div><div><div></div><div class="h5"><div><br></div><br><div><div>On Jul 13, 2011, at 11:13 PM, Tristan Sloughter wrote:</div><br><blockquote type="cite">Yeah, I was hoping for something that would work with user defined typed.<div>
<br></div><div>I assume parse transforms when parsing a record have the type information? If so I think I can use that to generate the necessary functionality I'm looking for.</div>
<div><br></div><div>Tristan<br><br><div class="gmail_quote">On Wed, Jul 13, 2011 at 4:42 AM, Torben Hoffmann <span dir="ltr"><<a href="mailto:torben.lehoff@gmail.com" target="_blank">torben.lehoff@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
For the basic types you can you a when guard in the function clauses (or case clauses):<br><br>my_magic(#user{password=PW}) when is_binary(PW) -> ...<br><br>But that is probably not enough for you.<br><br>Cheers,<br>Torben<br>


<br><div class="gmail_quote"><div><div></div><div>On Wed, Jul 13, 2011 at 01:26, Tristan Sloughter <span dir="ltr"><<a href="mailto:tristan.sloughter@gmail.com" target="_blank">tristan.sloughter@gmail.com</a>></span> wrote:<br>

</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div></div><div>
I'm pretty sure this isn't possible but I wanted to be sure before working around the lack of it.<div><br></div><div>if I have a type and record like:</div><div><br></div><div>-type password() :: binary().</div><div>



<br></div><div>-record(user, {username :: binary(),</div><div>                    password  :: password()}. </div><div><br></div><div>At run time there is no way to tell a field is suppose to be of some type during runtime, right? </div>



<div><br></div><div>Basically I'd like to be able to have generic or generated create functions for records that may have to modify arguments (like a password has to be encrypted from the string provided) when creating the record. So the create function would pass each field, its value and its type to a transform function that matches on type and returns the appropriately modified value.</div>



<div><br></div><div>Any ideas on how to do this with type definitions or do I need to use tuples and an atom like {Type, Value} for the value of every field to achieve this?</div><div><br></div><div>Thanks,</div><div>Tristan</div>



<br></div></div><div>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></div></blockquote></div><font color="#888888"><br><br clear="all"><br>-- <br><a href="http://www.linkedin.com/in/torbenhoffmann" target="_blank">http://www.linkedin.com/in/torbenhoffmann</a><br>
</font></blockquote></div><br></div>
_______________________________________________<br>erlang-questions mailing list<br><a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br><a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br></div></div><font color="#888888"><div>
<div>Joseph Norton</div><div><a href="mailto:norton@alum.mit.edu" target="_blank">norton@alum.mit.edu</a></div><div><br></div><br>
</div>
<br></font></div></blockquote></div><br>