inch 0.5.0.rc5 → 0.5.0.rc6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +0 -6
  3. data/.rubocop_todo.yml +40 -34
  4. data/Gemfile +3 -3
  5. data/Rakefile +10 -6
  6. data/bin/inch +5 -5
  7. data/config/base.rb +4 -4
  8. data/config/nodejs.rb +44 -1
  9. data/config/ruby.rb +1 -1
  10. data/inch.gemspec +17 -17
  11. data/lib/inch.rb +13 -13
  12. data/lib/inch/api.rb +10 -10
  13. data/lib/inch/api/compare.rb +2 -2
  14. data/lib/inch/api/compare/code_objects.rb +1 -1
  15. data/lib/inch/api/diff.rb +1 -1
  16. data/lib/inch/api/options/suggest.rb +1 -1
  17. data/lib/inch/api/suggest.rb +1 -1
  18. data/lib/inch/cli.rb +6 -6
  19. data/lib/inch/cli/command.rb +15 -15
  20. data/lib/inch/cli/command/base.rb +5 -3
  21. data/lib/inch/cli/command/base_list.rb +0 -1
  22. data/lib/inch/cli/command/console.rb +5 -5
  23. data/lib/inch/cli/command/diff.rb +6 -6
  24. data/lib/inch/cli/command/inspect.rb +5 -5
  25. data/lib/inch/cli/command/list.rb +4 -4
  26. data/lib/inch/cli/command/options/base.rb +17 -15
  27. data/lib/inch/cli/command/options/base_list.rb +17 -17
  28. data/lib/inch/cli/command/options/base_object.rb +1 -1
  29. data/lib/inch/cli/command/options/console.rb +13 -13
  30. data/lib/inch/cli/command/options/diff.rb +19 -19
  31. data/lib/inch/cli/command/options/inspect.rb +5 -5
  32. data/lib/inch/cli/command/options/list.rb +7 -7
  33. data/lib/inch/cli/command/options/show.rb +5 -5
  34. data/lib/inch/cli/command/options/stats.rb +2 -2
  35. data/lib/inch/cli/command/options/suggest.rb +12 -12
  36. data/lib/inch/cli/command/output/base.rb +1 -1
  37. data/lib/inch/cli/command/output/diff.rb +9 -9
  38. data/lib/inch/cli/command/output/inspect.rb +13 -13
  39. data/lib/inch/cli/command/output/list.rb +1 -1
  40. data/lib/inch/cli/command/output/show.rb +4 -4
  41. data/lib/inch/cli/command/output/stats.rb +14 -14
  42. data/lib/inch/cli/command/output/suggest.rb +14 -14
  43. data/lib/inch/cli/command/show.rb +4 -4
  44. data/lib/inch/cli/command/stats.rb +4 -4
  45. data/lib/inch/cli/command/suggest.rb +4 -4
  46. data/lib/inch/cli/command_parser.rb +4 -4
  47. data/lib/inch/cli/sparkline_helper.rb +1 -1
  48. data/lib/inch/cli/trace_helper.rb +1 -1
  49. data/lib/inch/cli/yardopts_helper.rb +1 -1
  50. data/lib/inch/code_object.rb +3 -3
  51. data/lib/inch/code_object/provider.rb +3 -3
  52. data/lib/inch/code_object/proxy.rb +3 -4
  53. data/lib/inch/codebase.rb +5 -5
  54. data/lib/inch/codebase/object.rb +2 -1
  55. data/lib/inch/codebase/serializer.rb +2 -2
  56. data/lib/inch/config.rb +6 -6
  57. data/lib/inch/config/codebase.rb +5 -5
  58. data/lib/inch/core_ext.rb +1 -1
  59. data/lib/inch/core_ext/string.rb +1 -1
  60. data/lib/inch/evaluation.rb +8 -8
  61. data/lib/inch/evaluation/proxy.rb +2 -3
  62. data/lib/inch/evaluation/role.rb +1 -1
  63. data/lib/inch/language/elixir/code_object/base.rb +6 -4
  64. data/lib/inch/language/elixir/evaluation/base.rb +2 -1
  65. data/lib/inch/language/elixir/evaluation/function_object.rb +1 -1
  66. data/lib/inch/language/elixir/import.rb +14 -14
  67. data/lib/inch/language/elixir/provider/reader.rb +1 -1
  68. data/lib/inch/language/elixir/provider/reader/docstring.rb +13 -0
  69. data/lib/inch/language/elixir/provider/reader/object.rb +5 -5
  70. data/lib/inch/language/elixir/provider/reader/object/base.rb +13 -5
  71. data/lib/inch/language/elixir/provider/reader/object/function_object.rb +1 -1
  72. data/lib/inch/language/elixir/provider/reader/parser.rb +21 -7
  73. data/lib/inch/language/elixir/roles/base.rb +3 -3
  74. data/lib/inch/language/elixir/roles/function.rb +2 -1
  75. data/lib/inch/language/elixir/roles/object.rb +1 -1
  76. data/lib/inch/language/nodejs/code_object/base.rb +199 -0
  77. data/lib/inch/language/nodejs/code_object/function_object.rb +74 -0
  78. data/lib/inch/language/nodejs/code_object/member_object.rb +11 -0
  79. data/lib/inch/language/nodejs/code_object/module_object.rb +23 -0
  80. data/lib/inch/language/nodejs/evaluation/base.rb +29 -0
  81. data/lib/inch/language/nodejs/evaluation/function_object.rb +31 -0
  82. data/lib/inch/language/nodejs/evaluation/member_object.rb +11 -0
  83. data/lib/inch/language/nodejs/evaluation/module_object.rb +27 -0
  84. data/lib/inch/language/nodejs/import.rb +17 -1
  85. data/lib/inch/language/nodejs/provider/jsdoc.rb +1 -1
  86. data/lib/inch/language/nodejs/provider/jsdoc/docstring.rb +13 -0
  87. data/lib/inch/language/nodejs/provider/jsdoc/object.rb +16 -8
  88. data/lib/inch/language/nodejs/provider/jsdoc/object/base.rb +82 -45
  89. data/lib/inch/language/nodejs/provider/jsdoc/object/function_object.rb +18 -0
  90. data/lib/inch/language/nodejs/provider/jsdoc/object/member_object.rb +15 -0
  91. data/lib/inch/language/nodejs/provider/jsdoc/object/module_object.rb +22 -0
  92. data/lib/inch/language/nodejs/provider/jsdoc/parser.rb +9 -10
  93. data/lib/inch/language/nodejs/roles/base.rb +32 -0
  94. data/lib/inch/language/nodejs/roles/function.rb +113 -0
  95. data/lib/inch/language/nodejs/roles/member.rb +13 -0
  96. data/lib/inch/language/nodejs/roles/module.rb +64 -0
  97. data/lib/inch/language/nodejs/roles/object.rb +76 -0
  98. data/lib/inch/language/ruby/code_object/base.rb +6 -4
  99. data/lib/inch/language/ruby/evaluation/base.rb +2 -1
  100. data/lib/inch/language/ruby/evaluation/method_object.rb +2 -1
  101. data/lib/inch/language/ruby/import.rb +24 -24
  102. data/lib/inch/language/ruby/provider/yard.rb +10 -10
  103. data/lib/inch/language/ruby/provider/yard/nodoc_helper.rb +2 -2
  104. data/lib/inch/language/ruby/provider/yard/object.rb +9 -9
  105. data/lib/inch/language/ruby/provider/yard/object/base.rb +25 -28
  106. data/lib/inch/language/ruby/provider/yard/object/method_object.rb +4 -3
  107. data/lib/inch/language/ruby/provider/yard/object/method_parameter_object.rb +4 -3
  108. data/lib/inch/language/ruby/provider/yard/object/method_signature.rb +2 -2
  109. data/lib/inch/language/ruby/provider/yard/object/namespace_object.rb +2 -1
  110. data/lib/inch/language/ruby/provider/yard/parser.rb +2 -2
  111. data/lib/inch/language/ruby/roles/base.rb +1 -1
  112. data/lib/inch/language/ruby/roles/method.rb +2 -1
  113. data/lib/inch/language/ruby/roles/method_parameter.rb +1 -1
  114. data/lib/inch/language/ruby/roles/missing.rb +2 -2
  115. data/lib/inch/language/ruby/roles/object.rb +6 -6
  116. data/lib/inch/rake.rb +2 -2
  117. data/lib/inch/rake/suggest.rb +5 -5
  118. data/lib/inch/utils/code_location.rb +12 -0
  119. data/lib/inch/utils/read_write_methods.rb +2 -2
  120. data/lib/inch/utils/ui.rb +8 -8
  121. data/lib/inch/version.rb +1 -1
  122. data/test/fixtures/elixir/simple/all.json +321 -0
  123. data/test/integration/api/compare/codebases.rb +6 -6
  124. data/test/integration/cli/command/console_test.rb +13 -13
  125. data/test/integration/cli/command/diff_test.rb +12 -14
  126. data/test/integration/cli/command/inspect_test.rb +30 -30
  127. data/test/integration/cli/command/list_test.rb +34 -34
  128. data/test/integration/cli/command/show_test.rb +26 -26
  129. data/test/integration/cli/command/stats_test.rb +23 -23
  130. data/test/integration/cli/command/suggest_test.rb +58 -49
  131. data/test/integration/stats_options_test.rb +9 -9
  132. data/test/integration/visibility_options_test.rb +49 -45
  133. data/test/shared/base_list.rb +41 -41
  134. data/test/test_helper.rb +18 -10
  135. data/test/unit/api/filter_test.rb +9 -9
  136. data/test/unit/api/get_test.rb +6 -6
  137. data/test/unit/api/list_test.rb +3 -3
  138. data/test/unit/api/options/base_test.rb +6 -6
  139. data/test/unit/api/stats_test.rb +3 -3
  140. data/test/unit/api/suggest_test.rb +4 -4
  141. data/test/unit/cli/arguments_test.rb +25 -25
  142. data/test/unit/cli/command/base_test.rb +3 -3
  143. data/test/unit/cli/command/options/base_list_test.rb +14 -14
  144. data/test/unit/cli/command/options/base_object_test.rb +6 -6
  145. data/test/unit/cli/command/options/base_test.rb +3 -3
  146. data/test/unit/cli/command_parser_test.rb +29 -29
  147. data/test/unit/cli/trace_helper_test.rb +2 -2
  148. data/test/unit/cli/yardopts_helper_test.rb +35 -35
  149. data/test/unit/code_object/converter_test.rb +3 -3
  150. data/test/unit/code_object/provider_test.rb +2 -2
  151. data/test/unit/code_object/proxy_test.rb +11 -11
  152. data/test/unit/codebase/objects_test.rb +8 -8
  153. data/test/unit/codebase/proxy_test.rb +5 -5
  154. data/test/unit/config/codebase_test.rb +3 -3
  155. data/test/unit/config_test.rb +4 -4
  156. data/test/unit/evaluation/role_test.rb +8 -8
  157. data/test/unit/language/elixir/code_object/function_object_test.rb +35 -0
  158. data/test/unit/language/ruby/code_object/method_object_test.rb +128 -126
  159. data/test/unit/language/ruby/provider/yard/docstring_test.rb +27 -23
  160. data/test/unit/language/ruby/provider/yard/nodoc_helper_test.rb +21 -20
  161. data/test/unit/language/ruby/provider/yard/object/method_object_test.rb +20 -17
  162. data/test/unit/language/ruby/provider/yard_test.rb +4 -4
  163. data/test/unit/utils/buffered_ui_test.rb +20 -20
  164. data/test/unit/utils/ui_test.rb +20 -20
  165. data/test/unit/utils/weighted_list_test.rb +7 -7
  166. metadata +25 -2
@@ -1,7 +1,7 @@
1
- require "inch/language/elixir/provider/reader/object/base"
2
- require "inch/language/elixir/provider/reader/object/function_object"
3
- require "inch/language/elixir/provider/reader/object/module_object"
4
- require "inch/language/elixir/provider/reader/object/type_object"
1
+ require 'inch/language/elixir/provider/reader/object/base'
2
+ require 'inch/language/elixir/provider/reader/object/function_object'
3
+ require 'inch/language/elixir/provider/reader/object/module_object'
4
+ require 'inch/language/elixir/provider/reader/object/type_object'
5
5
 
6
6
  module Inch
7
7
  module Language
@@ -22,7 +22,7 @@ module Inch
22
22
  # @return [Provider::JSDoc::Object]
23
23
  def for(json_object)
24
24
  @cache ||= {}
25
- if proxy_object = @cache[cache_key(json_object)]
25
+ if (proxy_object = @cache[cache_key(json_object)])
26
26
  proxy_object
27
27
  else
28
28
  @cache[cache_key(json_object)] =
@@ -1,3 +1,5 @@
1
+ require 'inch/language/elixir/provider/reader/docstring'
2
+
1
3
  module Inch
2
4
  module Language
3
5
  module Elixir
@@ -16,7 +18,7 @@ module Inch
16
18
  end
