Example

Remote Dependencies

Reusable imported type libraries.

← All examples

Specification

$dependencies:
  core: 'https://raw.githubusercontent.com/texomy/patterns/main/core/v1/'

$imports: [ 'core:money', 'core:datetime' ]

Payment:
  $fields:
    money: Money
    date: Date
  $patterns: '#{money} due on #{date}'

Sample input

USD 1,296,000.00 due on 2026-05-15
EUR 50.5 due on May 31, 2025
GBP 20 due on 2026-01-15
€5.5 billion due on January 1st, 2026

Result

[
  {
    "type": "Payment",
    "text": "USD 1,296,000.00 due on 2026-05-15",
    "start": 0,
    "end": 34,
    "fields": [
      {
        "type": "Money",
        "field": "money",
        "text": "USD 1,296,000.00",
        "start": 0,
        "end": 16,
        "fields": [
          {
            "type": "Currency::USD",
            "field": "currency",
            "text": "USD",
            "start": 0,
            "end": 3
          },
          {
            "type": "Number::Decimal",
            "field": "amount",
            "text": "1,296,000.00",
            "start": 4,
            "end": 16
          }
        ]
      },
      {
        "type": "Date::ISO",
        "field": "date",
        "text": "2026-05-15",
        "start": 24,
        "end": 34,
        "fields": [
          {
            "type": "Number::Integer",
            "field": "year",
            "text": "2026",
            "start": 24,
            "end": 28
          },
          {
            "type": "Number::Integer",
            "field": "month",
            "text": "05",
            "start": 29,
            "end": 31
          },
          {
            "type": "Number::Integer",
            "field": "day",
            "text": "15",
            "start": 32,
            "end": 34
          }
        ]
      }
    ]
  },
  {
    "type": "Payment",
    "text": "EUR 50.5 due on May 31, 2025",
    "start": 35,
    "end": 63,
    "fields": [
      {
        "type": "Money",
        "field": "money",
        "text": "EUR 50.5",
        "start": 35,
        "end": 43,
        "fields": [
          {
            "type": "Currency::EUR",
            "field": "currency",
            "text": "EUR",
            "start": 35,
            "end": 38
          },
          {
            "type": "Number::Decimal",
            "field": "amount",
            "text": "50.5",
            "start": 39,
            "end": 43
          }
        ]
      },
      {
        "type": "Date::Textual",
        "field": "date",
        "text": "May 31, 2025",
        "start": 51,
        "end": 63,
        "fields": [
          {
            "type": "Month::MAY",
            "field": "month",
            "text": "May",
            "start": 51,
            "end": 54
          },
          {
            "type": "Number::Integer",
            "field": "day",
            "text": "31",
            "start": 55,
            "end": 57
          },
          {
            "type": "Number::Integer",
            "field": "year",
            "text": "2025",
            "start": 59,
            "end": 63
          }
        ]
      }
    ]
  },
  {
    "type": "Payment",
    "text": "GBP 20 due on 2026-01-15",
    "start": 64,
    "end": 88,
    "fields": [
      {
        "type": "Money",
        "field": "money",
        "text": "GBP 20",
        "start": 64,
        "end": 70,
        "fields": [
          {
            "type": "Currency::GBP",
            "field": "currency",
            "text": "GBP",
            "start": 64,
            "end": 67
          },
          {
            "type": "Number::Integer",
            "field": "amount",
            "text": "20",
            "start": 68,
            "end": 70
          }
        ]
      },
      {
        "type": "Date::ISO",
        "field": "date",
        "text": "2026-01-15",
        "start": 78,
        "end": 88,
        "fields": [
          {
            "type": "Number::Integer",
            "field": "year",
            "text": "2026",
            "start": 78,
            "end": 82
          },
          {
            "type": "Number::Integer",
            "field": "month",
            "text": "01",
            "start": 83,
            "end": 85
          },
          {
            "type": "Number::Integer",
            "field": "day",
            "text": "15",
            "start": 86,
            "end": 88
          }
        ]
      }
    ]
  },
  {
    "type": "Payment",
    "text": "€5.5 billion due on January 1st, 2026",
    "start": 89,
    "end": 126,
    "fields": [
      {
        "type": "Money",
        "field": "money",
        "text": "€5.5 billion",
        "start": 89,
        "end": 101,
        "fields": [
          {
            "type": "Currency::EUR",
            "field": "currency",
            "text": "€",
            "start": 89,
            "end": 90
          },
          {
            "type": "Number::Integer",
            "field": "amount",
            "text": "5.5 billion",
            "start": 90,
            "end": 101,
            "fields": [
              {
                "type": "Number::Decimal",
                "field": "value",
                "text": "5.5",
                "start": 90,
                "end": 93
              },
              {
                "type": "Scale::Billion",
                "field": "scale",
                "text": "billion",
                "start": 94,
                "end": 101
              }
            ]
          }
        ]
      },
      {
        "type": "Date::Textual",
        "field": "date",
        "text": "January 1st, 2026",
        "start": 109,
        "end": 126,
        "fields": [
          {
            "type": "Month::JAN",
            "field": "month",
            "text": "January",
            "start": 109,
            "end": 116
          },
          {
            "type": "Number::Integer",
            "field": "day",
            "text": "1",
            "start": 117,
            "end": 118
          },
          {
            "type": "Number::Integer",
            "field": "year",
            "text": "2026",
            "start": 122,
            "end": 126
          }
        ]
      }
    ]
  }
]

Notes

# Dependency Aliases

Import reusable type libraries through a dependency alias.

## Notice

- `$dependencies` declares an alias named `core`.
- `$imports` loads `core:money` and `core:datetime`.
- The local `Payment` type can reference imported `${Money}` and `${Date}`.

Use aliases when common semantic types live outside the local spec.