peeky 0.0.27 → 0.0.40

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,95 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Peeky
4
+ module Renderer
5
+ # Class Debug Render
6
+ class ClassDebugRender
7
+ attr_reader :class_info
8
+
9
+ def initialize(class_info)
10
+ @key_width = 30
11
+ @class_info = class_info
12
+ end
13
+
14
+ # Render the class interface
15
+ # rubocop:disable Metrics/AbcSize
16
+ def render
17
+ output = []
18
+ output.push class_details
19
+ attributes = render_accessors + render_readers + render_writers
20
+
21
+ if attributes.length.positive?
22
+ output.push("-- Attributes #{'-' * 86}")
23
+ output.push(*attributes)
24
+ output.push('')
25
+ end
26
+
27
+ methods = render_methods
28
+
29
+ if methods.length.positive?
30
+ output.push("-- Public Methods #{'-' * 82}")
31
+ output.push(*methods)
32
+ output.push('')
33
+ end
34
+
35
+ output.pop if output.last == ''
36
+
37
+ output.join("\n")
38
+ end
39
+ # rubocop:enable Metrics/AbcSize
40
+
41
+ private
42
+
43
+ def lj(value, size = 24)
44
+ value.to_s.ljust(size)
45
+ end
46
+
47
+ def kv(key, value)
48
+ "#{key.to_s.ljust(@key_width)}: #{value}"
49
+ end
50
+
51
+ def class_details
52
+ [
53
+ '-' * 100,
54
+ kv('class name', @class_info.class_name),
55
+ kv('module name', @class_info.module_name),
56
+ kv('class full name', @class_info.class_full_name),
57
+ ''
58
+ ]
59
+ end
60
+
61
+ def render_accessors
62
+ @class_info.accessors.map { |attr| kv('attr_accessor', attr.name) }
63
+ end
64
+
65
+ def render_readers
66
+ @class_info.readers.map { |attr| kv('attr_reader', attr.name) }
67
+ end
68
+
69
+ def render_writers
70
+ @class_info.writers.map { |attr| kv('attr_writer', attr.name) }
71
+ end
72
+
73
+ def render_methods
74
+ @class_info.methods.flat_map do |method|
75
+ [
76
+ "#{method.name}::",
77
+ *render_paramaters(method.parameters),
78
+ ''
79
+ ]
80
+ end
81
+ end
82
+
83
+ def render_paramaters(parameters)
84
+ result = [
85
+ "#{lj('name')} #{lj('param format')} #{lj('type')} #{lj('default')}",
86
+ '-' * 100
87
+ ]
88
+
89
+ result + parameters.map do |param|
90
+ "#{lj(param.name)} #{lj(param.signature_format)} #{lj(param.type)} #{lj(param.default_value)}"
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # require 'active_support/core_ext'
4
3
  require 'active_support/core_ext/string'
5
4
 
6
5
  module Peeky
@@ -37,10 +36,7 @@ module Peeky
37
36
  output = []
38
37
  output.push render_start
39
38
  @indent += ' '
40
- output += render_accessors
41
- output += render_readers
42
- output += render_writers
43
- output += render_methods
39
+ output += (render_accessors + render_readers + render_writers + render_methods)
44
40
  output.pop if output.last == ''
45
41
 
46
42
  @indent = @indent[0..-3]
@@ -112,17 +108,21 @@ module Peeky
112
108
  when :key_required
113
109
  result.push "#{@indent}# @param #{parameter.name} [#{default_param_type}] #{parameter.name}: <value for #{parameter.name.to_s.humanize.downcase}> (required)"
114
110
  when :key_optional
115
- result.push "#{@indent}# @param #{parameter.name} [#{default_param_type}] #{parameter.name}: <value for #{parameter.name.to_s.humanize.downcase}> (optional)"
111
+ result.push "#{@indent}# @param #{parameter.name} [#{parameter.default_value_type}] #{parameter.name}: is optional, defaults to #{parameter.wrap_default_value('nil')}"
116
112
  when :param_required
