yard-mruby 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
[](https://rubygems.org/gems/yard-mruby)
|
4
|
+
[](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
|