Module: Beefcake::Message

Defined Under Namespace

Modules: Decode, Dsl, Encode Classes: Field, InvalidValueError, RequiredFieldNotSetError, WrongTypeError

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(o) ⇒ Object



213
214
215
216
217
# File 'lib/beefcake.rb', line 213

def self.included(o)
  o.extend Dsl
  o.extend Decode
  o.send(:include, Encode)
end

Instance Method Details

#==(o) ⇒ Object



237
238
239
240
# File 'lib/beefcake.rb', line 237

def ==(o)
  return false if (o == nil) || (o == false)
  fields.values.all? {|fld| self[fld.name] == o[fld.name] }
end

#[](k) ⇒ Object



229
230
231
# File 'lib/beefcake.rb', line 229

def [](k)
  __send__(k)
end

#[]=(k, v) ⇒ Object



233
234
235
# File 'lib/beefcake.rb', line 233

def []=(k, v)
  __send__("#{k}=", v)
end

#fieldsObject



225
226
227
# File 'lib/beefcake.rb', line 225

def fields
  self.class.fields
end

#initialize(attrs = {}) ⇒ Object



219
220
221
222
223
# File 'lib/beefcake.rb', line 219

def initialize(attrs={})
  fields.values.each do |fld|
    self[fld.name] = attrs[fld.name]
  end
end

#inspectObject



242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
# File 'lib/beefcake.rb', line 242

def inspect
  set = fields.values.select {|fld| self[fld.name] != nil }

  flds = set.map do |fld|
    val = self[fld.name]

    case fld.type
    when Class
      "#{fld.name}: #{val.inspect}"
    when Module
      title = name_for(fld.type, val) || "-NA-"
      "#{fld.name}: #{title}(#{val.inspect})"
    else
      "#{fld.name}: #{val.inspect}"
    end
  end

  "<#{self.class.name} #{flds.join(", ")}>"
end

#to_hashObject



262
263
264
265
266
267
268
269
270
# File 'lib/beefcake.rb', line 262

def to_hash
  fields.values.inject({}) do |h, fld|
    value = self[fld.name]
    unless value.nil?
      h[fld.name] = value
    end
    h
  end
end