117
113
  result.push "#{@indent}# @param #{parameter.name} [#{default_param_type}] #{parameter.name.to_s.humanize.downcase} (required)"
118
114
  when :param_optional
119
- result.push "#{@indent}# @param #{parameter.name} [#{default_param_type}] #{parameter.name.to_s.humanize.downcase} (optional)"
115
+ result.push "#{@indent}# @param #{parameter.name} [#{parameter.default_value_type}] #{parameter.name} is optional, defaults to #{parameter.wrap_default_value('nil')}"
116
+ # result.push "#{@indent}# @param #{parameter.name} [#{default_param_type}] #{parameter.name.to_s.humanize.downcase} (optional)"
120
117
  else
121
118
  result.push "#{@indent}# @param #{parameter.name} [#{default_param_type}] #{parameter.name.to_s.humanize.downcase}"
122
119
  end
123
120
  end
124
121
 
125
- result.push "#{@indent}# @return [Boolean] true when #{method_signature.name.to_s.humanize.downcase}" if method_signature.name.to_s.end_with?('?')
122
+ if method_signature.name.to_s.end_with?('?')
123
+ result.push ''
124
+ result.push "#{@indent}# @return [Boolean] true when #{method_signature.name.to_s.humanize.downcase}"
125
+ end
126
126
 
127
127
  render_signature = Peeky::Renderer::MethodSignatureRender.new(method_signature)
128
128
  render_signature.indent = @indent
@@ -12,8 +12,8 @@ module Peeky
12
12
  attr_reader :method_signature
13
13
 
14
14
  def initialize(method_signature, **opts)
15
- instance_name = opts[:instance_name] || 'instance'
16
- @instance_name = instance_name
15
+ # instance_name = opts[:instance_name] || 'instance'
16
+ @instance_name = opts[:instance_name]
17
17
  @method_signature = method_signature
18
18
  end
19
19
 
@@ -29,7 +29,11 @@ module Peeky
29
29
 
30
30
  params = minimal_call_parameters.length.zero? ? '' : "(#{minimal_call_parameters})"
31
31
 
32
- "#{@instance_name}.#{name}#{params}"
32
+ if @instance_name.nil?
33
+ "#{name}#{params}"
34
+ else
35
+ "#{@instance_name}.#{name}#{params}"
36
+ end
33
37
  end
34
38
  end
35
39
  end
data/lib/peeky/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Peeky
4
- VERSION = '0.0.27'
4
+ VERSION = '0.0.40'
5
5
  end
data/peeky.gemspec CHANGED
@@ -3,25 +3,16 @@
3
3
  require_relative 'lib/peeky/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.required_ruby_version = '>= 2.5'
7
6
  spec.name = 'peeky'
8
7
  spec.version = Peeky::VERSION
9
8
  spec.authors = ['David Cruwys']
10
9
  spec.email = ['david@ideasmen.com.au']
11
10
 
12
- spec.summary = 'Extracting meta data from ruby classes'
13
- spec.description = <<-TEXT
14
- Peeky is a Ruby GEM for peaking into ruby classes and extracting meta data.
15
- You can use this meta data to recreate classes, interfaces, documentation etc.
16
- or use it just to understand the internals of a class.
17
- TEXT
18
-
11
+ spec.summary = 'Take a peek into your ruby classes and extract useful meta data'
12
+ spec.description = 'peeky'
19
13
  spec.homepage = 'http://appydave.com/gems/peeky'
20
14
  spec.license = 'MIT'
21
-
22
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
23
- # to allow pushing to a single host or delete this section to allow pushing to any host.
24
- raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.' unless spec.respond_to?(:metadata)
15
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.4.0')
25
16
 
26
17
  # spec.metadata['allowed_push_host'] = "Set to 'http://mygemserver.com'"
27
18
 
@@ -32,20 +23,23 @@ Gem::Specification.new do |spec|
32
23
  # Click Add Project:
33
24
  # git@github.com:klueless-io/peeky
34
25
  spec.metadata['documentation_uri'] = 'https://rubydoc.info/github/klueless-io/peeky/master'
35
- spec.extra_rdoc_files = ['README-stories.md', 'README-stories.md']
36
26
 
