yard_dizby 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 38e0d02941eb44a86376a1556587a07f66b1ae9b
4
+ data.tar.gz: ee96e81c3e6371327971b6e2f12903fb00222f72
5
+ SHA512:
6
+ metadata.gz: 220eae725bebaa08c7d120be04dc0880687fc4d9335380baef8ac7fb3c97c9403d72eed844f25ee001147c873d604503d2f673105a811eadba28e870603f5103
7
+ data.tar.gz: 242ed88b762c79b649d859730831149c5db54faa10e6ae32f8c3b6596348c11446556ec49f445a490a604f08ae2753450b8132e5cacacde2d61f9665c76ba51b
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ Gemfile.lock
2
+
3
+ *.gem
4
+ /pkg/
5
+
6
+ .rubocop-*
data/.rubocop.yml ADDED
@@ -0,0 +1,47 @@
1
+ ---
2
+
3
+ Style/Documentation:
4
+ Enabled: false
5
+
6
+ Metrics/MethodLength:
7
+ Max: 12
8
+
9
+ Style/SpecialGlobalVars:
10
+ Enabled: false
11
+
12
+ Style/AutoResourceCleanup:
13
+ Enabled: true
14
+
15
+ Style/CollectionMethods:
16
+ Enabled: true
17
+
18
+ Style/Copyright:
19
+ Enabled: true
20
+ Notice: '^# Copyright \(c\) 2\d{3} .+$'
21
+
22
+ Style/Encoding:
23
+ Enabled: true
24
+
25
+ Style/MethodCalledOnDoEndBlock:
26
+ Enabled: true
27
+
28
+ Style/MultilineArrayBraceLayout:
29
+ Enabled: true
30
+
31
+ Style/MultilineAssignmentLayout:
32
+ Enabled: true
33
+
34
+ Style/OptionHash:
35
+ Enabled: true
36
+
37
+ Style/Send:
38
+ Enabled: true
39
+
40
+ Style/StringMethods:
41
+ Enabled: true
42
+
43
+ Style/SymbolArray:
44
+ Enabled: true
45
+
46
+ Lint/LiteralInInterpolation:
47
+ Enabled: true
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ source 'https://rubygems.org'
5
+
6
+ gemspec
7
+
8
+ group :development do
9
+ gem 'rake', require: false
10
+
11
+ # lint
12
+ gem 'rubocop', '>= 0.36.0', require: false
13
+ end
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ require 'rubygems'
5
+ require 'bundler'
6
+
7
+ Bundler.setup(:default, :development)
8
+
9
+ require 'bundler/gem_tasks'
10
+
11
+ require 'rubocop/rake_task'
12
+ RuboCop::RakeTask.new(:rubocop) do |t|
13
+ t.fail_on_error = false
14
+ end
15
+ task('rubocop:auto_correct').clear
16
+
17
+ task default: :rubocop
@@ -0,0 +1,94 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ module YARD
5
+ module Dizby
6
+ class ConfigAccessHandler < ::YARD::Handlers::Ruby::AttributeHandler
7
+ handles method_call(:config_reader)
8
+ handles method_call(:config_writer)
9
+ handles method_call(:config_accessor)
10
+ namespace_only
11
+
12
+ def access_permissions
13
+ case statement.method_name(true)
14
+ when :config_reader
15
+ [true, false]
16
+ when :config_writer
17
+ [false, true]
18
+ when :config_accessor
19
+ [true, true]
20
+ else
21
+ [false, false]
22
+ end
23
+ end
24
+
25
+ def process_impl(method, permission)
26
+ if permission
27
+ obj = MethodObject.new(namespace, method, scope)
28
+ yield obj
29
+
30
+ register(obj)
31
+ obj
32
+ else
33
+ namespace.children.find do |o|
34
+ o.name == method.to_sym && o.scope == scope
35
+ end
36
+ end
37
+ end
38
+
39
+ def store_obj(type, name, obj)
40
+ namespace.attributes[scope][name][type] = obj if obj
41
+ end
42
+
43
+ def signature(obj, sig, src)
44
+ obj.signature ||= sig
45
+ obj.source ||= "#{sig}\n#{src}"
46
+ end
47
+
48
+ def process_reader(attribute, permission)
49
+ final =
50
+ process_impl(attribute, permission) do |obj|
51
+ signature(obj, "def #{attribute}", " @config[:#{attribute}]\nend")
52
+ if obj.docstring.blank?(false)
53
+ obj.docstring =
54
+ "Returns the value of configuration attribute #{attribute}"
55
+ end
56
+ end
57
+
58
+ store_obj :read, attribute, final
59
+ end
60
+
61
+ def process_writer(attribute, permission)
62
+ final =
63
+ process_impl("#{attribute}=", permission) do |obj|
64
+ obj.parameters = [['value', nil]]
65
+ signature(obj, "def #{attribute}=(value)",
66
+ " @config[:#{attribute}] = value\nend")
67
+ obj.docstring = <<-eos if obj.docstring.blank?(false)
68
+ Sets the configuration attribute #{attribute}
69
+ @param value the value to set the attribute #{attribute} to.
70
+ eos
71
+ end
72
+
73
+ store_obj :write, attribute, final
74
+ end
75
+
76
+ def process_access(name)
77
+ read, write = access_permissions
78
+ namespace.attributes[scope][name] ||= SymbolHash[read: nil, write: nil]
79
+
80
+ process_reader(name, read)
81
+ process_writer(name, write)
82
+ end
83
+
84
+ def process
85
+ return if statement.type == :var_ref || statement.type == :vcall
86
+ params = statement.parameters(false).dup
87
+
88
+ validated_attribute_names(params).each do |name|
89
+ process_access(name)
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ require 'yard'
5
+ require 'yard/rake/yardoc_task'
6
+
7
+ module YARD
8
+ module Dizby
9
+ def self.template_path
10
+ File.expand_path('../../template', File.dirname(__FILE__))
11
+ end
12
+ end
13
+ end
14
+
15
+ module DizbyYardocTaskExtension
16
+ def initialize(name = :yard)
17
+ super(name) do |task|
18
+ task.options += ['--template-path', YARD::Dizby.template_path]
19
+ yield task if block_given?
20
+ end
21
+ end
22
+ end
23
+
24
+ YARD::Rake::YardocTask.__send__(:prepend, DizbyYardocTaskExtension)
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ module YARD
5
+ module Dizby
6
+ VERSION = '0.1.0'.freeze
7
+ end
8
+ end
data/lib/yard_dizby.rb ADDED
@@ -0,0 +1,4 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ require 'yard_dizby/config_access_handler'
@@ -0,0 +1,3 @@
1
+ <div id="footer">
2
+ Generated by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>.
3
+ </div>
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ require './lib/yard_dizby/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'yard_dizby'
8
+ spec.version = YARD::Dizby::VERSION
9
+ spec.authors = ['Nathan Currier']
10
+ spec.email = ['nathan.currier@gmail.com']
11
+ spec.license = 'BSD-3-clause'
12
+
13
+ spec.description = 'YARD plugin for Dizby'
14
+ spec.summary = 'YARD plugin to ease documenting Dizby'
15
+ spec.homepage = 'https://github.com/rideliner/yard_dizby'
16
+
17
+ spec.files = `git ls-files -z`.split("\x0")
18
+ spec.bindir = 'bin'
19
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
+ spec.require_paths = ['lib']
22
+
23
+ spec.add_dependency 'yard', '> 0.7'
24
+ spec.add_dependency 'bundler', '>= 1.11.2'
25
+ end
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yard_dizby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Nathan Currier
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ type: :runtime
15
+ name: yard
16
+ prerelease: false
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">"
20
+ - !ruby/object:Gem::Version
21
+ version: '0.7'
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.7'
27
+ - !ruby/object:Gem::Dependency
28
+ type: :runtime
29
+ name: bundler
30
+ prerelease: false
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: 1.11.2
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.11.2
41
+ description: YARD plugin for Dizby
42
+ email:
43
+ - nathan.currier@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".gitignore"
49
+ - ".rubocop.yml"
50
+ - Gemfile
51
+ - Rakefile
52
+ - lib/yard_dizby.rb
53
+ - lib/yard_dizby/config_access_handler.rb
54
+ - lib/yard_dizby/rake_overload.rb
55
+ - lib/yard_dizby/version.rb
56
+ - template/default/layout/html/footer.erb
57
+ - yard_dizby.gemspec
58
+ homepage: https://github.com/rideliner/yard_dizby
59
+ licenses:
60
+ - BSD-3-clause
61
+ metadata: {}
62
+ post_install_message:
63
+ rdoc_options: []
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirements: []
77
+ rubyforge_project:
78
+ rubygems_version: 2.4.8
79
+ signing_key:
80
+ specification_version: 4
81
+ summary: YARD plugin to ease documenting Dizby
82
+ test_files: []
83
+ has_rdoc: