112: def flexmock(*args)
113: name = nil
114: quick_defs = {}
115: domain_obj = nil
116: while ! args.empty?
117: case args.first
118: when :base
119: args.shift
120: domain_obj = args.shift
121: when String, Symbol
122: name = args.shift.to_s
123: when Hash
124: quick_defs = args.shift
125: else
126: domain_obj = args.shift
127: end
128: end
129: if domain_obj
130: mock = flexmock_make_partial_proxy(domain_obj, name)
131: else
132: mock = FlexMock.new(name || "unknown")
133: domain_obj = mock
134: end
135: flexmock_quick_define(mock, quick_defs)
136: yield(mock) if block_given?
137: flexmock_remember(mock)
138: block_given? ? domain_obj : mock
139: end