17
19
 
18
20
  def fullname
19
- raise NotImplementedError
21
+ fail NotImplementedError
20
22
  end
21
23
 
22
24
  def files
@@ -27,12 +29,17 @@ module Inch
27
29
  nil
28
30
  end
29
31
 
32
+ attr_writer :children_fullnames
30
33
  def children_fullnames
31
- [] # raise NotImplementedError
34
+ @children_fullnames ||= []
32
35
  end
33
36
 
34
37
  def parent_fullname
35
- false # raise NotImplementedError
38
+ if depth == 1
39
+ nil
40
+ else
41
+ fullname.split('.')[0...-1].join('.')
42
+ end
36
43
  end
37
44
 
38
45
  def api_tag?
@@ -67,8 +74,9 @@ module Inch
67
74
  fullname.split('.').size
68
75
  end
69
76
 
77
+ # @return [Docstring]
70
78
  def docstring
71
- @hash['doc'] # raise NotImplementedError
79
+ @docstring ||= Docstring.new(@hash['doc'])
72
80
  end
73
81
 
74
82
  def getter?
@@ -76,7 +84,7 @@ module Inch
76
84
  end
77
85
 
78
86
  def has_children?
79
- false # raise NotImplementedError
87
+ !children_fullnames.empty?
80
88
  end
