---
address: usa.geo.streetName
description: US street name — mostly numbered (42nd, 120th), ~20% named (Main, Oak)
generator: tdc
---
<sequence name="mode"><gen type="number" value="1..5"/></sequence>
<sequence name="n"><gen type="number" value="1..150"/></sequence>
<sequence name="named"><gen type="template" value="usa.geo.streetNamed"/></sequence>
<sequence name="street"><compute>
  <let name="num"><to_number><field name="n"/></to_number></let>
  <let name="m10"><mod><var name="num"/><int v="10"/></mod></let>
  <let name="m100"><mod><var name="num"/><int v="100"/></mod></let>
  <let name="suffix">
    <choose>
      <when><test><equals><var name="m10"/><int v="1"/></equals></test>
        <then><choose><when><test><equals><var name="m100"/><int v="11"/></equals></test><then><str v="th"/></then></when><otherwise><str v="st"/></otherwise></choose></then></when>
      <when><test><equals><var name="m10"/><int v="2"/></equals></test>
        <then><choose><when><test><equals><var name="m100"/><int v="12"/></equals></test><then><str v="th"/></then></when><otherwise><str v="nd"/></otherwise></choose></then></when>
      <when><test><equals><var name="m10"/><int v="3"/></equals></test>
        <then><choose><when><test><equals><var name="m100"/><int v="13"/></equals></test><then><str v="th"/></then></when><otherwise><str v="rd"/></otherwise></choose></then></when>
      <otherwise><str v="th"/></otherwise>
    </choose>
  </let>
  <result>
    <choose>
      <when><test><equals><to_number><field name="mode"/></to_number><int v="5"/></equals></test>
        <then><field name="named"/></then></when>
      <otherwise><concat><field name="n"/><var name="suffix"/></concat></otherwise>
    </choose>
  </result>
</compute></sequence>
<data>${{street}}</data>