37
27
  # Specify which files should be added to the gem when it is released.
38
28
  # The `git ls-files -z` loads the RubyGem files that have been added into git.
39
29
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
40
- `git ls-files -z`.split("\x0").reject do |f|
41
- f.match(%r{^(test|spec|features)/})
42
- end
30
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
43
31
  end
44
32
  spec.bindir = 'exe'
45
33
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
46
34
  spec.require_paths = ['lib']
35
+
47
36
  # spec.extensions = ['ext/peeky/extconf.rb']
37
+ spec.extra_rdoc_files = ['README.md', 'STORIES.md', 'USAGE.md']
38
+ spec.rdoc_options += [
39
+ '--title', 'peeky by appydave.com',
40
+ '--main', 'README.md',
41
+ '--files STORIES.MD USAGE.MD'
42
+ ]
48
43
 
49
44
  spec.add_dependency 'activesupport'
50
- # spec.add_dependency 'tty-box', '~> 0.5.0'
51
45
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peeky
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.27
4
+ version: 0.0.40
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-07 00:00:00.000000000 Z
11
+ date: 2021-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,16 +24,15 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- description: |2
28
- Peeky is a Ruby GEM for peaking into ruby classes and extracting meta data.
29
- You can use this meta data to recreate classes, interfaces, documentation etc.
30
- or use it just to understand the internals of a class.
27
+ description: peeky
31
28
  email:
32
29
  - david@ideasmen.com.au
33
30
  executables: []
34
31
  extensions: []
35
32
  extra_rdoc_files:
36
- - README-stories.md
33
+ - README.md
34
+ - STORIES.md
35
+ - USAGE.md
37
36
  files:
38
37
  - ".github/workflows/ruby.yml"
39
38
  - ".gitignore"
@@ -44,9 +43,11 @@ files:
44
43
  - Gemfile
45
44
  - Guardfile
46
45
  - LICENSE.txt
47
- - README-stories.md
48
46
  - README.md
49
47
  - Rakefile
48
+ - STORIES.md
49
+ - USAGE.md
50
+ - USAGE2.md
50
51
  - bin/console
51
52
  - bin/k
52
53
  - bin/kgitsync
@@ -63,6 +64,7 @@ files:
63
64
  - lib/peeky/parameter_info.rb
64
65
  - lib/peeky/predicates/attr_reader_predicate.rb
65
66
  - lib/peeky/predicates/attr_writer_predicate.rb
67
+ - lib/peeky/renderer/class_debug_render.rb
66
68
  - lib/peeky/renderer/class_interface_render.rb
67
69
  - lib/peeky/renderer/class_interface_yard_render.rb
68
70
  - lib/peeky/renderer/method_call_minimum_params_render.rb
@@ -79,22 +81,27 @@ metadata:
79
81
  changelog_uri: https://github.com/klueless-io/peeky/commits/master
80
82
  documentation_uri: https://rubydoc.info/github/klueless-io/peeky/master
81
83
  post_install_message:
82
- rdoc_options: []
84
+ rdoc_options:
85
+ - "--title"
86
+ - peeky by appydave.com
87
+ - "--main"
88
+ - README.md
89
+ - "--files STORIES.MD USAGE.MD"
83
90
  require_paths:
84
91
  - lib
85
92
  required_ruby_version: !ruby/object:Gem::Requirement
86
93
  requirements:
87
94
  - - ">="
88
95
  - !ruby/object:Gem::Version
89
- version: '2.5'
96
+ version: 2.4.0
90
97
  required_rubygems_version: !ruby/object:Gem::Requirement
91
98
  requirements:
92
99
  - - ">="
93
100
  - !ruby/object:Gem::Version
94
101
  version: '0'
95
102
  requirements: []
96
- rubygems_version: 3.1.4
103
+ rubygems_version: 3.2.7
97
104
  signing_key:
98
105
  specification_version: 4
99
- summary: Extracting meta data from ruby classes
106
+ summary: Take a peek into your ruby classes and extract useful meta data
100
107
  test_files: []