diff options
| -rw-r--r-- | doc/language/Core.md | 1620 | ||||
| -rw-r--r-- | doc/language/README.md | 9 | ||||
| -rwxr-xr-x | doc/language/generator.rb | 7 | ||||
| -rw-r--r-- | doc/language/mrbdoc/lib/mrbdoc_analyze.rb | 231 | ||||
| -rw-r--r-- | doc/language/mrbdoc/lib/mrbdoc_docu.rb | 113 | ||||
| -rwxr-xr-x | doc/language/mrbdoc/mrbdoc.rb | 22 | ||||
| -rw-r--r-- | src/array.c | 2 | ||||
| -rw-r--r-- | src/class.c | 6 | ||||
| -rw-r--r-- | src/compar.c | 2 | ||||
| -rw-r--r-- | src/enum.c | 2 | ||||
| -rw-r--r-- | src/hash.c | 2 | ||||
| -rw-r--r-- | src/kernel.c | 2 | ||||
| -rw-r--r-- | src/numeric.c | 8 | ||||
| -rw-r--r-- | src/proc.c | 2 | ||||
| -rw-r--r-- | src/range.c | 2 | ||||
| -rw-r--r-- | src/string.c | 2 | ||||
| -rw-r--r-- | src/symbol.c | 2 |
17 files changed, 2018 insertions, 16 deletions
diff --git a/doc/language/Core.md b/doc/language/Core.md new file mode 100644 index 000000000..67616d551 --- /dev/null +++ b/doc/language/Core.md @@ -0,0 +1,1620 @@ +# Core Classes + +## Array + +ISO Code | Mixins | Source File +--- | --- | --- +15.2.12 | Enumerable | src/array.c + +### Class Methods + +#### [] + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.4.1 | src/array.c | mrb_ary_s_create | 215 + +### Methods + +#### * + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.1 | src/array.c | mrb_ary_times | 352 + +#### + + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.2 | src/array.c | mrb_ary_plus | 256 + +#### << + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.3 | src/array.c | mrb_ary_push_m | 448 + +#### <=> + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.36 | src/array.c | mrb_ary_cmp | 293 + +#### == + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.33 | src/array.c | mrb_ary_equal | 1057 + +#### [] + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.4 | src/array.c | mrb_ary_aget | 680 + +#### []= + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.5 | src/array.c | mrb_ary_aset | 713 + +#### clear + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.6 | src/array.c | mrb_ary_clear | 864 + +#### concat + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.8 | src/array.c | mrb_ary_concat_m | 245 + +#### delete_at + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.9 | src/array.c | mrb_ary_delete_at | 739 + +#### empty? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.12 | src/array.c | mrb_ary_empty_p | 878 + +#### eql? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.34 | src/array.c | mrb_ary_eql | 1092 + +#### first + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.13 | src/array.c | mrb_ary_first | 768 + +#### index + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.14 | src/array.c | mrb_ary_index_m | 815 + +#### initialize_copy + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.16 | src/array.c | mrb_ary_replace_m | 341 + +#### inspect + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.31 | src/array.c | mrb_ary_inspect | 953 + +#### join + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.17 | src/array.c | mrb_ary_join_m | 1033 + +#### last + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.18 | src/array.c | mrb_ary_last | 788 + +#### length + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.19 | src/array.c | mrb_ary_size | 856 + +#### pop + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.21 | src/array.c | mrb_ary_pop | 462 + +#### push + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.22 | src/array.c | mrb_ary_push_m | 448 + +#### replace + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.23 | src/array.c | mrb_ary_replace_m | 341 + +#### reverse + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.24 | src/array.c | mrb_ary_reverse | 400 + +#### reverse! + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.25 | src/array.c | mrb_ary_reverse_bang | 379 + +#### rindex + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.26 | src/array.c | mrb_ary_rindex_m | 830 + +#### shift + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.27 | src/array.c | mrb_ary_shift | 473 + +#### size + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.28 | src/array.c | mrb_ary_size | 856 + +#### slice + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.29 | src/array.c | mrb_ary_aget | 680 + +#### unshift + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.12.5.30 | src/array.c | mrb_ary_unshift_m | 533 + +## Exception + +ISO Code | Mixins | Source File +--- | --- | --- +15.2.22 | n/a | src/error.c + +### Class Methods + +#### exception + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/class.c | mrb_instance_new | 1054 + +### Methods + +#### == + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/error.c | exc_equal | 160 + +#### exception + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/error.c | exc_exception | 66 + +#### initialize + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/error.c | exc_initialize | 42 + +#### inspect + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/error.c | exc_inspect | 122 + +#### message + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/error.c | exc_message | 109 + +#### to_s + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/error.c | exc_to_s | 90 + +## FalseClass + +ISO Code | Mixins | Source File +--- | --- | --- +n/a | n/a | src/object.c + +### Methods + +#### & + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.6.3.1 | src/object.c | false_and | 201 + +#### ^ + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.6.3.2 | src/object.c | false_xor | 220 + +#### inspect + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/object.c | false_to_s | 257 + +#### to_s + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.6.3.3 | src/object.c | false_to_s | 257 + +#### | + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.6.3.4 | src/object.c | false_or | 240 + +## Fixnum + +ISO Code | Mixins | Source File +--- | --- | --- +n/a | n/a | src/numeric.c + +### Methods + +#### % + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.5 | src/numeric.c | fix_mod | 818 + +#### & + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.9 | src/numeric.c | fix_and | 944 + +#### * + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.3 | src/numeric.c | fix_mul | 771 + +#### + + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.1 | src/numeric.c | fix_plus | 1195 + +#### - + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.2 | src/numeric.c | fix_minus | 1234 + +#### -@ + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.7.4.2 | src/numeric.c | fix_uminus | 71 + +#### << + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.12 | src/numeric.c | fix_lshift | 1049 + +#### == + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.7 | src/numeric.c | fix_equal | 889 + +#### >> + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.13 | src/numeric.c | fix_rshift | 1083 + +#### ^ + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.11 | src/numeric.c | fix_xor | 986 + +#### divmod + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.30 | src/numeric.c | fix_divmod | 849 + +#### eql? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.16 | src/numeric.c | num_eql | 385 + +#### hash + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.18 | src/numeric.c | flo_hash | 451 + +#### inspect + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/numeric.c | fix_to_s | 1289 + +#### next + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.19 | src/numeric.c | int_succ | 728 + +#### succ + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.21 | src/numeric.c | fix_succ | 711 + +#### to_f + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.23 | src/numeric.c | fix_to_f | 1118 + +#### to_s + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.25 | src/numeric.c | fix_to_s | 1289 + +#### | + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.10 | src/numeric.c | fix_or | 965 + +#### ~ + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.8 | src/numeric.c | fix_rev | 915 + +## Float + +ISO Code | Mixins | Source File +--- | --- | --- +15.2.9 | n/a | src/numeric.c + +### Methods + +#### % + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.5 | src/numeric.c | flo_mod | 360 + +#### * + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.3 | src/numeric.c | flo_mul | 313 + +#### + + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.1 | src/numeric.c | flo_plus | 1345 + +#### - + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.2 | src/numeric.c | flo_minus | 295 + +#### == + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.7 | src/numeric.c | flo_eq | 422 + +#### ceil + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.8 | src/numeric.c | flo_ceil | 568 + +#### finite? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.9 | src/numeric.c | flo_finite_p | 519 + +#### floor + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.10 | src/numeric.c | flo_floor | 543 + +#### infinite? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.11 | src/numeric.c | flo_infinite_p | 497 + +#### inspect + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/numeric.c | flo_to_s | 276 + +#### round + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.12 | src/numeric.c | flo_round | 610 + +#### to_f + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.13 | src/numeric.c | flo_to_f | 478 + +#### to_i + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.14 | src/numeric.c | flo_truncate | 661 + +#### to_int + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/numeric.c | flo_truncate | 661 + +#### to_s + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.16 | src/numeric.c | flo_to_s | 276 + +#### truncate + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.15 | src/numeric.c | flo_truncate | 661 + +## Hash + +ISO Code | Mixins | Source File +--- | --- | --- +15.2.13 | Enumerable | src/hash.c + +### Methods + +#### == + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.1 | src/hash.c | mrb_hash_equal | 1062 + +#### [] + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.2 | src/hash.c | mrb_hash_aget | 323 + +#### []= + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.3 | src/hash.c | mrb_hash_aset | 687 + +#### __delete + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.8 | src/hash.c | mrb_hash_delete | 524 + +#### __init_core + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.16 | src/hash.c | mrb_hash_init_core | 245 + +#### clear + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.4 | src/hash.c | mrb_hash_clear | 659 + +#### default + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.5 | src/hash.c | mrb_hash_default | 383 + +#### default= + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.6 | src/hash.c | mrb_hash_set_default | 422 + +#### default_proc + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.7 | src/hash.c | mrb_hash_default_proc | 451 + +#### default_proc= + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.7 | src/hash.c | mrb_hash_set_default_proc | 473 + +#### empty? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.12 | src/hash.c | mrb_hash_empty_p | 776 + +#### eql? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.32 | src/hash.c | mrb_hash_eql | 1080 + +#### has_key? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.13 | src/hash.c | mrb_hash_has_key | 949 + +#### has_value? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.14 | src/hash.c | mrb_hash_has_value | 992 + +#### include? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.15 | src/hash.c | mrb_hash_has_key | 949 + +#### initialize_copy + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.17 | src/hash.c | mrb_hash_replace | 711 + +#### inspect + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.30 | src/hash.c | mrb_hash_inspect | 831 + +#### key? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.18 | src/hash.c | mrb_hash_has_key | 949 + +#### keys + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.19 | src/hash.c | mrb_hash_keys | 868 + +#### length + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.20 | src/hash.c | mrb_hash_size_m | 757 + +#### member? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.21 | src/hash.c | mrb_hash_has_key | 949 + +#### replace + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.23 | src/hash.c | mrb_hash_replace | 711 + +#### shift + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.24 | src/hash.c | mrb_hash_shift | 547 + +#### size + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.25 | src/hash.c | mrb_hash_size_m | 757 + +#### store + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.26 | src/hash.c | mrb_hash_aset | 687 + +#### to_hash + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.29 | src/hash.c | mrb_hash_to_hash | 849 + +#### value? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.27 | src/hash.c | mrb_hash_has_value | 992 + +#### values + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.13.4.28 | src/hash.c | mrb_hash_values | 899 + +## Integer + +ISO Code | Mixins | Source File +--- | --- | --- +15.2.8 | n/a | src/numeric.c + +### Methods + +#### to_i + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.24 | src/numeric.c | int_to_i | 693 + +#### to_int + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/numeric.c | int_to_i | 693 + +## NilClass + +ISO Code | Mixins | Source File +--- | --- | --- +n/a | n/a | src/object.c + +### Methods + +#### & + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.4.3.1 | src/object.c | false_and | 201 + +#### ^ + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.4.3.2 | src/object.c | false_xor | 220 + +#### inspect + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/object.c | nil_inspect | 89 + +#### nil? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.4.3.4 | src/object.c | mrb_true | 69 + +#### to_s + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.4.3.5 | src/object.c | nil_to_s | 83 + +#### | + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.4.3.3 | src/object.c | false_or | 240 + +## Numeric + +ISO Code | Mixins | Source File +--- | --- | --- +15.2.7 | Comparable | src/numeric.c + +### Methods + +#### ** + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/numeric.c | num_pow | 86 + +#### +@ + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.7.4.1 | src/numeric.c | num_uplus | 52 + +#### -@ + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.7.4.2 | src/numeric.c | num_uminus | 65 + +#### / + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.8.3.4 | src/numeric.c | num_div | 126 + +#### <=> + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.9.3.6 | src/numeric.c | num_cmp | 1309 + +#### abs + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.7.4.3 | src/numeric.c | num_abs | 147 + +#### quo + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.7.4.5 | src/numeric.c | num_div | 126 + +## Proc + +ISO Code | Mixins | Source File +--- | --- | --- +15.2.17 | n/a | src/proc.c + +### Methods + +#### arity + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/proc.c | mrb_proc_arity | 136 + +#### initialize + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/proc.c | mrb_proc_initialize | 88 + +#### initialize_copy + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/proc.c | mrb_proc_init_copy | 104 + +## Range + +ISO Code | Mixins | Source File +--- | --- | --- +15.2.14 | Enumerable | src/range.c + +### Methods + +#### == + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.1 | src/range.c | mrb_range_eq | 150 + +#### === + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.2 | src/range.c | mrb_range_include | 222 + +#### begin + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.3 | src/range.c | mrb_range_beg | 57 + +#### each + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.4 | src/range.c | mrb_range_each | 259 + +#### end + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.5 | src/range.c | mrb_range_end | 76 + +#### eql? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.14 | src/range.c | range_eql | 373 + +#### exclude_end? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.6 | src/range.c | mrb_range_excl | 90 + +#### first + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.7 | src/range.c | mrb_range_beg | 57 + +#### include? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.8 | src/range.c | mrb_range_include | 222 + +#### initialize + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.9 | src/range.c | mrb_range_initialize | 120 + +#### initialize_copy + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.15 | src/range.c | range_initialize_copy | 398 + +#### inspect + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.13 | src/range.c | range_inspect | 352 + +#### last + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.10 | src/range.c | mrb_range_end | 76 + +#### member? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.11 | src/range.c | mrb_range_include | 222 + +#### to_s + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.14.4.12 | src/range.c | range_to_s | 304 + +## RuntimeError + +ISO Code | Mixins | Source File +--- | --- | --- +15.2.28 | n/a | src/error.c + +## ScriptError + +ISO Code | Mixins | Source File +--- | --- | --- +15.2.37 | n/a | src/error.c + +## StandardError + +ISO Code | Mixins | Source File +--- | --- | --- +15.2.23 | n/a | src/error.c + +## String + +ISO Code | Mixins | Source File +--- | --- | --- +15.2.10 | Comparable | src/string.c + +### Methods + +#### * + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.1 | src/string.c | mrb_str_times | 480 + +#### + + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.2 | src/string.c | mrb_str_plus_m | 433 + +#### <=> + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.3 | src/string.c | mrb_str_cmp_m | 569 + +#### == + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.4 | src/string.c | mrb_str_equal_m | 636 + +#### [] + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.6 | src/string.c | mrb_str_aref_m | 855 + +#### bytes + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/string.c | mrb_str_bytes | 2507 + +#### bytesize + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/string.c | mrb_str_bytesize | 448 + +#### capitalize + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.7 | src/string.c | mrb_str_capitalize | 921 + +#### capitalize! + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.8 | src/string.c | mrb_str_capitalize_bang | 885 + +#### chomp + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.9 | src/string.c | mrb_str_chomp | 1024 + +#### chomp! + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.10 | src/string.c | mrb_str_chomp_bang | 939 + +#### chop + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.11 | src/string.c | mrb_str_chop | 1082 + +#### chop! + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.12 | src/string.c | mrb_str_chop_bang | 1043 + +#### downcase + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.13 | src/string.c | mrb_str_downcase | 1132 + +#### downcase! + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.14 | src/string.c | mrb_str_downcase_bang | 1099 + +#### empty? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.16 | src/string.c | mrb_str_empty_p | 1152 + +#### eql? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.17 | src/string.c | mrb_str_eql | 1167 + +#### hash + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.20 | src/string.c | mrb_str_hash_m | 1253 + +#### include? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.21 | src/string.c | mrb_str_include | 1273 + +#### index + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.22 | src/string.c | mrb_str_index_m | 1315 + +#### initialize + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.23 | src/string.c | mrb_str_init | 1441 + +#### initialize_copy + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.24 | src/string.c | mrb_str_replace | 1425 + +#### inspect + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.46 | src/string.c | mrb_str_inspect | 2445 + +#### intern + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.25 | src/string.c | mrb_str_intern | 1473 + +#### length + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.26 | src/string.c | mrb_str_size | 463 + +#### replace + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.28 | src/string.c | mrb_str_replace | 1425 + +#### reverse + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.29 | src/string.c | mrb_str_reverse | 1543 + +#### reverse! + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.30 | src/string.c | mrb_str_reverse_bang | 1569 + +#### rindex + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.31 | src/string.c | mrb_str_rindex_m | 1656 + +#### size + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.33 | src/string.c | mrb_str_size | 463 + +#### slice + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.34 | src/string.c | mrb_str_aref_m | 855 + +#### split + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.35 | src/string.c | mrb_str_split_m | 1783 + +#### to_f + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.39 | src/string.c | mrb_str_to_f | 2215 + +#### to_i + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.38 | src/string.c | mrb_str_to_i | 2092 + +#### to_s + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.40 | src/string.c | mrb_str_to_s | 2229 + +#### to_str + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.40 | src/string.c | mrb_str_to_s | 2229 + +#### to_sym + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.41 | src/string.c | mrb_str_intern | 1473 + +#### upcase + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.42 | src/string.c | mrb_str_upcase | 2279 + +#### upcase! + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.10.5.43 | src/string.c | mrb_str_upcase_bang | 2246 + +## Symbol + +ISO Code | Mixins | Source File +--- | --- | --- +15.2.11 | n/a | src/symbol.c + +### Methods + +#### <=> + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/symbol.c | sym_cmp | 413 + +#### === + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.11.3.1 | src/symbol.c | sym_equal | 186 + +#### id2name + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.11.3.2 | src/symbol.c | mrb_sym_to_s | 209 + +#### inspect + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.11.3.5 | src/symbol.c | sym_inspect | 361 + +#### to_s + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.11.3.3 | src/symbol.c | mrb_sym_to_s | 209 + +#### to_sym + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.11.3.4 | src/symbol.c | sym_to_sym | 231 + +## SyntaxError + +ISO Code | Mixins | Source File +--- | --- | --- +15.2.38 | n/a | src/error.c + +## TrueClass + +ISO Code | Mixins | Source File +--- | --- | --- +n/a | n/a | src/object.c + +### Methods + +#### & + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.5.3.1 | src/object.c | true_and | 113 + +#### ^ + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.5.3.2 | src/object.c | true_xor | 133 + +#### inspect + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/object.c | true_to_s | 150 + +#### to_s + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.5.3.3 | src/object.c | true_to_s | 150 + +#### | + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.2.5.3.4 | src/object.c | true_or | 173 + +# Core Modules + +## Comparable + +ISO Code | Source File +--- | --- +15.3.3 | src/compar.c + +## Enumerable + +ISO Code | Source File +--- | --- +15.3.2 | src/enum.c + +## GC + +ISO Code | Source File +--- | --- +n/a | src/gc.c + +### Class Methods + +#### disable + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/gc.c | gc_disable | 1131 + +#### enable + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/gc.c | gc_enable | 1109 + +#### generational_mode + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/gc.c | gc_generational_mode_get | 1231 + +#### generational_mode= + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/gc.c | gc_generational_mode_set | 1245 + +#### interval_ratio + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/gc.c | gc_interval_ratio_get | 1149 + +#### interval_ratio= + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/gc.c | gc_interval_ratio_set | 1164 + +#### start + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/gc.c | gc_start | 1089 + +#### step_ratio + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/gc.c | gc_step_ratio_get | 1182 + +#### step_ratio= + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/gc.c | gc_step_ratio_set | 1197 + +#### test + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/gc.c | gc_test | 1553 + +## Kernel + +ISO Code | Source File +--- | --- +15.3.1 | src/kernel.c + +### Class Methods + +#### block_given? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.2.2 | src/kernel.c | mrb_f_block_given_p_m | 215 + +#### global_variables + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.2.4 | src/kernel.c | mrb_f_global_variables | 1056 + +#### iterator? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.2.5 | src/kernel.c | mrb_f_block_given_p_m | 215 + +#### raise + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.2.12 | src/kernel.c | mrb_f_raise | 905 + +### Methods + +#### != + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/kernel.c | mrb_obj_not_equal_m | 105 + +#### == + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.1 | src/kernel.c | mrb_obj_equal_m | 93 + +#### === + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.2 | src/kernel.c | mrb_equal_m | 126 + +#### __id__ + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.3 | src/kernel.c | mrb_obj_id_m | 155 + +#### __send__ + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.4 | src/kernel.c | mrb_f_send | 180 + +#### block_given? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.6 | src/kernel.c | mrb_f_block_given_p_m | 215 + +#### class + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.7 | src/kernel.c | mrb_obj_class_m | 256 + +#### clone + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.8 | src/kernel.c | mrb_obj_clone | 342 + +#### dup + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.9 | src/kernel.c | mrb_obj_dup | 378 + +#### eql? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.10 | src/kernel.c | mrb_obj_equal_m | 93 + +#### equal? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.11 | src/kernel.c | mrb_obj_equal_m | 93 + +#### extend + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.13 | src/kernel.c | mrb_obj_extend_m | 437 + +#### global_variables + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.14 | src/kernel.c | mrb_f_global_variables | 1056 + +#### hash + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.15 | src/kernel.c | mrb_obj_hash | 458 + +#### initialize_copy + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.16 | src/kernel.c | mrb_obj_init_copy | 465 + +#### inspect + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.17 | src/kernel.c | mrb_obj_inspect | 53 + +#### instance_eval + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.18 | src/kernel.c | mrb_obj_instance_eval | 501 + +#### instance_of? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.19 | src/kernel.c | obj_is_instance_of | 540 + +#### instance_variable_defined? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.20 | src/kernel.c | mrb_obj_ivar_defined | 607 + +#### instance_variable_get + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.21 | src/kernel.c | mrb_obj_ivar_get | 641 + +#### instance_variable_set + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.22 | src/kernel.c | mrb_obj_ivar_set | 673 + +#### instance_variables + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.23 | src/kernel.c | mrb_obj_instance_variables | 666 + +#### is_a? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.24 | src/kernel.c | mrb_obj_is_kind_of_m | 713 + +#### iterator? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.25 | src/kernel.c | mrb_f_block_given_p_m | 215 + +#### kind_of? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.26 | src/kernel.c | mrb_obj_is_kind_of_m | 713 + +#### methods + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.31 | src/kernel.c | mrb_obj_methods_m | 811 + +#### nil? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.32 | src/kernel.c | mrb_false | 827 + +#### object_id + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.33 | src/kernel.c | mrb_obj_id_m | 155 + +#### private_methods + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.36 | src/kernel.c | mrb_obj_private_methods | 842 + +#### protected_methods + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.37 | src/kernel.c | mrb_obj_protected_methods | 859 + +#### public_methods + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.38 | src/kernel.c | mrb_obj_public_methods | 876 + +#### raise + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.40 | src/kernel.c | mrb_f_raise | 905 + +#### remove_instance_variable + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.41 | src/kernel.c | mrb_obj_remove_instance_variable | 955 + +#### respond_to? + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.43 | src/kernel.c | obj_respond_to | 991 + +#### send + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.44 | src/kernel.c | mrb_f_send | 180 + +#### singleton_class + +ISO Code | Source File | C Function | Line +--- | --- | --- +n/a | src/kernel.c | mrb_singleton_class | 919 + +#### singleton_methods + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.45 | src/kernel.c | mrb_obj_singleton_methods_m | 1072 + +#### to_s + +ISO Code | Source File | C Function | Line +--- | --- | --- +15.3.1.3.46 | src/kernel.c | mrb_any_to_s | 431 + diff --git a/doc/language/README.md b/doc/language/README.md new file mode 100644 index 000000000..67946fe64 --- /dev/null +++ b/doc/language/README.md @@ -0,0 +1,9 @@ +# Language + +mruby is an implementation of the Ruby programming language. +These documents are describing the language features and libraries +which are provided together with mruby. + +## Built-In Class and Modules + +see *doc/lang/Core.md* diff --git a/doc/language/generator.rb b/doc/language/generator.rb new file mode 100755 index 000000000..9bc907ece --- /dev/null +++ b/doc/language/generator.rb @@ -0,0 +1,7 @@ +#!/usr/bin/env ruby + +c_dir = File.dirname(__FILE__) +MRUBY_ROOT = File.expand_path("#{c_dir}/../..") +DOC_DIR = File.expand_path(c_dir) + +puts `#{DOC_DIR}/mrbdoc/mrbdoc.rb #{MRUBY_ROOT} #{DOC_DIR}` diff --git a/doc/language/mrbdoc/lib/mrbdoc_analyze.rb b/doc/language/mrbdoc/lib/mrbdoc_analyze.rb new file mode 100644 index 000000000..94f368c08 --- /dev/null +++ b/doc/language/mrbdoc/lib/mrbdoc_analyze.rb @@ -0,0 +1,231 @@ +class MRBDoc + SRC_DIR = 'src' + MRBLIB_DIR = 'mrblib' + + def analyze_code dir, &block + @mrb_files = {} + @dir = File.expand_path(dir) + + block.call "MRBDOC\tanalyze #{@dir}" + + analyze(dir) do |progress| + block.call progress + end + end + + def each_file(&block); @mrb_files.each {|k,v| block.call k,v}; end + + def find_c_func(c_func_name) + each_file do |file_name, file| + c_func = file.c_funcs(c_func_name) + return c_func unless c_func.nil? + end + {} + end + + def find_c_file(rb_obj_name, c_func_name) + last_file_name_match = '' + each_file do |file_name, file| + c_func = file.c_funcs(c_func_name) + if c_func and file.rb_class(rb_obj_name) or file.rb_module(rb_obj_name) + return file_name + elsif c_func + last_file_name_match = file_name + end + end + last_file_name_match + end + + def find_c_file_by_class(name) + each_file do |file_name, file| + rb_class = file.rb_class(name) + return file_name unless rb_class.nil? + end + 'nil' + end + + def find_c_file_by_module(name) + each_file do |file_name, file| + rb_module = file.rb_module(name) + return file_name unless rb_module.nil? + end + 'nil' + end + + private + + def analyze dir, &block + collect_all_files dir, &block + end + + def collect_all_files dir, &block + l = lambda {|f| block.call " - #{f.name}"} + collect_files(src_code_dir(dir), /\.c$/, &l) + collect_files(mrb_code_dir(dir), /\.rb$/, &l) + end + + def collect_files dir, rxp, &block + Dir.foreach(dir) do |file| + next unless file =~ rxp + + file_path = "#{dir}/#{file}" + mrb_file = MRBFile.new "#{file_path}" + @mrb_files["#{file_path}"] = mrb_file + + block.call mrb_file + end + end + + def src_code_dir dir; File.expand_path SRC_DIR, dir; end + def mrb_code_dir dir; File.expand_path MRBLIB_DIR, dir; end +end + +class MRBFile + attr_reader :name + attr_reader :file + + def initialize mrb_file + @file = mrb_file + @name = File.basename file + @c_funcs = {} + @rb_class_c_def = {} + @rb_method_c_def = {} + @rb_class_method_c_def = {} + @rb_module_c_def = {} + @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 + + def each_class &block + @rb_class_c_def.each do |class_name, class_hsh| + block.call class_name, class_hsh + end + end + + def each_method name, &block + @rb_method_c_def.each do |met_name, met_hsh| + met_name_tmp = met_name.sub /^#{name}_/, '' + block.call met_name_tmp, met_hsh if met_hsh[:rb_class] == name + end + end + + def each_class_method name, &block + @rb_class_method_c_def.each do |met_name, met_hsh| + met_name_tmp = met_name.sub /^#{name}_/, '' + block.call met_name_tmp, met_hsh if met_hsh[:rb_class] == name + end + end + + def each_module &block + @rb_module_c_def.each do |module_name, module_hsh| + block.call module_name, module_hsh + end + end + + def each_core_object &block + each_class {|n| block.call n} + each_module {|n| block.call n} + end + + def c_funcs c_func_name; @c_funcs[c_func_name]; end + def rb_class rb_class_name; @rb_class_c_def[rb_class_name]; end + def rb_module rb_module_name; @rb_module_c_def[rb_module_name]; end + + private + + def analyze + File.open(file).each_line.each_with_index do |line, idx| + line_no = idx.succ + if c_file? + analyze_c_line line, line_no + elsif rb_file? + analyze_rb_line line, line_no + else + raise ArgumentError.new "#{file} is a not supported file type" + end + @last_line = line.strip + end + end + + def c_file?; (name =~ /\.c$/); end + def rb_file?; (name =~ /\.rb$/); end + + RXP_C_VAR = /\s*([^\s]*?)\s*?/ + RXP_C_STR = /\s*?\"(.*?)\"\s*?/ + #RXP_C_ISO = /\s*\;\s*[\/\*]*\s*.*?([15\.]{0,3}[0-9\.]*)\s*[\\\\\*]*/ + RXP_C_ISO = /\s*;\s*[\/\*]*[\sa-zA-Z]*([\d\.]*)[\sa-zA-Z]*[\*\/]*/ + + def analyze_c_line line, line_no + case line.strip + when /^([a-zA-Z\_][a-zA-Z\_0-9]*?)\((.*?)\)\s*?$/ + # assuming c method definition + @c_funcs[$1] = {:line_no => line_no, :args => $2, :return => @last_line} + when /mrb_define_class\(.*?\,#{RXP_C_STR}\,#{RXP_C_VAR}\)#{RXP_C_ISO}/ + # assuming ruby class definition in c + class_name = $1.clone + iso = $3.clone + iso.strip! + @rb_class_c_def[class_name] = {:c_object => $2, :iso => iso} + assigns = line.split '=' + if assigns.size > 1 + assigns[0..-2].each do |v| + @assignments[v.strip] = class_name + end + end + when /mrb_define_module\(.*?\,#{RXP_C_STR}\)#{RXP_C_ISO}/ + # assuming ruby class definition in c + module_name = $1.clone + iso = $2.clone + iso.strip! + @rb_module_c_def[module_name] = {:iso => iso} + assigns = line.split '=' + if assigns.size > 1 + assigns[0..-2].each do |v| + @assignments[v.strip] = module_name + end + end + when /mrb_define_method\(.*?\,#{RXP_C_VAR}\,#{RXP_C_STR}\,#{RXP_C_VAR}\,#{RXP_C_VAR}\)#{RXP_C_ISO}/ + # assuming ruby method definition in c + name = $1.clone + name = resolve_obj(name) + iso = $5.clone + iso.strip! + @rb_method_c_def["#{name}_#{$2}"] = {:c_func => $3, :args => $4, :rb_class => name, :iso => iso} + when /mrb_define_class_method\(.*?\,#{RXP_C_VAR}\,#{RXP_C_STR}\,#{RXP_C_VAR}\,#{RXP_C_VAR}\)#{RXP_C_ISO}/ + # assuming ruby class method definition in c + class_name = $1.clone + class_name = resolve_obj(class_name) + 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 + + def analyze_rb_line line, line_no + + end + + def resolve_obj c_var + @assignments[c_var] + end +end diff --git a/doc/language/mrbdoc/lib/mrbdoc_docu.rb b/doc/language/mrbdoc/lib/mrbdoc_docu.rb new file mode 100644 index 000000000..116228927 --- /dev/null +++ b/doc/language/mrbdoc/lib/mrbdoc_docu.rb @@ -0,0 +1,113 @@ +class MRBDoc + def write_documentation dir, &block + block.call "MRBDOC\twrite to #{File.expand_path(dir)}" + + write(dir) do |progress| + block.call progress + end + end + + private + + def write dir + File.open(File.expand_path('Core.md', dir), 'w+') do |io| + print_core_classes(io) + print_core_modules(io) + end + end + + def get_core_list id + core_list = {} + each_file do |file_path, mrb_file| + mrb_file.send(id) do |name, cls_hsh| + core_list[name] = {:data => cls_hsh, :methods => {}, :class_methods => {}} + mrb_file.each_method name do |met_name, met_hsh| + core_list[name][:methods][met_name] = met_hsh + end + mrb_file.each_class_method name do |met_name, met_hsh| + core_list[name][:class_methods][met_name] = met_hsh + end + end + end + core_list + end + + def print_core_classes(io) + core_list = get_core_list :each_class + io.puts "# Core Classes\n\n" + core_list.sort.each do |name, hsh| + file = find_c_file_by_class(name) + file = file.split("#{@dir}/")[1] + iso = hsh[:data][:iso] + 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 +--- | --- | --- +#{iso} | #{mixins} | #{file} + +CLASS + print_class_methods(io, hsh) + print_methods(io, hsh) + end + end + + def print_core_modules(io) + core_list = get_core_list :each_module + io.puts "# Core Modules\n\n" + core_list.sort.each do |name, hsh| + file = find_c_file_by_module(name) + file = file.split("#{@dir}/")[1] + iso = hsh[:data][:iso] + iso = 'n/a' if iso.nil? or iso == '' + + io.puts <<CLASS +## #{name} + +ISO Code | Source File +--- | --- +#{iso} | #{file} + +CLASS + print_class_methods(io, hsh) + print_methods(io, hsh) + end + end + + def print_methods(io, hsh) + return unless hsh[:methods].size > 0 + io.puts "### Methods\n\n" + hsh[:methods].sort.each do |met_name, met_hsh| + print_method(io, met_name, met_hsh) + end + end + + def print_class_methods(io, hsh) + return unless hsh[:class_methods].size > 0 + io.puts "### Class Methods\n\n" + hsh[:class_methods].sort.each do |met_name, met_hsh| + print_method(io, met_name, met_hsh) + end + end + + def print_method(io, met_name, met_hsh) + 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 +--- | --- | --- +#{iso} | #{file} | #{met_hsh[:c_func]} | #{line_no} + +METHOD + end +end diff --git a/doc/language/mrbdoc/mrbdoc.rb b/doc/language/mrbdoc/mrbdoc.rb new file mode 100755 index 000000000..cd8ae3833 --- /dev/null +++ b/doc/language/mrbdoc/mrbdoc.rb @@ -0,0 +1,22 @@ +#!/usr/bin/env ruby + +$: << File.dirname(__FILE__) + '/lib' + +require 'mrbdoc_analyze' +require 'mrbdoc_docu' + +MRUBY_ROOT = ARGV[0] +DOC_ROOT = ARGV[1] + +raise ArgumentError.new 'mruby root missing!' if MRUBY_ROOT.nil? +raise ArgumentError.new 'doc root missing!' if DOC_ROOT.nil? + +mrbdoc = MRBDoc.new + +mrbdoc.analyze_code MRUBY_ROOT do |progress| + puts progress +end + +mrbdoc.write_documentation DOC_ROOT do |progress| + puts progress +end diff --git a/src/array.c b/src/array.c index e12b08245..eeeef23a5 100644 --- a/src/array.c +++ b/src/array.c @@ -1054,7 +1054,7 @@ mrb_init_array(mrb_state *mrb) { struct RClass *a; - a = mrb->array_class = mrb_define_class(mrb, "Array", mrb->object_class); + a = mrb->array_class = mrb_define_class(mrb, "Array", mrb->object_class); /* 15.2.12 */ MRB_SET_INSTANCE_TT(a, MRB_TT_ARRAY); mrb_define_class_method(mrb, a, "[]", mrb_ary_s_create, MRB_ARGS_ANY()); /* 15.2.12.4.1 */ diff --git a/src/class.c b/src/class.c index 30c33d692..33515de2c 100644 --- a/src/class.c +++ b/src/class.c @@ -1944,9 +1944,9 @@ mrb_init_class(mrb_state *mrb) /* name each classes */ name_class(mrb, bob, mrb_intern_lit(mrb, "BasicObject")); - name_class(mrb, obj, mrb_intern_lit(mrb, "Object")); - name_class(mrb, mod, mrb_intern_lit(mrb, "Module")); - name_class(mrb, cls, mrb_intern_lit(mrb, "Class")); + name_class(mrb, obj, mrb_intern_lit(mrb, "Object")); /* 15.2.1 */ + name_class(mrb, mod, mrb_intern_lit(mrb, "Module")); /* 15.2.2 */ + name_class(mrb, cls, mrb_intern_lit(mrb, "Class")); /* 15.2.3 */ MRB_SET_INSTANCE_TT(cls, MRB_TT_CLASS); mrb_define_method(mrb, bob, "initialize", mrb_bob_init, MRB_ARGS_NONE()); diff --git a/src/compar.c b/src/compar.c index 1614d2393..0186b942f 100644 --- a/src/compar.c +++ b/src/compar.c @@ -9,5 +9,5 @@ void mrb_init_comparable(mrb_state *mrb) { - mrb_define_module(mrb, "Comparable"); + mrb_define_module(mrb, "Comparable"); /* 15.3.3 */ } diff --git a/src/enum.c b/src/enum.c index 0a58cc5bb..3def9e860 100644 --- a/src/enum.c +++ b/src/enum.c @@ -9,6 +9,6 @@ void mrb_init_enumerable(mrb_state *mrb) { - mrb_define_module(mrb, "Enumerable"); + mrb_define_module(mrb, "Enumerable"); /* 15.3.2 */ } diff --git a/src/hash.c b/src/hash.c index 985d5259a..c39560d5c 100644 --- a/src/hash.c +++ b/src/hash.c @@ -826,7 +826,7 @@ mrb_init_hash(mrb_state *mrb) { struct RClass *h; - h = mrb->hash_class = mrb_define_class(mrb, "Hash", mrb->object_class); + h = mrb->hash_class = mrb_define_class(mrb, "Hash", mrb->object_class); /* 15.2.13 */ MRB_SET_INSTANCE_TT(h, MRB_TT_HASH); mrb_define_method(mrb, h, "[]", mrb_hash_aget, MRB_ARGS_REQ(1)); /* 15.2.13.4.2 */ diff --git a/src/kernel.c b/src/kernel.c index 3b1ad863f..d8a8e371f 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -1139,7 +1139,7 @@ mrb_init_kernel(mrb_state *mrb) { struct RClass *krn; - krn = mrb->kernel_module = mrb_define_module(mrb, "Kernel"); + krn = mrb->kernel_module = mrb_define_module(mrb, "Kernel"); /* 15.3.1 */ mrb_define_class_method(mrb, krn, "block_given?", mrb_f_block_given_p_m, MRB_ARGS_NONE()); /* 15.3.1.2.2 */ mrb_define_class_method(mrb, krn, "global_variables", mrb_f_global_variables, MRB_ARGS_NONE()); /* 15.3.1.2.4 */ mrb_define_class_method(mrb, krn, "iterator?", mrb_f_block_given_p_m, MRB_ARGS_NONE()); /* 15.3.1.2.5 */ diff --git a/src/numeric.c b/src/numeric.c index 6d2ea7a3c..ef9308aea 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -1315,7 +1315,7 @@ mrb_init_numeric(mrb_state *mrb) struct RClass *numeric, *integer, *fixnum, *fl; /* Numeric Class */ - numeric = mrb_define_class(mrb, "Numeric", mrb->object_class); + numeric = mrb_define_class(mrb, "Numeric", mrb->object_class); /* 15.2.7 */ mrb_define_method(mrb, numeric, "**", num_pow, MRB_ARGS_REQ(1)); mrb_define_method(mrb, numeric, "/", num_div, MRB_ARGS_REQ(1)); /* 15.2.8.3.4 */ @@ -1323,9 +1323,9 @@ mrb_init_numeric(mrb_state *mrb) mrb_define_method(mrb, numeric, "<=>", num_cmp, MRB_ARGS_REQ(1)); /* 15.2.9.3.6 */ /* Integer Class */ - integer = mrb_define_class(mrb, "Integer", numeric); + integer = mrb_define_class(mrb, "Integer", numeric); /* 15.2.8 */ mrb_undef_class_method(mrb, integer, "new"); - mrb_define_method(mrb, integer, "to_i", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.24 */ + mrb_define_method(mrb, integer, "to_i", int_to_i, MRB_ARGS_NONE()); /* 15.2.8.3.24 */ mrb_define_method(mrb, integer, "to_int", int_to_i, MRB_ARGS_NONE()); fixnum = mrb->fixnum_class = mrb_define_class(mrb, "Fixnum", integer); @@ -1348,7 +1348,7 @@ mrb_init_numeric(mrb_state *mrb) mrb_define_method(mrb, fixnum, "divmod", fix_divmod, MRB_ARGS_REQ(1)); /* 15.2.8.3.30 (x) */ /* Float Class */ - fl = mrb->float_class = mrb_define_class(mrb, "Float", numeric); + fl = mrb->float_class = mrb_define_class(mrb, "Float", numeric); /* 15.2.9 */ mrb_undef_class_method(mrb, fl, "new"); mrb_define_method(mrb, fl, "+", flo_plus, MRB_ARGS_REQ(1)); /* 15.2.9.3.1 */ mrb_define_method(mrb, fl, "-", flo_minus, MRB_ARGS_REQ(1)); /* 15.2.9.3.2 */ diff --git a/src/proc.c b/src/proc.c index 0dfc3f818..fa4c28fc8 100644 --- a/src/proc.c +++ b/src/proc.c @@ -201,7 +201,7 @@ mrb_init_proc(mrb_state *mrb) call_irep->iseq = call_iseq; call_irep->ilen = 1; - mrb->proc_class = mrb_define_class(mrb, "Proc", mrb->object_class); + mrb->proc_class = mrb_define_class(mrb, "Proc", mrb->object_class); /* 15.2.17 */ MRB_SET_INSTANCE_TT(mrb->proc_class, MRB_TT_PROC); mrb_define_method(mrb, mrb->proc_class, "initialize", mrb_proc_initialize, MRB_ARGS_NONE()); diff --git a/src/range.c b/src/range.c index 171387a8d..6b1f7faa2 100644 --- a/src/range.c +++ b/src/range.c @@ -400,7 +400,7 @@ mrb_init_range(mrb_state *mrb) { struct RClass *r; - r = mrb_define_class(mrb, "Range", mrb->object_class); + r = mrb_define_class(mrb, "Range", mrb->object_class); /* 15.2.14 */ MRB_SET_INSTANCE_TT(r, MRB_TT_RANGE); mrb_define_method(mrb, r, "begin", mrb_range_beg, MRB_ARGS_NONE()); /* 15.2.14.4.3 */ diff --git a/src/string.c b/src/string.c index 51269644c..ebc579ec5 100644 --- a/src/string.c +++ b/src/string.c @@ -2586,7 +2586,7 @@ mrb_init_string(mrb_state *mrb) { struct RClass *s; - s = mrb->string_class = mrb_define_class(mrb, "String", mrb->object_class); + s = mrb->string_class = mrb_define_class(mrb, "String", mrb->object_class); /* 15.2.10 */ MRB_SET_INSTANCE_TT(s, MRB_TT_STRING); mrb_define_method(mrb, s, "bytesize", mrb_str_bytesize, MRB_ARGS_NONE()); diff --git a/src/symbol.c b/src/symbol.c index 170dc2cf2..fd0b116bd 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -473,7 +473,7 @@ mrb_init_symbol(mrb_state *mrb) { struct RClass *sym; - sym = mrb->symbol_class = mrb_define_class(mrb, "Symbol", mrb->object_class); + sym = mrb->symbol_class = mrb_define_class(mrb, "Symbol", mrb->object_class); /* 15.2.11 */ mrb_define_method(mrb, sym, "===", sym_equal, MRB_ARGS_REQ(1)); /* 15.2.11.3.1 */ mrb_define_method(mrb, sym, "id2name", mrb_sym_to_s, MRB_ARGS_NONE()); /* 15.2.11.3.2 */ |