81
89
 
82
90
  def has_code_example?
@@ -11,7 +11,7 @@ module Inch
11
11
  end
12
12
 
13
13
  def fullname
14
- @hash['module_id'] + "." + @hash['id']
14
+ @hash['module_id'] + '.' + @hash['id']
15
15
  end
16
16
 
17
17
  def method?
@@ -1,5 +1,5 @@
1
- require "json"
2
- require "inch/language/elixir/provider/reader/object"
1
+ require 'json'
2
+ require 'inch/language/elixir/provider/reader/object'
3
3
 
4
4
  module Inch
5
5
  module Language
@@ -13,7 +13,8 @@ module Inch
13
13
  # Helper method to parse an instance with the given +args+
14
14
  #
15
15
  # @see #parse
16
- # @return [CodeObject::Provider::Reader::Parser] the instance that ran
16
+ # @return [CodeObject::Provider::Reader::Parser] the instance that
17
+ # ran
17
18
  def self.parse(*args)
18
19
  parser = new
19
20
  parser.parse(*args)
@@ -32,16 +33,29 @@ module Inch
32
33
 
33
34
  # @return [Array<YARD::Object::Base>]
34
35
  def objects
35
- @objects ||= parsed_objects.map do |o|
36
- Reader::Object.for(o) # unless IGNORE_TYPES.include?(o.type)
37
- end.compact
36
+ @objects ||= begin
37
+ list = parsed_objects.map do |o|
38
+ Reader::Object.for(o) # unless IGNORE_TYPES.include?(o.type)
39
+ end.compact
40
+ children_map = {}
41
+ list.each do |object|
42
+ if object.parent_fullname
43
+ children_map[object.parent_fullname] ||= []
44
+ children_map[object.parent_fullname] << object.fullname
45
+ end
46
+ end
47
+ list.each do |object|
48
+ object.children_fullnames = children_map[object.fullname]
49
+ end
50
+ list
51
+ end
38
52
  end
39
53
 
40
54
  private
41
55
 
42
56
  def parse_objects(paths, excluded, read_dump_file = nil)
43
57
  if read_dump_file.nil?
44
- raise "Elixir analysis only works with --read-from-dump."
58
+ fail 'Elixir analysis only works with --read-from-dump.'
45
59
  else
46
60
  output = File.read(read_dump_file)
47
61
  end
@@ -7,7 +7,7 @@ module Inch
7
7
  class Base < Inch::Evaluation::Role
8
8
  # Returns the type of the +object+ that is being evaluated.
9
9
  def object_type
