indent_up();
indent(out) << "include ThriftStruct" << endl;
+ if (is_exception) {
+ generate_rb_simple_exception_constructor(out, tstruct);
+ }
+
generate_accessors(out, tstruct);
generate_field_defns(out, tstruct);
indent(out) << "end" << endl << endl;
}
+void t_rb_generator::generate_rb_simple_exception_constructor(std::ofstream& out, t_struct* tstruct) {
+ const vector<t_field*>& members = tstruct->get_members();
+
+ if (members.size() == 1) {
+ vector<t_field*>::const_iterator m_iter = members.begin();
+
+ if ((*m_iter)->get_type()->is_string()) {
+ indent(out) << "def initialize(message)" << endl;
+ indent_up();
+ indent(out) << "super(message)" << endl;
+ indent(out) << "self." << (*m_iter)->get_name() << " = message" << endl;
+ indent_down();
+ indent(out) << "end" << endl << endl;
+ }
+ }
+}
+
void t_rb_generator::generate_accessors(std::ofstream& out, t_struct* tstruct) {
const vector<t_field*>& members = tstruct->get_members();
vector<t_field*>::const_iterator m_iter;
void generate_rb_struct_reader(std::ofstream& out, t_struct* tstruct);
void generate_rb_struct_writer(std::ofstream& out, t_struct* tstruct);
void generate_rb_function_helpers(t_function* tfunction);
+ void generate_rb_simple_exception_constructor(std::ofstream& out, t_struct* tstruct);
void generate_accessors (std::ofstream& out, t_struct* tstruct);
void generate_field_defns (std::ofstream& out, t_struct* tstruct);
void generate_field_data (std::ofstream& out, t_type* field_type, const std::string& field_name, t_const_value* field_value);