yard-mruby 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -20
- data/exe/mrbdoc +5 -0
- data/lib/yard/mruby.rb +6 -1
- data/lib/yard/mruby/cli.rb +1 -0
- data/lib/yard/mruby/cli/yardoc.rb +14 -0
- data/lib/yard/mruby/code_objects.rb +2 -0
- data/lib/yard/mruby/code_objects/define_object.rb +1 -1
- data/lib/yard/mruby/code_objects/function_object.rb +66 -1
- data/lib/yard/mruby/code_objects/header_base_object.rb +15 -0
- data/lib/yard/mruby/code_objects/header_object.rb +19 -0
- data/lib/yard/mruby/code_objects/headers_root.rb +14 -0
- data/lib/yard/mruby/handlers.rb +1 -0
- data/lib/yard/mruby/handlers/c.rb +4 -0
- data/lib/yard/mruby/handlers/c/header.rb +4 -0
- data/lib/yard/mruby/handlers/c/header/base.rb +30 -0
- data/lib/yard/mruby/handlers/c/header/define_handler.rb +23 -0
- data/lib/yard/mruby/handlers/c/header/function_handler.rb +33 -0
- data/lib/yard/mruby/handlers/c/header/header_decl_handler.rb +20 -0
- data/lib/yard/mruby/handlers/c/source.rb +7 -0
- data/lib/yard/mruby/handlers/c/source/base.rb +56 -0
- data/lib/yard/{handlers/c/mruby_class_handler.rb → mruby/handlers/c/source/class_handler.rb} +2 -2
- data/lib/yard/mruby/handlers/c/source/init_handler.rb +16 -0
- data/lib/yard/{handlers/c/mruby_method_handler.rb → mruby/handlers/c/source/method_handler.rb} +2 -2
- data/lib/yard/{handlers/c/mruby_module_handler.rb → mruby/handlers/c/source/module_handler.rb} +2 -2
- data/lib/yard/{handlers/c/mruby_symbol_handler.rb → mruby/handlers/c/source/symbol_handler.rb} +3 -2
- data/lib/yard/mruby/parser.rb +1 -0
- data/lib/yard/mruby/parser/c.rb +4 -0
- data/lib/yard/mruby/parser/c/directive_statement.rb +6 -0
- data/lib/yard/mruby/parser/c/header_parser.rb +49 -0
- data/lib/yard/mruby/parser/c/parser.rb +10 -0
- data/lib/yard/mruby/parser/c/source_parser.rb +9 -0
- data/lib/yard/mruby/templates.rb +9 -0
- data/lib/yard/mruby/templates/helpers.rb +1 -0
- data/lib/yard/mruby/templates/helpers/html_helper.rb +32 -0
- data/lib/yard/mruby/version.rb +1 -1
- data/sample/.yardopts +1 -0
- data/{lib/yard/handlers/header/define_handler.rb → templates/default/fulldoc/html/css/mruby.css} +0 -0
- data/templates/default/fulldoc/html/full_list_functions.erb +10 -0
- data/templates/default/fulldoc/html/full_list_headers.erb +10 -0
- data/{lib/yard/handlers/header/function_handler.rb → templates/default/fulldoc/html/js/mruby.js} +0 -0
- data/templates/default/fulldoc/html/setup.rb +62 -0
- data/templates/default/function_details/html/function_signature.erb +10 -0
- data/templates/default/function_details/html/header.erb +3 -0
- data/templates/default/function_details/html/source.erb +10 -0
- data/templates/default/function_details/setup.rb +12 -0
- data/templates/default/header/html/define_summary.erb +11 -0
- data/templates/default/header/html/function_details_list.erb +7 -0
- data/templates/default/header/html/function_summary.erb +12 -0
- data/templates/default/header/html/functions.erb +1 -0
- data/templates/default/header/html/header.erb +1 -0
- data/templates/default/header/html/includes.erb +1 -0
- data/templates/default/header/html/item_summary.erb +19 -0
- data/templates/default/header/html/pre_docstring.erb +1 -0
- data/templates/default/header/html/setup.rb +24 -0
- data/templates/default/headersroot/html/headers_list.erb +6 -0
- data/templates/default/headersroot/html/setup.rb +10 -0
- data/templates/default/layout/html/footer.erb +5 -0
- data/templates/default/layout/html/setup.rb +52 -0
- data/templates/default/tags/setup.rb +7 -0
- metadata +56 -16
- data/lib/yard/handlers.rb +0 -2
- data/lib/yard/handlers/c.rb +0 -6
- data/lib/yard/handlers/c/mruby_base.rb +0 -47
- data/lib/yard/handlers/header.rb +0 -1
- data/lib/yard/handlers/header/base.rb +0 -11
- data/lib/yard/handlers/header/header_handler.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 08d0469722f4af2b09e0684dbb47f03e2c060734
|
4
|
+
data.tar.gz: ac36637449d471f3cdd81fe509e560c475839ff3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 45d9a46db9354c8dafe08badec6fa347daeb8d9a4a65e3a3003e6d9169e742b30ab03e2b2b9fe7b0da3aa4a23c68e389960e4b6f8d9712de0a1c1dc4d2dfb9f2
|
7
|
+
data.tar.gz: 39c79479b9381ca33988d6c91251e6fc7a1cdca11ea0fed07e3719b6bc29ee1358b5313668aea8796d7cb567010f9325bf9c86279343b21f191f29684e70fd42
|
data/README.md
CHANGED
@@ -1,38 +1,28 @@
|
|
1
|
-
#
|
1
|
+
# yard-mruby
|
2
2
|
|
3
|
-
|
3
|
+
[![Gem](https://img.shields.io/gem/v/yard-mruby.svg)](https://rubygems.org/gems/yard-mruby)
|
4
|
+
[![Travis](https://img.shields.io/travis/sagmor/yard-mruby.svg)](https://travis-ci.org/sagmor/yard-mruby)
|
4
5
|
|
5
|
-
|
6
|
+
This is a plugin that allows YARD to parse and generate documentation for MRuby sources as well as documenting it's C APIs.
|
6
7
|
|
7
|
-
|
8
|
+
It still has it's [rough edges and missing features](https://github.com/sagmor/yard-mruby/issues) but you can see a [sample from it's current state when executed on MRuby's core here](https://sagmor.com/mruby/)
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
```ruby
|
12
|
-
gem 'yard-mruby'
|
13
|
-
```
|
14
|
-
|
15
|
-
And then execute:
|
16
|
-
|
17
|
-
$ bundle
|
10
|
+
## Usage
|
18
11
|
|
19
|
-
|
12
|
+
Install with rubygems
|
20
13
|
|
21
14
|
$ gem install yard-mruby
|
22
15
|
|
23
|
-
|
24
|
-
|
25
|
-
TODO: Write usage instructions here
|
16
|
+
And execute `mrbdoc` to generate the docs
|
26
17
|
|
27
18
|
## Development
|
28
19
|
|
29
20
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
30
|
-
|
31
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
21
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
32
22
|
|
33
23
|
## Contributing
|
34
24
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
25
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/sagmor/yard-mruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
36
26
|
|
37
27
|
|
38
28
|
## License
|
data/exe/mrbdoc
ADDED
data/lib/yard/mruby.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'cli/yardoc'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module YARD::MRuby::CLI
|
2
|
+
module Yardoc
|
3
|
+
|
4
|
+
# Redefines default files for YARD::CLI::Yardoc
|
5
|
+
def parse_arguments(*args)
|
6
|
+
super(*args)
|
7
|
+
self.files = %w{mrblib/**/*.rb src/**/*.c include/**/*.h} if self.files.empty?
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
# Load Above modifications into YARD::CLI::Yardoc
|
12
|
+
YARD::CLI::Yardoc.include Yardoc
|
13
|
+
end
|
14
|
+
|
@@ -1,7 +1,72 @@
|
|
1
1
|
module YARD::MRuby::CodeObjects
|
2
2
|
|
3
3
|
# A FunctionObject represents a MRuby C API function declaration inside a header inside an include directory
|
4
|
-
class FunctionObject <
|
4
|
+
class FunctionObject < HeaderBaseObject
|
5
|
+
ParameterType = Struct.new(:type,:name)
|
6
|
+
|
7
|
+
# Returns the list of parameters parsed out of the method signature
|
8
|
+
# with their default values.
|
9
|
+
#
|
10
|
+
# @return [Array<Array(String, String)>] a list of parameter names followed
|
11
|
+
# by their default values (or nil)
|
12
|
+
attr_accessor :parameters
|
13
|
+
|
14
|
+
def initialize(header, name, &block)
|
15
|
+
super
|
16
|
+
end
|
17
|
+
|
18
|
+
def attr_info
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
|
22
|
+
def scope
|
23
|
+
''
|
24
|
+
end
|
25
|
+
|
26
|
+
def return_type
|
27
|
+
@return_type
|
28
|
+
end
|
29
|
+
|
30
|
+
def return_type=(type)
|
31
|
+
@return_type = (type == 'void' ? nil : type)
|
32
|
+
end
|
33
|
+
|
34
|
+
# Returns the list of parameters parsed out of the method signature
|
35
|
+
# with their default values.
|
36
|
+
#
|
37
|
+
# @return [Array<Array(String, String)>] a list of parameter names followed
|
38
|
+
# by their default values (or nil)
|
39
|
+
def parameters
|
40
|
+
parameter_types.map{|t| [(t.type == '...' ? '...' : t.name), nil] }
|
41
|
+
end
|
42
|
+
|
43
|
+
def parameter_types
|
44
|
+
@parameter_types || []
|
45
|
+
end
|
46
|
+
|
47
|
+
def parse_parameter_types(parameters)
|
48
|
+
@parameter_types = []
|
49
|
+
return if parameters.match /^\s*void\s*$/
|
50
|
+
|
51
|
+
parameters.split(',').each do |parameter|
|
52
|
+
parameter.scan(/((?:const\s+)?(?:struct\s+)?(?:\w+|\.\.\.)(?:\s*\*)?)\s*(\w+)?/) do |type,name|
|
53
|
+
@parameter_types << ParameterType.new(type,name)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
# Returns all alias names of the object
|
61
|
+
# @return [Array<Symbol>] the alias names
|
62
|
+
def aliases
|
63
|
+
list = []
|
64
|
+
return list unless namespace.is_a?(HeaderObject)
|
65
|
+
namespace.aliases.each do |o, aname|
|
66
|
+
list << o if aname == name && o.scope == scope
|
67
|
+
end
|
68
|
+
list
|
69
|
+
end
|
5
70
|
end
|
6
71
|
end
|
7
72
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module YARD::MRuby::CodeObjects
|
2
|
+
|
3
|
+
# A FunctionObject represents a MRuby C API function declaration inside a header inside an include directory
|
4
|
+
class HeaderBaseObject < YARD::CodeObjects::Base
|
5
|
+
|
6
|
+
def header
|
7
|
+
self.namespace
|
8
|
+
end
|
9
|
+
|
10
|
+
# Header objects's shouln't be namespaced
|
11
|
+
def path
|
12
|
+
self.name.to_s
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -3,5 +3,24 @@ module YARD::MRuby::CodeObjects
|
|
3
3
|
# A HeaderObject represents a MRuby header inside an include directory
|
4
4
|
# It groups C Functions and define macros.
|
5
5
|
class HeaderObject < YARD::CodeObjects::NamespaceObject
|
6
|
+
def functions
|
7
|
+
children.find_all {|d| d.is_a?(FunctionObject) }
|
8
|
+
end
|
9
|
+
|
10
|
+
def defines
|
11
|
+
children.find_all {|d| d.is_a?(DefineObject) }
|
12
|
+
end
|
13
|
+
|
14
|
+
def path
|
15
|
+
self.name
|
16
|
+
end
|
17
|
+
|
18
|
+
def title
|
19
|
+
super.to_s
|
20
|
+
end
|
21
|
+
|
22
|
+
def inheritance_tree(*args)
|
23
|
+
return [self]
|
24
|
+
end
|
6
25
|
end
|
7
26
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'handlers/c'
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module YARD::MRuby::Handlers
|
2
|
+
module C
|
3
|
+
module Header
|
4
|
+
class Base < YARD::Handlers::C::Base
|
5
|
+
include YARD::MRuby::CodeObjects
|
6
|
+
|
7
|
+
def header(path)
|
8
|
+
# Remove include prefix
|
9
|
+
path = path.gsub(/^.*include\//,'')
|
10
|
+
|
11
|
+
headers[path] ||= begin
|
12
|
+
header = HeaderObject.new(HEADERS_ROOT, path)
|
13
|
+
register header
|
14
|
+
header
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
def headers
|
21
|
+
globals.mruby_headers ||= {}
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
YARD::Handlers::Processor.register_handler_namespace :header, Header
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module YARD::MRuby::Handlers::C::Header
|
2
|
+
class DefineHandler < Base
|
3
|
+
MATCH = /
|
4
|
+
\#\s*define\s*(\w+)
|
5
|
+
/mx
|
6
|
+
|
7
|
+
handles MATCH
|
8
|
+
statement_class YARD::MRuby::Parser::C::DirectiveStatement
|
9
|
+
|
10
|
+
process do
|
11
|
+
header = self.header(statement.file)
|
12
|
+
|
13
|
+
statement.declaration.scan(MATCH) do |match|
|
14
|
+
register DefineObject.new(header, match.first) do |obj|
|
15
|
+
if statement.comments
|
16
|
+
register_docstring(obj, statement.comments.source, statement)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module YARD::MRuby::Handlers::C::Header
|
2
|
+
class FunctionHandler < Base
|
3
|
+
MATCH = /
|
4
|
+
MRB_(API|INLINE)\s+
|
5
|
+
((struct\s+)?\w+(\s*\*)?)\s*
|
6
|
+
((\w+\s+)+)?(\w+)\s*
|
7
|
+
\(([\w\s\*,\.]*)\)
|
8
|
+
/mx
|
9
|
+
|
10
|
+
handles MATCH
|
11
|
+
statement_class ToplevelStatement
|
12
|
+
|
13
|
+
process do
|
14
|
+
handle_function(statement)
|
15
|
+
end
|
16
|
+
|
17
|
+
def handle_function(statement)
|
18
|
+
header = self.header(statement.file)
|
19
|
+
|
20
|
+
statement.source.scan(MATCH) do |type, retype, _,_,_,_, name, parameters|
|
21
|
+
register FunctionObject.new(header, name) do |obj|
|
22
|
+
if statement.comments
|
23
|
+
register_docstring(obj, statement.comments.source, statement)
|
24
|
+
end
|
25
|
+
|
26
|
+
obj.return_type = retype
|
27
|
+
obj.parse_parameter_types(parameters)
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module YARD::MRuby::Handlers::C::Header
|
2
|
+
class HeaderDeclHandler < Base
|
3
|
+
MATCH = /
|
4
|
+
MRB_BEGIN_DECL
|
5
|
+
/mx
|
6
|
+
|
7
|
+
handles MATCH
|
8
|
+
statement_class ToplevelStatement
|
9
|
+
|
10
|
+
process do
|
11
|
+
header = self.header(statement.file)
|
12
|
+
|
13
|
+
if statement.comments
|
14
|
+
register_docstring(header, statement.comments.source, statement)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module YARD::MRuby::Handlers
|
2
|
+
module C
|
3
|
+
module Source
|
4
|
+
class Base < YARD::Handlers::C::Base
|
5
|
+
|
6
|
+
DEFAULT_NAMESPACES = {
|
7
|
+
# 'mrb->top_self' => '',
|
8
|
+
'object_class' => 'Object',
|
9
|
+
'class_class' => 'Class',
|
10
|
+
'module_class' => 'Module',
|
11
|
+
'proc_class' => 'Proc',
|
12
|
+
'string_class' => 'String',
|
13
|
+
'array_class' => 'Array',
|
14
|
+
'hash_class' => 'Hash',
|
15
|
+
'float_class' => 'Float',
|
16
|
+
'fixnum_class' => 'Fixnum',
|
17
|
+
'true_class' => 'TrueClass',
|
18
|
+
'false_class' => 'FalseClass',
|
19
|
+
'nil_class' => 'NilClass',
|
20
|
+
'symbol_class' => 'Symbol',
|
21
|
+
'kernel_module' => 'Kernel',
|
22
|
+
'eException_class' => 'Exception',
|
23
|
+
'eStandardError_class' => 'StandardError'
|
24
|
+
}
|
25
|
+
|
26
|
+
def namespace_for_variable(var)
|
27
|
+
DEFAULT_NAMESPACES[ var[/^\w+->(\w+)$/, 1] ] || super
|
28
|
+
end
|
29
|
+
|
30
|
+
def handle_class(var_name, class_name, parent, stmt, in_module = nil)
|
31
|
+
object = super(var_name, class_name, parent, in_module)
|
32
|
+
|
33
|
+
if stmt.comments
|
34
|
+
register_docstring(object, stmt.comments.source, stmt)
|
35
|
+
end
|
36
|
+
|
37
|
+
object
|
38
|
+
end
|
39
|
+
|
40
|
+
def handle_module(var_name, module_name, stmt, in_module = nil)
|
41
|
+
object = super(var_name, module_name, in_module)
|
42
|
+
|
43
|
+
if stmt.comments
|
44
|
+
register_docstring(object, stmt.comments.source, stmt)
|
45
|
+
end
|
46
|
+
|
47
|
+
object
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
YARD::Handlers::Processor.register_handler_namespace :source, Source
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module YARD::MRuby::Handlers::C::Source
|
2
|
+
class InitHandler < Base
|
3
|
+
MATCH1 = /mrb_\w+_gem_init\s*\(/mx
|
4
|
+
MATCH2 = /mrb_init_/mx
|
5
|
+
|
6
|
+
handles MATCH1
|
7
|
+
handles MATCH2
|
8
|
+
statement_class ToplevelStatement
|
9
|
+
|
10
|
+
process do
|
11
|
+
parse_block
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
data/lib/yard/{handlers/c/mruby_symbol_handler.rb → mruby/handlers/c/source/symbol_handler.rb}
RENAMED
@@ -1,6 +1,7 @@
|
|
1
|
-
module YARD::Handlers::C
|
1
|
+
module YARD::MRuby::Handlers::C::Source
|
2
2
|
# Keeps track of function bodies for symbol lookup during MRuby method declarations
|
3
|
-
class
|
3
|
+
class SymbolHandler < Base
|
4
|
+
|
4
5
|
MATCH = /
|
5
6
|
mrb_value\s*(\w+)\s*\(\s*mrb_state\s*\*\s*\w+,\s*mrb_value\s*\w+\s*\)
|
6
7
|
/mx
|
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'parser/c'
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module YARD::MRuby::Parser::C
|
2
|
+
class HeaderParser < Parser
|
3
|
+
|
4
|
+
# Consumes a directive and generates a DirectiveStatement
|
5
|
+
def consume_directive
|
6
|
+
super if @in_body_statements
|
7
|
+
|
8
|
+
@newline = false
|
9
|
+
start = @index
|
10
|
+
line = @line
|
11
|
+
statement = DirectiveStatement.new(nil, @file, line)
|
12
|
+
@statements << statement
|
13
|
+
attach_comment(statement)
|
14
|
+
|
15
|
+
multiline = false
|
16
|
+
advance_loop do
|
17
|
+
chr = char
|
18
|
+
case chr
|
19
|
+
when '\\'; multiline=true; advance
|
20
|
+
when /\s/; consume_whitespace
|
21
|
+
else advance
|
22
|
+
end
|
23
|
+
|
24
|
+
if @newline
|
25
|
+
if multiline
|
26
|
+
multiline = false
|
27
|
+
else
|
28
|
+
break
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
decl = @content[start...@index]
|
34
|
+
|
35
|
+
statement.declaration = decl
|
36
|
+
end
|
37
|
+
|
38
|
+
def consume_body_statements
|
39
|
+
@in_body_statements = true
|
40
|
+
result = super
|
41
|
+
@in_body_statements = false
|
42
|
+
result
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
#
|
47
|
+
# Register all header files (.h) to be processed with the above HeaderParser
|
48
|
+
YARD::Parser::SourceParser.register_parser_type :header, HeaderParser, 'h'
|
49
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require_relative 'templates/helpers'
|
2
|
+
|
3
|
+
YARD::MRuby::TEMPLATES_PATH = File.expand_path('../../../../templates', __FILE__)
|
4
|
+
|
5
|
+
# This registered template works for yardoc
|
6
|
+
YARD::Templates::Engine.register_template_path YARD::MRuby::TEMPLATES_PATH
|
7
|
+
|
8
|
+
# The following static paths and templates are for yard server
|
9
|
+
# YARD::Server.register_static_path File.join(YARD::MRuby::TEMPLATES_PATH,'default/fulldoc/html')
|
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'helpers/html_helper'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module YARD::MRuby::Templates
|
2
|
+
module Helpers
|
3
|
+
# Helper methods for text template formats.
|
4
|
+
module HTMLHelper
|
5
|
+
|
6
|
+
def fsignature(func, link = true, show_extras = true)
|
7
|
+
name = func.name
|
8
|
+
prefix = func.return_type || 'void'
|
9
|
+
params = if func.parameter_types.empty?
|
10
|
+
'void'
|
11
|
+
else
|
12
|
+
func.parameter_types.map do |t|
|
13
|
+
if show_extras
|
14
|
+
[t.type, t.name].join(' ')
|
15
|
+
else
|
16
|
+
t.type
|
17
|
+
end
|
18
|
+
end.join(', ')
|
19
|
+
end
|
20
|
+
title = "%s <strong>%s</strong>(%s)" % [h(prefix), h(name), h(params)]
|
21
|
+
|
22
|
+
if link
|
23
|
+
url = url_for(func)
|
24
|
+
link_url(url, title, :title => name)
|
25
|
+
else
|
26
|
+
title
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/yard/mruby/version.rb
CHANGED
data/sample/.yardopts
CHANGED
data/{lib/yard/handlers/header/define_handler.rb → templates/default/fulldoc/html/css/mruby.css}
RENAMED
File without changes
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<% even_odd = 'odd' %>
|
2
|
+
<% @items.each do |item| %>
|
3
|
+
<li class="<%= even_odd %> <%= item.has_tag?(:deprecated) ? 'deprecated' : '' %>">
|
4
|
+
<div class="item">
|
5
|
+
<%= linkify item, h(item.name(true)) %>
|
6
|
+
<small><%= item.header.title %></small>
|
7
|
+
</div>
|
8
|
+
</li>
|
9
|
+
<% even_odd = (even_odd == 'even' ? 'odd' : 'even') %>
|
10
|
+
<% end %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<li id="object_" class="odd"><div class="item" style="padding-left:30px"><%= link_object(YARD::MRuby::CodeObjects::HEADERS_ROOT, "All Headers", nil, false) %></div></li>
|
2
|
+
<% even_odd = 'odd' %>
|
3
|
+
<% @items.each do |item| %>
|
4
|
+
<li class="<%= even_odd %>">
|
5
|
+
<div class="item">
|
6
|
+
<%= linkify item, h(item.name(true)) %>
|
7
|
+
</div>
|
8
|
+
</li>
|
9
|
+
<% even_odd = (even_odd == 'even' ? 'odd' : 'even') %>
|
10
|
+
<% end %>
|
data/{lib/yard/handlers/header/function_handler.rb → templates/default/fulldoc/html/js/mruby.js}
RENAMED
File without changes
|
@@ -0,0 +1,62 @@
|
|
1
|
+
def init
|
2
|
+
super
|
3
|
+
|
4
|
+
YARD::MRuby::CodeObjects::HEADERS_ROOT.tap do |root|
|
5
|
+
|
6
|
+
# Generates the requirements splash page with the 'include' template
|
7
|
+
serialize root
|
8
|
+
|
9
|
+
root.headers.each do |header|
|
10
|
+
serialize header
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
def generate_header_list
|
17
|
+
headers = Registry.all(:header)
|
18
|
+
headers_ordered_by_name = headers.sort {|x,y| x.name.to_s <=> y.name.to_s }
|
19
|
+
generate_full_list headers_ordered_by_name, :headers
|
20
|
+
end
|
21
|
+
|
22
|
+
def generate_function_list
|
23
|
+
functions = Registry.all(:function)
|
24
|
+
functions_ordered_by_name = functions.sort {|x,y| x.name.to_s <=> y.name.to_s }
|
25
|
+
generate_full_list functions_ordered_by_name, :functions
|
26
|
+
end
|
27
|
+
|
28
|
+
# Helpler method to generate a full_list page of the specified objects with the
|
29
|
+
# specified type.
|
30
|
+
def generate_full_list(objects,type,options = {})
|
31
|
+
defaults = { :list_title => "#{type.to_s.capitalize} List",
|
32
|
+
:css_class => "class",
|
33
|
+
:list_filename => "#{type.to_s.gsub(/s$/,'')}_list.html" }
|
34
|
+
|
35
|
+
options = defaults.merge(options)
|
36
|
+
|
37
|
+
@items = objects
|
38
|
+
@list_type = type
|
39
|
+
@list_title = options[:list_title]
|
40
|
+
@list_class = options[:css_class]
|
41
|
+
asset options[:list_filename], erb(:full_list)
|
42
|
+
end
|
43
|
+
|
44
|
+
#
|
45
|
+
# @note This method overrides YARD's default template class_list method.
|
46
|
+
#
|
47
|
+
# The existing YARD 'Class List' search field contains all the YARD namespace objects.
|
48
|
+
# We, however, do not want the Include Namespace YARD Object (which holds the headers)
|
49
|
+
# as it is a meta-object.
|
50
|
+
#
|
51
|
+
# This method removes the namespace from the root node, generates the class list,
|
52
|
+
# and then adds it back into the root node.
|
53
|
+
#
|
54
|
+
def class_list(root = Registry.root)
|
55
|
+
return super unless root == Registry.root
|
56
|
+
|
57
|
+
include_namespace = YARD::MRuby::CodeObjects::HEADERS_ROOT
|
58
|
+
root.instance_eval { children.delete include_namespace }
|
59
|
+
out = super(root)
|
60
|
+
root.instance_eval { children.push include_namespace }
|
61
|
+
out
|
62
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<h3 class="signature <%= 'first' if @index == 0 %>" id="<%= anchor_for(object) %>">
|
2
|
+
<%= fsignature(object, false) %>
|
3
|
+
|
4
|
+
<% if object.aliases.size > 0 %>
|
5
|
+
<span class="aliases">Also known as:
|
6
|
+
<span class="names"><%= object.aliases.map {|o|
|
7
|
+
"<span id='#{anchor_for(o)}'>" + h(o.name.to_s) + "</span>" }.join(", ") %></span>
|
8
|
+
</span>
|
9
|
+
<% end %>
|
10
|
+
</h3>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<table class="source_code">
|
2
|
+
<tr>
|
3
|
+
<td>
|
4
|
+
<pre class="lines"><%= "\n\n\n" %><%= h format_lines(object) %></pre>
|
5
|
+
</td>
|
6
|
+
<td>
|
7
|
+
<pre class="code"><span class="info file"># File '<%= h object.file %>'<% if object.line %>, line <%= object.line %><% end %></span><%= "\n\n" %><%= html_syntax_highlight object.source %></pre>
|
8
|
+
</td>
|
9
|
+
</tr>
|
10
|
+
</table>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
include YARD::MRuby::Templates::Helpers::HTMLHelper
|
2
|
+
|
3
|
+
def init
|
4
|
+
sections :header, [:function_signature, T('docstring'), :source]
|
5
|
+
end
|
6
|
+
|
7
|
+
def source
|
8
|
+
return if owner != object.namespace
|
9
|
+
return if Tags::OverloadTag === object
|
10
|
+
return if object.source.nil?
|
11
|
+
erb(:source)
|
12
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<% if define_listing.size > 0 %>
|
2
|
+
<h2>Define Summary</h2>
|
3
|
+
<dl class="constants">
|
4
|
+
<% define_listing.each do |define| %>
|
5
|
+
<dt id="<%= anchor_for(define) %>" class="<%= define.has_tag?(:deprecated) ? 'deprecated' : '' %>"><small>#define</small> <%= define.name %>
|
6
|
+
<%= yieldall :object => define %>
|
7
|
+
</dt>
|
8
|
+
<dd><pre class="code"><%#= format_constant define.value %></pre></dd>
|
9
|
+
<% end %>
|
10
|
+
</dl>
|
11
|
+
<% end %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<% if function_listing.size > 0 %>
|
2
|
+
<h2>
|
3
|
+
Function Summary
|
4
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
5
|
+
</h2>
|
6
|
+
|
7
|
+
<ul class="summary">
|
8
|
+
<% function_listing.each do |func| %>
|
9
|
+
<%= yieldall :item => func %>
|
10
|
+
<% end %>
|
11
|
+
</ul>
|
12
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
Header functions!
|
@@ -0,0 +1 @@
|
|
1
|
+
<h1><%= format_object_title(object) %></h1>
|
@@ -0,0 +1 @@
|
|
1
|
+
Included heaers
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<li class="<%= @item.visibility %> <%= @item.has_tag?(:deprecated) ? 'deprecated' : '' %>">
|
2
|
+
<span class="summary_signature">
|
3
|
+
<%= fsignature(@item, true, false) %>
|
4
|
+
|
5
|
+
<% if @item.aliases.size > 0 %>
|
6
|
+
(also: <%= @item.aliases.map {|o| h(o.name(true)) }.join(", ") %>)
|
7
|
+
<% end %>
|
8
|
+
</span>
|
9
|
+
<% if @item.visibility != :public %><span class="note title <%= @item.visibility %>"><%= @item.visibility %></span><% end %>
|
10
|
+
<% if @item.has_tag?(:abstract) %><span class="abstract note title">abstract</span><% end %>
|
11
|
+
<% if @item.has_tag?(:deprecated) %><span class="deprecated note title">deprecated</span><% end %>
|
12
|
+
<% if @item.has_tag?(:api) && @item.tag(:api).text == 'private' %><span class="private note title">private</span><% end %>
|
13
|
+
|
14
|
+
<% if @item.has_tag?(:deprecated) %>
|
15
|
+
<span class="summary_desc"><strong>Deprecated.</strong> <%= htmlify_line @item.tag(:deprecated).text %></span>
|
16
|
+
<% else %>
|
17
|
+
<span class="summary_desc"><%= htmlify_line docstring_summary(@item) %></span>
|
18
|
+
<% end %>
|
19
|
+
</li>
|
@@ -0,0 +1 @@
|
|
1
|
+
<h2>Overview</h2>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
include T('default/module')
|
2
|
+
include YARD::MRuby::Templates::Helpers::HTMLHelper
|
3
|
+
|
4
|
+
def init
|
5
|
+
sections :header, :pre_docstring, T('docstring'), :includes,
|
6
|
+
:function_summary, [:item_summary],
|
7
|
+
:define_summary, [T('docstring')],
|
8
|
+
:function_details_list, [T('function_details')]
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
def function_listing
|
13
|
+
return @funcs if @funcs
|
14
|
+
|
15
|
+
@funcs = object.functions
|
16
|
+
@funcs
|
17
|
+
end
|
18
|
+
|
19
|
+
def define_listing
|
20
|
+
return @defines if @defines
|
21
|
+
|
22
|
+
@defines = object.defines
|
23
|
+
@defines
|
24
|
+
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<div id="footer">
|
2
|
+
Generated on <%= Time.now.strftime("%c") %> by
|
3
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
4
|
+
<%= YARD::VERSION %> in <a href="https://github.com/sagmor/yard-mruby">mruby mode</a> <%= YARD::MRuby::VERSION %> (ruby-<%= RUBY_VERSION %>).
|
5
|
+
</div>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
def init
|
2
|
+
super
|
3
|
+
end
|
4
|
+
|
5
|
+
#
|
6
|
+
# Append yard-cucumber stylesheet to yard core stylesheets
|
7
|
+
#
|
8
|
+
def stylesheets
|
9
|
+
super + %w(css/mruby.css)
|
10
|
+
end
|
11
|
+
|
12
|
+
#
|
13
|
+
# Append yard-cucumber javascript to yard core javascripts
|
14
|
+
#
|
15
|
+
def javascripts
|
16
|
+
super + %w(js/mruby.js)
|
17
|
+
end
|
18
|
+
|
19
|
+
#
|
20
|
+
# Append yard-cucumber specific menus 'features' and 'tags'
|
21
|
+
#
|
22
|
+
# 'features' and 'tags' are enabled by default.
|
23
|
+
#
|
24
|
+
# 'step definitions' and 'steps' may be enabled by setting up a value in
|
25
|
+
# yard configuration file '~/.yard/config'
|
26
|
+
#
|
27
|
+
# @example `~/.yard.config`
|
28
|
+
#
|
29
|
+
# yard-cucumber:
|
30
|
+
# menus: [ 'features', 'directories', 'tags', 'step definitions', 'steps' ]
|
31
|
+
#
|
32
|
+
def menu_lists
|
33
|
+
menus = super
|
34
|
+
last = menus.pop
|
35
|
+
|
36
|
+
menus.push({
|
37
|
+
type: 'header',
|
38
|
+
title: 'Headers',
|
39
|
+
search_title: 'Header List'
|
40
|
+
})
|
41
|
+
|
42
|
+
menus.push({
|
43
|
+
type: 'function',
|
44
|
+
title: 'Functions',
|
45
|
+
search_title: 'Function List'
|
46
|
+
})
|
47
|
+
|
48
|
+
menus.push last
|
49
|
+
|
50
|
+
menus
|
51
|
+
end
|
52
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yard-mruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seba Gamboa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: yard
|
@@ -69,7 +69,8 @@ dependencies:
|
|
69
69
|
description: Generate Yard documentation for MRuby projects.
|
70
70
|
email:
|
71
71
|
- me@sagmor.com
|
72
|
-
executables:
|
72
|
+
executables:
|
73
|
+
- mrbdoc
|
73
74
|
extensions: []
|
74
75
|
extra_rdoc_files: []
|
75
76
|
files:
|
@@ -83,24 +84,40 @@ files:
|
|
83
84
|
- Rakefile
|
84
85
|
- bin/console
|
85
86
|
- bin/setup
|
87
|
+
- exe/mrbdoc
|
86
88
|
- lib/yard-mruby.rb
|
87
|
-
- lib/yard/handlers.rb
|
88
|
-
- lib/yard/handlers/c.rb
|
89
|
-
- lib/yard/handlers/c/mruby_base.rb
|
90
|
-
- lib/yard/handlers/c/mruby_class_handler.rb
|
91
|
-
- lib/yard/handlers/c/mruby_method_handler.rb
|
92
|
-
- lib/yard/handlers/c/mruby_module_handler.rb
|
93
|
-
- lib/yard/handlers/c/mruby_symbol_handler.rb
|
94
|
-
- lib/yard/handlers/header.rb
|
95
|
-
- lib/yard/handlers/header/base.rb
|
96
|
-
- lib/yard/handlers/header/define_handler.rb
|
97
|
-
- lib/yard/handlers/header/function_handler.rb
|
98
|
-
- lib/yard/handlers/header/header_handler.rb
|
99
89
|
- lib/yard/mruby.rb
|
90
|
+
- lib/yard/mruby/cli.rb
|
91
|
+
- lib/yard/mruby/cli/yardoc.rb
|
100
92
|
- lib/yard/mruby/code_objects.rb
|
101
93
|
- lib/yard/mruby/code_objects/define_object.rb
|
102
94
|
- lib/yard/mruby/code_objects/function_object.rb
|
95
|
+
- lib/yard/mruby/code_objects/header_base_object.rb
|
103
96
|
- lib/yard/mruby/code_objects/header_object.rb
|
97
|
+
- lib/yard/mruby/code_objects/headers_root.rb
|
98
|
+
- lib/yard/mruby/handlers.rb
|
99
|
+
- lib/yard/mruby/handlers/c.rb
|
100
|
+
- lib/yard/mruby/handlers/c/header.rb
|
101
|
+
- lib/yard/mruby/handlers/c/header/base.rb
|
102
|
+
- lib/yard/mruby/handlers/c/header/define_handler.rb
|
103
|
+
- lib/yard/mruby/handlers/c/header/function_handler.rb
|
104
|
+
- lib/yard/mruby/handlers/c/header/header_decl_handler.rb
|
105
|
+
- lib/yard/mruby/handlers/c/source.rb
|
106
|
+
- lib/yard/mruby/handlers/c/source/base.rb
|
107
|
+
- lib/yard/mruby/handlers/c/source/class_handler.rb
|
108
|
+
- lib/yard/mruby/handlers/c/source/init_handler.rb
|
109
|
+
- lib/yard/mruby/handlers/c/source/method_handler.rb
|
110
|
+
- lib/yard/mruby/handlers/c/source/module_handler.rb
|
111
|
+
- lib/yard/mruby/handlers/c/source/symbol_handler.rb
|
112
|
+
- lib/yard/mruby/parser.rb
|
113
|
+
- lib/yard/mruby/parser/c.rb
|
114
|
+
- lib/yard/mruby/parser/c/directive_statement.rb
|
115
|
+
- lib/yard/mruby/parser/c/header_parser.rb
|
116
|
+
- lib/yard/mruby/parser/c/parser.rb
|
117
|
+
- lib/yard/mruby/parser/c/source_parser.rb
|
118
|
+
- lib/yard/mruby/templates.rb
|
119
|
+
- lib/yard/mruby/templates/helpers.rb
|
120
|
+
- lib/yard/mruby/templates/helpers/html_helper.rb
|
104
121
|
- lib/yard/mruby/version.rb
|
105
122
|
- sample/.gitignore
|
106
123
|
- sample/.inch.yml
|
@@ -116,6 +133,29 @@ files:
|
|
116
133
|
- sample/mrblib/sample.rb
|
117
134
|
- sample/src/sample.c
|
118
135
|
- sample/test/sample_spec.rb
|
136
|
+
- templates/default/fulldoc/html/css/mruby.css
|
137
|
+
- templates/default/fulldoc/html/full_list_functions.erb
|
138
|
+
- templates/default/fulldoc/html/full_list_headers.erb
|
139
|
+
- templates/default/fulldoc/html/js/mruby.js
|
140
|
+
- templates/default/fulldoc/html/setup.rb
|
141
|
+
- templates/default/function_details/html/function_signature.erb
|
142
|
+
- templates/default/function_details/html/header.erb
|
143
|
+
- templates/default/function_details/html/source.erb
|
144
|
+
- templates/default/function_details/setup.rb
|
145
|
+
- templates/default/header/html/define_summary.erb
|
146
|
+
- templates/default/header/html/function_details_list.erb
|
147
|
+
- templates/default/header/html/function_summary.erb
|
148
|
+
- templates/default/header/html/functions.erb
|
149
|
+
- templates/default/header/html/header.erb
|
150
|
+
- templates/default/header/html/includes.erb
|
151
|
+
- templates/default/header/html/item_summary.erb
|
152
|
+
- templates/default/header/html/pre_docstring.erb
|
153
|
+
- templates/default/header/html/setup.rb
|
154
|
+
- templates/default/headersroot/html/headers_list.erb
|
155
|
+
- templates/default/headersroot/html/setup.rb
|
156
|
+
- templates/default/layout/html/footer.erb
|
157
|
+
- templates/default/layout/html/setup.rb
|
158
|
+
- templates/default/tags/setup.rb
|
119
159
|
- yard-mruby.gemspec
|
120
160
|
homepage: https://github.com/sagmor/yard-mruby
|
121
161
|
licenses:
|
@@ -137,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
177
|
version: '0'
|
138
178
|
requirements: []
|
139
179
|
rubyforge_project:
|
140
|
-
rubygems_version: 2.4.5
|
180
|
+
rubygems_version: 2.4.5.1
|
141
181
|
signing_key:
|
142
182
|
specification_version: 4
|
143
183
|
summary: Generate Yard documentation for MRuby projects.
|
data/lib/yard/handlers.rb
DELETED
data/lib/yard/handlers/c.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
module YARD::Handlers::C
|
2
|
-
class MRubyBase < Base
|
3
|
-
|
4
|
-
DEFAULT_NAMESPACES = {
|
5
|
-
# 'mrb->top_self' => '',
|
6
|
-
'object_class' => 'Object',
|
7
|
-
'class_class' => 'Class',
|
8
|
-
'module_class' => 'Module',
|
9
|
-
'proc_class' => 'Proc',
|
10
|
-
'string_class' => 'String',
|
11
|
-
'array_class' => 'Array',
|
12
|
-
'hash_class' => 'Hash',
|
13
|
-
'float_class' => 'Float',
|
14
|
-
'fixnum_class' => 'Fixnum',
|
15
|
-
'true_class' => 'TrueClass',
|
16
|
-
'false_class' => 'FalseClass',
|
17
|
-
'nil_class' => 'NilClass',
|
18
|
-
'symbol_class' => 'Symbol',
|
19
|
-
'kernel_module' => 'Kernel'
|
20
|
-
}
|
21
|
-
|
22
|
-
def namespace_for_variable(var)
|
23
|
-
DEFAULT_NAMESPACES[ var[/^\w+->(\w+)$/, 1] ] || super
|
24
|
-
end
|
25
|
-
|
26
|
-
def handle_class(var_name, class_name, parent, stmt, in_module = nil)
|
27
|
-
object = super(var_name, class_name, parent, in_module)
|
28
|
-
|
29
|
-
if stmt.comments
|
30
|
-
register_docstring(object, stmt.comments.source, stmt)
|
31
|
-
end
|
32
|
-
|
33
|
-
object
|
34
|
-
end
|
35
|
-
|
36
|
-
def handle_module(var_name, module_name, stmt, in_module = nil)
|
37
|
-
object = super(var_name, module_name, in_module)
|
38
|
-
|
39
|
-
if stmt.comments
|
40
|
-
register_docstring(object, stmt.comments.source, stmt)
|
41
|
-
end
|
42
|
-
|
43
|
-
object
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
47
|
-
end
|
data/lib/yard/handlers/header.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require_relative 'header/base'
|
File without changes
|