10
- object.class.to_s.split("::").last.gsub(/Object$/, "").downcase
10
+ object.class.to_s.split('::').last.gsub(/Object$/, '').downcase
11
11
  end
12
12
  end
13
13
 
@@ -19,8 +19,8 @@ module Inch
19
19
  end
20
20
 
21
21
  # @return [Fixnum]
22
- # a score that can be achieved by adding the missing thing mentioned
23
- # by the role
22
+ # a score that can be achieved by adding the missing thing
23
+ # mentioned by the role
24
24
  def potential_score
25
25
  @value.to_i
26
26
  end
@@ -17,7 +17,8 @@ module Inch
17
17
  priority +2
18
18
  end
19
19
 
20
- # Role assigned to methods where the return value is typed in the docs
20
+ # Role assigned to methods where the return value is typed in the
21
+ # docs
21
22
  class WithReturnType < Base
22
23
  applicable_if :return_typed?
23
24
  end
@@ -65,7 +65,7 @@ module Inch
65
65
  applicable_unless :has_code_example?
66
66
 
67
67
  def suggestion
68
- "Add a code example (optional)"
68
+ 'Add a code example (optional)'
69
69
  end
70
70
  end
71
71
  end
@@ -0,0 +1,199 @@
1
+ require 'forwardable'
2
+
3
+ module Inch
4
+ module Language
5
+ module Nodejs
6
+ # This is the base class for code object proxies.
7
+ # Code object proxies are via an attributes Hash and provide all methods
8
+ # necessary for the evaluation of its documentation.
9
+ #
10
+ # @abstract
11
+ module CodeObject
12
+ class Base < Inch::CodeObject::Proxy
13
+ def language
14
+ :nodejs
15
+ end
16
+
17
+ # @return [Boolean] if the current object is an alias for something
18
+ # else
19
+ def alias?
20
+ !aliased_object.nil?
21
+ end
22
+
23
+ # @return [CodeObject::Proxy] the object the current object is an
24
+ # alias of
25
+ def aliased_object
26
+ object_lookup.find(self[:aliased_object_fullname])
27
+ end
28
+
29
+ # @return [Boolean] +true+ if the object has an @api tag
30
+ def api_tag?
31
+ self[:api_tag?]
32
+ end
33
+
34
+ # @return [Array] the children of the current object
35
+ def children
36
+ @children ||= self[:children_fullnames].map do |fullname|
37
+ object_lookup.find(fullname)
38
+ end
39
+ end
40
+
41
+ # @return [Boolean] +true+ if the object represents a constant
42
+ def constant?
43
+ self[:constant?]
44
+ end
45
+
46
+ def core?
47
+ self[:core?]
48
+ end
49
+
50
+ # The depth of the following is 4:
51
+ #
52
+ # Foo::Bar::Baz#initialize
53
+ # ^ ^ ^ ^
54
+ # 1 << 2 << 3 << 4
55
+ #
56
+ # +depth+ answers the question "how many layers of code objects are
57
+ # above this one?"
58
+ #
59
+ # @note top-level counts, that's why Foo has depth 1!
60
+ #
61
+ # @return [Fixnum] the depth of the object in terms of namespace
62
+ def depth
63
+ self[:depth]
64
+ end
65
+
66
+ # @return [Docstring]
67
+ def docstring
68
+ self[:docstring]
69
+ end
70
+
71
+ def files
72
+ self[:files]
73
+ end
74
+
75
+ # Returns the name of the file where the object is declared first
76
+ # @return [String] a filename
77
+ def filename
78
+ # just checking the first file (which is the file where an object
79
+ # is first declared)
80
+ files.first
81
+ end
82
+
83
+ # @return [String] the name of an object, e.g.
84
+ # "Docstring"
85
+ def name
86
+ self[:name]
87
+ end
88
+
89
+ # @return [String] the fully qualified name of an object, e.g.
90
+ # "Inch::CodeObject::Provider::YARD::Docstring"
91
+ def fullname
92
+ self[:fullname]
93
+ end
94
+
95
+ def has_alias?
96
+ !self[:aliases_fullnames].empty?
97
+ end
98
+
99
+ def has_children?
100
+ self[:has_children?]
101
+ end
102
+
103
+ def has_code_example?
104
+ self[:has_code_example?]
105
+ end
106
+
107
+ def has_doc?
108
+ self[:has_doc?]
109
+ end
110
+
111
+ def has_multiple_code_examples?
112
+ self[:has_multiple_code_examples?]
113
+ end
114
+
115
+ def has_unconsidered_tags?
116
+ self[:has_unconsidered_tags?]
117
+ end
118
+
119
+ def in_root?
120
+ self[:in_root?]
121
+ end
122
+
123
+ # @return [Boolean] +true+ if the object represents a method
124
+ def method?
125
+ self[:method?]
126
+ end
127
+
128
+ # @return [Boolean] +true+ if the object represents a namespace
129
+ def namespace?
130
+ self[:namespace?]
131
+ end
132
+
133
+ def original_docstring
134
+ self[:original_docstring]
135
+ end
136
+
137
+ # @return [Boolean] +true+ if the object was tagged not to be
138
+ # documented
139
+ def nodoc?
140
+ self[:nodoc?]
141
+ end
142
+
143
+ # @return [CodeObject::Proxy,nil] the parent of the current object
144
+ # or +nil+
145
+ def parent
146
+ object_lookup.find(self[:parent_fullname])
147
+ end
148
+
149
+ def private?
150
+ self[:private?]
151
+ end
152
+
153
+ # @return [Boolean]
154
+ # +true+ if the object or its parent is tagged as @private
155
+ def tagged_as_private?
156
+ self[:tagged_as_private?]
157
+ end
158
+
159
+ # @return [Boolean]
160
+ # +true+ if the object or its parent is tagged as part of an
161
+ # internal api
162
+ def tagged_as_internal_api?
163
+ self[:tagged_as_internal_api?]
164
+ end
165
+
166
+ def protected?
167
+ self[:protected?]
168
+ end
169
+
170
+ def public?
171
+ self[:public?]
172
+ end
173
+
174
+ def source
175
+ self[:source]
176
+ end
177
+
178
+ def type
179
+ self.class.to_s.gsub(/Object$/, '')
180
+ end
181
+
182
+ # @return [Boolean] +true+ if the object has no documentation at all
183
+ def undocumented?
184
+ self[:undocumented?]
185
+ end
186
+
187
+ # @return [Fixnum] the amount of tags not considered for this object
188
+ def unconsidered_tag_count
189
+ self[:unconsidered_tag_count]
190
+ end
191
+
192
+ def visibility
193
+ self[:visibility]
194
+ end
195
+ end
196
+ end
197
+ end
198
+ end
199
+ end
@@ -0,0 +1,74 @@
1
+ module Inch
2
+ module Language
3
+ module Nodejs
4
+ module CodeObject
5
+ # Proxy class for functions
6
+ class FunctionObject < Base
7
+ def bang_name?
8
+ self[:bang_name?]
9
+ end
10
+
11
+ def getter?
12
+ self[:getter?]
13
+ end
14
+
15
+ def has_parameters?
16
+ !parameters.empty?
17
+ end
18
+
19
+ MANY_PARAMETERS_THRESHOLD = 3
20
+ def has_many_parameters?
21
+ parameters.size > MANY_PARAMETERS_THRESHOLD
22
+ end
23
+
24
+ def has_many_lines?
25
+ false
26
+ end
27
+
28
+ def parameter(name)
29
+ parameters.find { |p| p.name == name.to_s }
30
+ end
31
+
32
+ def parameters
33
+ @parameters ||= self[:parameters].map do |param_attr|
34
+ MethodParameterObject.new(param_attr)
35
+ end
36
+ end
37
+
38
+ def overridden?
39
+ self[:overridden?]
40
+ end
41
+
42
+ def overridden_method
43
+ @overridden_method ||=
44
+ object_lookup.find(self[:overridden_method_fullname])
45
+ end
46
+
47
+ def return_mentioned?
48
+ self[:return_mentioned?]
49
+ end
50
+
51
+ def return_described?
52
+ self[:return_described?]
53
+ end
54
+
55
+ def return_typed?
56
+ self[:return_typed?]
57
+ end
58
+
59
+ def setter?
60
+ self[:setter?]
61
+ end
62
+
63
+ def source
64
+ self[:source?]
65
+ end
66
+
67
+ def questioning_name?
68
+ self[:questioning_name?]
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end