Class: Synthra::Types::Travel::FlightNumber

Inherits:
Base
  • Object
show all
Defined in:
lib/synthra/types/travel/travel.rb

Overview

FlightNumber type

Constant Summary collapse

AIRLINE_CODES =

Common IATA airline codes

Two-letter codes for major airlines.

Returns:

  • (Array<String>)

    list of airline codes

["AA", "UA", "DL", "SW", "LH", "BA", "AF", "EK", "SQ", "JL"].freeze

Instance Method Summary collapse

Instance Method Details

#generate_edge(rng, context, args) ⇒ Object



102
103
104
# File 'lib/synthra/types/travel/travel.rb', line 102

def generate_edge(rng, context, args)
  ["AA000", "AA9999", "ZZ000"].sample(random: rng.instance_variable_get(:@random))
end

#generate_invalid(rng, context, args) ⇒ Object



106
107
108
# File 'lib/synthra/types/travel/travel.rb', line 106

def generate_invalid(rng, context, args)
  [nil, "not a flight", "invalid", [], {}].sample(random: rng.instance_variable_get(:@random))
end

#generate_random(rng, context, args) ⇒ String

Generate random flight number

Parameters:

Options Hash (args):

  • :airline (String)

    airline code (default: random)

  • :length (Integer)

    flight number length (default: 3..4 digits)

Returns:

  • (String)

    generated flight number



91
92
93
94
95
96
97
98
99
100
# File 'lib/synthra/types/travel/travel.rb', line 91

def generate_random(rng, context, args)
  airline = args[:airline] || rng.sample(AIRLINE_CODES)
  length = args[:length] || rng.int(3, 4)

  # Generate flight number digits
  max_value = 10**length - 1
  number = format("%0#{length}d", rng.int(1, max_value))

  "#{airline}#{number}"
end