Skip to content

Datatypes

Joe DeVivo edited this page Sep 10, 2013 · 11 revisions

Existing Datatypes

As of 8/21/2013, Cuttlefish supports the following datatypes:

integer

integer is exactly what it sounds like.

{enum, Enum = [atom()]}

enum is great! You know the fixed set of options for a setting, so use this one. Those fixed options are provided in the second element of the enum tuple.

ip

The ip datatype exists currently as an IP/Port combo, and it's currently under discussion as to whether or not we want ip and ip/port to be different datatypes.

string

string is the default datatype. Everything in a .conf file is a string anyway, so we're guaranteed a successful conversion.

{duration, BaseUnit = f | w | d | h | m | s | ms }

durations are fixed intervals of time, the largest unit of which will be a one week. Anything larger will have to be expressed in terms of weeks, since larger units (month, year) are of variable duration. durations manifest in .conf files as strings like this: 1w2d.

The following units are supported:

  • f - fortnight
  • w - week
  • d - day
  • h - hour
  • m - minute
  • s - second
  • ms - millisecond

You can use any combination of these. I'm not sure why you'd want to specify 1w13ms, but you can.

Did I mention you can use floats here? 0.5d? no probalo.

duration will convert automatically to BaseUnit in your app.config. If you want it to be seconds instead of milliseconds, just use the datatype {duration, s}. It will round up to the nearest second, so 1ms = 999ms = 1s. Confused? You won't be, after this week's episode of...Soap.

bytesize

In your app.config, these will end up as bytes in integers, so 1KB = 1024.

bytesize will work pretty much like duration but with three differences.

  • The units will are MB, KB, and GB
  • If no unit is specified, it's just bytes
  • You will only be able to use ONE unit. e.g. no 4gb3kb <- that makes no sense!

Note: lowercase units (i.e. gb, mb, and kb) are ok, but mixed case are not. That's to avoid confusion with Megabits

Datatypes scheduled for addition

file / dir

file / dir only exists as an idea at this point. It will allow for included validators like valid path and exists. Some files may need to exist, some may not. some may need to be writable. I'm not sure this makes the first release.