diff options
| author | Daniel Bovensiepen <[email protected]> | 2013-06-23 18:51:58 +0800 |
|---|---|---|
| committer | Daniel Bovensiepen <[email protected]> | 2013-06-23 18:51:58 +0800 |
| commit | ad07d41bd1b42fe7d23e04361839f511c5f9cd7f (patch) | |
| tree | 05b1aa3a7d3657d6b3e7e5b10c7ca90bd5ff7cdf /doc/language/mrbdoc/lib | |
| parent | dd6b265b2dacde07ee267372a22bb9f9232dc6b9 (diff) | |
| download | mruby-ad07d41bd1b42fe7d23e04361839f511c5f9cd7f.tar.gz mruby-ad07d41bd1b42fe7d23e04361839f511c5f9cd7f.zip | |
Improve generator
Diffstat (limited to 'doc/language/mrbdoc/lib')
| -rw-r--r-- | doc/language/mrbdoc/lib/mrbdoc_analyze.rb | 26 | ||||
| -rw-r--r-- | doc/language/mrbdoc/lib/mrbdoc_docu.rb | 25 |
2 files changed, 32 insertions, 19 deletions
diff --git a/doc/language/mrbdoc/lib/mrbdoc_analyze.rb b/doc/language/mrbdoc/lib/mrbdoc_analyze.rb index 88b42fc69..94f368c08 100644 --- a/doc/language/mrbdoc/lib/mrbdoc_analyze.rb +++ b/doc/language/mrbdoc/lib/mrbdoc_analyze.rb @@ -6,13 +6,11 @@ class MRBDoc @mrb_files = {} @dir = File.expand_path(dir) - block.call "MRBDOC\tStart Analyzing Source of #{@dir}" + block.call "MRBDOC\tanalyze #{@dir}" analyze(dir) do |progress| block.call progress end - - block.call "MRBDOC\tFinish Analyzing Source" end def each_file(&block); @mrb_files.each {|k,v| block.call k,v}; end @@ -97,6 +95,13 @@ class MRBFile @last_line = nil @assignments = {} + @assignments['mrb->object_class'] = 'Object' + @assignments['mrb->kernel_module'] = 'Kernel' + @assignments['mrb->module_class'] = 'Module' + @assignments['mrb->nil_class'] = 'NilClass' + @assignments['mrb->true_class'] = 'TrueClass' + @assignments['mrb->class_class'] = 'Class' + analyze end @@ -121,8 +126,8 @@ class MRBFile end def each_module &block - @rb_module_c_def.each_key do |module_name| - block.call module_name + @rb_module_c_def.each do |module_name, module_hsh| + block.call module_name, module_hsh end end @@ -202,6 +207,17 @@ class MRBFile iso = $5.clone iso.strip! @rb_class_method_c_def["#{class_name}_#{$2}"] = {:c_func => $3, :args => $4, :rb_class => class_name, :iso => iso} + when /mrb_name_class\(.*?\,#{RXP_C_VAR}\,\s*mrb_intern\(.*?,#{RXP_C_STR}\)\)#{RXP_C_ISO}/ + class_name = $2.clone + iso = $3.clone + iso.strip! + @rb_class_c_def[class_name] = {:c_object => $1, :iso => iso} + @assignments[$1] = class_name + when /mrb_include_module\(.*?\,#{RXP_C_VAR}\,\s*mrb_class_get\(.*?\,#{RXP_C_STR}\)\)/ + class_name = resolve_obj($1) + mod = $2.clone + @rb_class_c_def[class_name][:include] = [] unless @rb_class_c_def[class_name].has_key? :include + @rb_class_c_def[class_name][:include] << mod end end diff --git a/doc/language/mrbdoc/lib/mrbdoc_docu.rb b/doc/language/mrbdoc/lib/mrbdoc_docu.rb index 05aa785ab..116228927 100644 --- a/doc/language/mrbdoc/lib/mrbdoc_docu.rb +++ b/doc/language/mrbdoc/lib/mrbdoc_docu.rb @@ -1,21 +1,16 @@ class MRBDoc - DOC_DIR = 'language' - def write_documentation dir, &block - block.call "MRBDOC\tStart Building Documentation to #{doc_dir(dir)}" + block.call "MRBDOC\twrite to #{File.expand_path(dir)}" write(dir) do |progress| block.call progress end - - block.call "MRBDOC\tFinish Building Documentation" end private def write dir - # io = STDOUT - File.open(File.expand_path('Core_Classes.md', dir), 'w+') do |io| + File.open(File.expand_path('Core.md', dir), 'w+') do |io| print_core_classes(io) print_core_modules(io) end @@ -44,14 +39,16 @@ class MRBDoc file = find_c_file_by_class(name) file = file.split("#{@dir}/")[1] iso = hsh[:data][:iso] - iso = 'n/a' if iso.nil? + iso = 'n/a' if iso.nil? or iso == '' + mixins = hsh[:data][:include].join(', ') unless hsh[:data][:include].nil? + mixins = 'n/a' if mixins.nil? or mixins == '' io.puts <<CLASS ## #{name} ISO Code | Mixins | Source File --- | --- | --- -#{hsh[:data][:iso]} | n/a | #{file} +#{iso} | #{mixins} | #{file} CLASS print_class_methods(io, hsh) @@ -65,8 +62,8 @@ CLASS core_list.sort.each do |name, hsh| file = find_c_file_by_module(name) file = file.split("#{@dir}/")[1] - iso = hsh[:iso] - iso = 'n/a' if iso.nil? + iso = hsh[:data][:iso] + iso = 'n/a' if iso.nil? or iso == '' io.puts <<CLASS ## #{name} @@ -101,16 +98,16 @@ CLASS line_no = find_c_func(met_hsh[:c_func])[:line_no] file = find_c_file(met_hsh[:rb_class], met_hsh[:c_func]) file = file.split("#{@dir}/")[1] + iso = met_hsh[:iso] + iso = 'n/a' if iso.nil? or iso == '' io.puts <<METHOD #### #{met_name} ISO Code | Source File | C Function | Line --- | --- | --- -#{met_hsh[:iso]} | #{file} | #{met_hsh[:c_func]} | #{line_no} +#{iso} | #{file} | #{met_hsh[:c_func]} | #{line_no} METHOD end - - def doc_dir dir; File.expand_path DOC_DIR, dir; end end |
