The Letter E with E
Python, 53 51 55 Bytes
lambda a,b,c,d,e:d.join("\n"*-~b).join([c+e*(a-2)+c]*3)
+4 Bytes thanks to @nimi
anonymous lambda function, to call it, write f=
before it. Example:
>>> print f(4,1,"€","|","-")
€--€
|
€--€
|
€--€
alternative, 53 Bytes
lambda a,b,c,d,e:((c+e*a+c+"\n"+(d+"\n")*b)*3)[:-b*2]
old version with the special case of no input, 69 65 63 Bytes
yay to changing the requirements mid-challenge...
lambda a=1,b=1,(c,d,e)="+|-":d.join("\n"*-~b).join([c+e*a+c]*3)
05AB1E, 16 14 bytes
Í×s.ø©|`×`»D®»
Explanation
Í× # create a string of the correct nr of horizontal chars
s.ø # add the corner char on both sides
© # save in register while keeping it on the stack
|` # push the remaining inputs to the top of the stack
×` # push the correct nr of vertical chars on the stack
» # join on newline (joining the top vertical and horizontal sections)
D # duplicate this
® # push the horizontal part again
» # join everything on newline
Try it online!
Saved 4 bytes thanks to Adnan.
C, 167 161 159 bytes
Yeah.
#define p putchar
i,j;g(a,c,e){p(c);for(i=2;i++<a;)p(e);p(c);p(10);}h(b,d){for(i=0;i++<b;){p(d);p(10);}}f(a,b,c,d,e){g(a,c,e);h(b,d);g(a,c,e);h(b,d);g(a,c,e);}
Try it on Ideone, with some test cases