Class: Modeling::ModelField

Inherits:
Object
  • Object
show all
Defined in:
lib/modeling/model_field.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, initialize_argument, instance_variable, writer, reader, tester) ⇒ ModelField

Returns a new instance of ModelField.



6
7
8
9
10
11
12
13
14
# File 'lib/modeling/model_field.rb', line 6

def initialize name, initialize_argument, instance_variable, writer, reader, tester
  @name = name
  @initialize_argument = initialize_argument
  @instance_variable = instance_variable
  @writer = writer
  @reader = reader
  @tester = tester
  @instance_variable_name = "@#{name}".to_sym
end

Instance Attribute Details

#instance_variable_nameObject (readonly)

Returns the value of attribute instance_variable_name.



17
18
19
# File 'lib/modeling/model_field.rb', line 17

def instance_variable_name
  @instance_variable_name
end

#nameObject (readonly)

Returns the value of attribute name.



16
17
18
# File 'lib/modeling/model_field.rb', line 16

def name
  @name
end

Class Method Details

.parse(argument, filter = nil) ⇒ Object



40
41
42
43
44
45
46
47
48
49
# File 'lib/modeling/model_field.rb', line 40

def parse argument, filter = nil
  case argument
  when ModelField
    argument
  when Symbol, String
    parse_model_field argument
  else
    raise Exception.new "Unsupported argument #{argument} of #{argument.class} class."
  end
end

.parse_model_field(argument) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/modeling/model_field.rb', line 51

def parse_model_field argument
  initialize_argument = instance_variable = reader = writer = tester = false
  name_start = (0...argument.length).each do |i|
    case a = argument[i]
    when "R" then reader = true
    when "W" then writer = true
    when "T" then tester = true
    when "V" then instance_variable = true
    when "A" then initialize_argument = true
    when "@" then instance_variable = initialize_argument = true
    when "_" then break i + 1
    else
      if a.upcase != a
        break i
      else raise Exception.new "Invalid model field '#{argument}' - unknown option '#{a}'"
      end
    end
  end
  case name_start
  when 0
    initialize_argument = instance_variable = reader = writer = true
    name = argument
  when Integer
    name = argument[name_start..]
  else raise Exception.new "Invalid model field '#{argument}' - field name is missing"
  end

  raise Exception.new "Invalid model field #{argument} - field name '#{name}' is invalid" unless name =~ /\w+/
  ModelField.new name.to_sym, initialize_argument, instance_variable, writer, reader, tester
end

Instance Method Details

#initialize_argument?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/modeling/model_field.rb', line 19

def initialize_argument?
  @initialize_argument
end

#instance_variable?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/modeling/model_field.rb', line 23

def instance_variable?
  @instance_variable
end

#reader?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/modeling/model_field.rb', line 31

def reader?
  @reader
end

#tester?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/modeling/model_field.rb', line 35

def tester?
  @tester
end

#writer?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/modeling/model_field.rb', line 27

def writer?
  @writer
end