Class: Inch::Language::JavaScript::Provider::JSDoc::Object::Base Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/inch/language/javascript/provider/jsdoc/object/base.rb

Overview

This class is abstract.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash) ⇒ Base

Returns a new instance of Base.

Parameters:

  • hash (Hash)

    hash returned via JSON interface



16
17
18
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 16

def initialize(hash)
  @hash = hash
end

Instance Attribute Details

#base_dirString

Returns the codebase’s directory.

Returns:

  • (String)

    the codebase’s directory



13
14
15
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 13

def base_dir
  @base_dir
end

#children_fullnamesObject



45
46
47
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 45

def children_fullnames
  @children_fullnames ||= []
end

Instance Method Details

#aliased_object_fullnameObject



57
58
59
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 57

def aliased_object_fullname
  nil
end

#aliases_fullnamesObject



61
62
63
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 61

def aliases_fullnames
  nil
end

#api_tag?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 53

def api_tag?
  nil
end

#attributesObject



65
66
67
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 65

def attributes
  []
end

#bang_name?Boolean

Returns:

  • (Boolean)


69
70
71
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 69

def bang_name?
  false
end

#constant?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 73

def constant?
  false # raise NotImplementedError
end

#constructor?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 77

def constructor?
  false
end

#depthObject



81
82
83
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 81

def depth
  fullname.split('.').size
end

#docstringDocstring

Returns:



86
87
88
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 86

def docstring
  @docstring ||= Docstring.new(@hash['comment'])
end

#filenameObject



40
41
42
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 40

def filename
  files.first.filename unless files.empty?
end

#filesArray<CodeLocation>

Returns all files declaring the object in the form of an Array of Arrays containing the location of their declaration.

Returns:

  • (Array<CodeLocation>)


32
33
34
35
36
37
38
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 32

def files
  return [] unless meta?
  filename = meta['path'] + '/' + meta['filename']
  [
    Inch::Utils::CodeLocation.new('', filename, meta['lineno'])
  ]
end

#fullnameObject



24
25
26
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 24

def fullname
  @hash['longname']
end

#getter?Boolean

Returns:

  • (Boolean)


90
91
92
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 90

def getter?
  fullname =~ /(\A|#|\.)(get)[A-Z]/
end

#has_children?Boolean

Returns:

  • (Boolean)


94
95
96
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 94

def has_children?
  !children_fullnames.empty?
end

#has_code_example?Boolean

Returns:

  • (Boolean)


98
99
100
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 98

def has_code_example?
  docstring.contains_code_example?
end

#has_doc?Boolean

Returns:

  • (Boolean)


102
103
104
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 102

def has_doc?
  !undocumented?
end

#has_multiple_code_examples?Boolean

Returns:

  • (Boolean)


106
107
108
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 106

def has_multiple_code_examples?
  docstring.code_examples.size > 1
end

#has_unconsidered_tags?Boolean

Returns:

  • (Boolean)


110
111
112
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 110

def has_unconsidered_tags?
  false # raise NotImplementedError
end

#in_root?Boolean

Returns:

  • (Boolean)


187
188
189
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 187

def in_root?
  depth == 1
end

#method?Boolean

Returns:

  • (Boolean)


114
115
116
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 114

def method?
  false
end

#nameObject



20
21
22
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 20

def name
  @hash['name']
end

#namespace?Boolean

Returns:

  • (Boolean)


124
125
126
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 124

def namespace?
  false
end

#nodoc?Boolean

Returns:

  • (Boolean)


118
119
120
121
122
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 118

def nodoc?
  @hash['comment'] == false ||
    docstring.tag?(:ignore) ||
      docstring.to_s.strip.start_with?("istanbul ignore")
end

#original_docstringObject



128
129
130
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 128

def original_docstring
  @hash['comment']
end

#overridden?Boolean

Returns:

  • (Boolean)


132
133
134
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 132

def overridden?
  false # raise NotImplementedError
end

#overridden_method_fullnameObject



136
137
138
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 136

def overridden_method_fullname
  nil # raise NotImplementedError
end

#parametersObject



140
141
142
143
144
145
146
147
148
149
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 140

def parameters
  if meta? && meta['code']
    names = meta['code']['paramnames'] || []
    names.map do |name|
      FunctionParameterObject.new(self, name)
    end
  else
    []
  end
end

#parent_fullnameObject



49
50
51
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 49

def parent_fullname
  @hash['memberof'] || retrieve_parent_fullname
end

#private?Boolean

Returns:

  • (Boolean)


151
152
153
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 151

def private?
  visibility == 'private' || private_name?
end

#protected?Boolean

Returns:

  • (Boolean)


163
164
165
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 163

def protected?
  visibility == 'protected'
end

#public?Boolean

Returns:

  • (Boolean)


167
168
169
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 167

def public?
  visibility == 'public'
end

#questioning_name?Boolean

Returns:

  • (Boolean)


171
172
173
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 171

def questioning_name?
  fullname =~ /(\A|#|\.)(has|is)[A-Z]/
end

#return_described?Boolean

Returns:

  • (Boolean)


175
176
177
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 175

def return_described?
  docstring.describes_return?
end

#return_mentioned?Boolean

Returns:

  • (Boolean)


179
180
181
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 179

def return_mentioned?
  docstring.mentions_return?
end

#return_typed?Boolean

Returns:

  • (Boolean)


183
184
185
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 183

def return_typed?
  return_mentioned?
end

#setter?Boolean

Returns:

  • (Boolean)


191
192
193
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 191

def setter?
  fullname =~ /(\A|#|\.)(set)[A-Z]/
end

#sourceObject



195
196
197
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 195

def source
  nil
end

#tagged_as_internal_api?Boolean

Returns:

  • (Boolean)


155
156
157
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 155

def tagged_as_internal_api?
  false
end

#tagged_as_private?Boolean

Returns:

  • (Boolean)


159
160
161
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 159

def tagged_as_private?
  nodoc?
end

#unconsidered_tag_countObject



199
200
201
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 199

def unconsidered_tag_count
  0
end

#undocumented?Boolean

Returns:

  • (Boolean)


203
204
205
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 203

def undocumented?
  @hash['comment'].to_s.empty?
end

#visibilityObject



207
208
209
# File 'lib/inch/language/javascript/provider/jsdoc/object/base.rb', line 207

def visibility
  docstring.visibility(@hash['access'])
end