Class: WRuby::ModuleDefinition
- Inherits:
-
Object
- Object
- WRuby::ModuleDefinition
- Defined in:
- lib/wruby.old/lib/module_definition.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
-
#initialize(data) ⇒ ModuleDefinition
constructor
A new instance of ModuleDefinition.
- #qualified_name ⇒ Object
- #render_definitions(module_name) ⇒ Object
- #render_methods ⇒ Object
Constructor Details
#initialize(data) ⇒ ModuleDefinition
Returns a new instance of ModuleDefinition.
6 7 8 9 10 11 |
# File 'lib/wruby.old/lib/module_definition.rb', line 6 def initialize(data) @name = data.require("name", "Module definition requires a name") @methods = data["methods"] @methods&.map!{|e| MethodDefinition.new(e)} @free_method = data["free"] end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
5 6 7 |
# File 'lib/wruby.old/lib/module_definition.rb', line 5 def name @name end |
Instance Method Details
#qualified_name ⇒ Object
19 20 21 |
# File 'lib/wruby.old/lib/module_definition.rb', line 19 def qualified_name return "m#{@name}" end |
#render_definitions(module_name) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/wruby.old/lib/module_definition.rb', line 23 def render_definitions(module_name) module_def = "VALUE #{qualified_name} = rb_define_module" module_def += module_name.nil? ? "(" : "_under(#{module_name}, " module_def += "\"#{@name}\");\n" definitions = @methods.map do |m| rb_method = case m.method_type when "singleton" "rb_define_singleton_method" else "rb_define_method" end rb_method += "(#{qualified_name}, \"#{m.name}\", #{m.qualified_name(qualified_name)}, #{m.param_count});" if m.aliased? && m.method_type != "singleton" rb_method += "\nrb_define_alias(#{qualified_name}, \"#{m.alias}\", \"#{m.name}\"" end rb_method; end.join("\n") module_def + definitions end |
#render_methods ⇒ Object
13 14 15 16 17 |
# File 'lib/wruby.old/lib/module_definition.rb', line 13 def render_methods @methods.map do |m| m.render_signature(qualified_name) end.join("\n\n") end |