Class: SDL::Parser
- Inherits:
-
Object
- Object
- SDL::Parser
- Defined in:
- lib/sdl/parser.rb
Overview
The parser takes a string and converts it to a Field. A field is described using a series of directives separated by a colon.
Examples:
title:string{120}
body:text:nullable
status:enum{draft,published}
user:belongs_to:foreign_key
image:has_one_attached
Available directives:
id
string
string{limit}
boolean
integer
integer{limit}
float
decimal
decimal{precision,scale}
date
datetime
text
text{limit}
binary
binary{limit}
enum{value,...}
belongs_to
belongs_to{model}
has_one
has_one{model}
has_many
has_many{model}
has_one_attached
has_many_attached
unique
nullable
index
foreign_key
default{value}
Instance Method Summary collapse
-
#parse(value) ⇒ Field
Parses a string into a Field.
Instance Method Details
#parse(value) ⇒ Field
Parses a string into a Field
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/sdl/parser.rb', line 58 def parse(value) name, *args = value.split(":") name = name.to_sym opts = {type: :string} args.each { |arg| parse!(arg, opts) } type = opts.delete(:type) # Attempt to coerce the default opts[:default] = coerce(opts[:default], type) if opts[:default] if type.is_a?(Symbol) Attribute.new(name, type, **opts) else type.new(name, **opts) end end |