distil 0.14.4 → 0.14.5.a

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. data/VERSION +1 -1
  2. data/bin/distil +10 -0
  3. data/lib/distil/project.rb +10 -7
  4. data/lib/distil/source-file.rb +1 -1
  5. metadata +28 -164
  6. data/Buildfile +0 -33
  7. data/distil.gemspec +0 -783
  8. data/lib/distil/javascript-documentation-generator.rb +0 -49
  9. data/vendor/pdoc/LICENSE +0 -16
  10. data/vendor/pdoc/PDoc.tmbundle/Commands/Continue PDoc Comment.tmCommand +0 -39
  11. data/vendor/pdoc/PDoc.tmbundle/Macros/Collapse PDoc Blocks.tmMacro +0 -4084
  12. data/vendor/pdoc/PDoc.tmbundle/Macros/Expand PDoc Blocks.tmMacro +0 -1388
  13. data/vendor/pdoc/PDoc.tmbundle/Preferences/PDoc.tmPreferences +0 -50
  14. data/vendor/pdoc/PDoc.tmbundle/Snippets/class.tmSnippet +0 -24
  15. data/vendor/pdoc/PDoc.tmbundle/Snippets/constant.tmSnippet +0 -22
  16. data/vendor/pdoc/PDoc.tmbundle/Snippets/event.tmSnippet +0 -16
  17. data/vendor/pdoc/PDoc.tmbundle/Snippets/method.tmSnippet +0 -22
  18. data/vendor/pdoc/PDoc.tmbundle/Snippets/mixin.tmSnippet +0 -23
  19. data/vendor/pdoc/PDoc.tmbundle/Snippets/namespace.tmSnippet +0 -24
  20. data/vendor/pdoc/PDoc.tmbundle/Snippets/param.tmSnippet +0 -16
  21. data/vendor/pdoc/PDoc.tmbundle/Snippets/property.tmSnippet +0 -22
  22. data/vendor/pdoc/PDoc.tmbundle/Snippets/section.tmSnippet +0 -23
  23. data/vendor/pdoc/PDoc.tmbundle/Syntaxes/PDoc.tmLanguage +0 -33
  24. data/vendor/pdoc/PDoc.tmbundle/info.plist +0 -22
  25. data/vendor/pdoc/README.markdown +0 -34
  26. data/vendor/pdoc/Rakefile +0 -46
  27. data/vendor/pdoc/bin/pdoc +0 -58
  28. data/vendor/pdoc/lib/pdoc.rb +0 -32
  29. data/vendor/pdoc/lib/pdoc/error.rb +0 -4
  30. data/vendor/pdoc/lib/pdoc/generators.rb +0 -6
  31. data/vendor/pdoc/lib/pdoc/generators/abstract_generator.rb +0 -16
  32. data/vendor/pdoc/lib/pdoc/generators/html.rb +0 -8
  33. data/vendor/pdoc/lib/pdoc/generators/html/helpers.rb +0 -256
  34. data/vendor/pdoc/lib/pdoc/generators/html/page.rb +0 -71
  35. data/vendor/pdoc/lib/pdoc/generators/html/syntax_highlighter.rb +0 -41
  36. data/vendor/pdoc/lib/pdoc/generators/html/template.rb +0 -37
  37. data/vendor/pdoc/lib/pdoc/generators/html/website.rb +0 -194
  38. data/vendor/pdoc/lib/pdoc/generators/json.rb +0 -15
  39. data/vendor/pdoc/lib/pdoc/generators/pythonesque.rb +0 -105
  40. data/vendor/pdoc/lib/pdoc/models.rb +0 -47
  41. data/vendor/pdoc/lib/pdoc/models/argument.rb +0 -37
  42. data/vendor/pdoc/lib/pdoc/models/base.rb +0 -107
  43. data/vendor/pdoc/lib/pdoc/models/callable.rb +0 -19
  44. data/vendor/pdoc/lib/pdoc/models/class.rb +0 -28
  45. data/vendor/pdoc/lib/pdoc/models/class_method.rb +0 -18
  46. data/vendor/pdoc/lib/pdoc/models/class_property.rb +0 -9
  47. data/vendor/pdoc/lib/pdoc/models/constant.rb +0 -9
  48. data/vendor/pdoc/lib/pdoc/models/constructor.rb +0 -14
  49. data/vendor/pdoc/lib/pdoc/models/container.rb +0 -114
  50. data/vendor/pdoc/lib/pdoc/models/entity.rb +0 -54
  51. data/vendor/pdoc/lib/pdoc/models/instance_method.rb +0 -18
  52. data/vendor/pdoc/lib/pdoc/models/instance_property.rb +0 -9
  53. data/vendor/pdoc/lib/pdoc/models/mixin.rb +0 -10
  54. data/vendor/pdoc/lib/pdoc/models/namespace.rb +0 -10
  55. data/vendor/pdoc/lib/pdoc/models/root.rb +0 -27
  56. data/vendor/pdoc/lib/pdoc/models/section.rb +0 -19
  57. data/vendor/pdoc/lib/pdoc/models/signature.rb +0 -27
  58. data/vendor/pdoc/lib/pdoc/models/utility.rb +0 -11
  59. data/vendor/pdoc/lib/pdoc/parser.rb +0 -109
  60. data/vendor/pdoc/lib/pdoc/parser/argument_description_nodes.rb +0 -21
  61. data/vendor/pdoc/lib/pdoc/parser/basic_nodes.rb +0 -31
  62. data/vendor/pdoc/lib/pdoc/parser/description_nodes.rb +0 -42
  63. data/vendor/pdoc/lib/pdoc/parser/documentation_nodes.rb +0 -483
  64. data/vendor/pdoc/lib/pdoc/parser/ebnf_arguments_nodes.rb +0 -58
  65. data/vendor/pdoc/lib/pdoc/parser/ebnf_expression_nodes.rb +0 -227
  66. data/vendor/pdoc/lib/pdoc/parser/fragment.rb +0 -55
  67. data/vendor/pdoc/lib/pdoc/parser/section_content_nodes.rb +0 -19
  68. data/vendor/pdoc/lib/pdoc/parser/tags_nodes.rb +0 -14
  69. data/vendor/pdoc/lib/pdoc/parser/treetop_files/argument_description.treetop +0 -31
  70. data/vendor/pdoc/lib/pdoc/parser/treetop_files/basic.treetop +0 -41
  71. data/vendor/pdoc/lib/pdoc/parser/treetop_files/description.treetop +0 -7
  72. data/vendor/pdoc/lib/pdoc/parser/treetop_files/documentation.treetop +0 -75
  73. data/vendor/pdoc/lib/pdoc/parser/treetop_files/ebnf_arguments.treetop +0 -33
  74. data/vendor/pdoc/lib/pdoc/parser/treetop_files/ebnf_expression.treetop +0 -70
  75. data/vendor/pdoc/lib/pdoc/parser/treetop_files/ebnf_javascript.treetop +0 -54
  76. data/vendor/pdoc/lib/pdoc/parser/treetop_files/events.treetop +0 -17
  77. data/vendor/pdoc/lib/pdoc/parser/treetop_files/section_content.treetop +0 -8
  78. data/vendor/pdoc/lib/pdoc/parser/treetop_files/tags.treetop +0 -31
  79. data/vendor/pdoc/lib/pdoc/runner.rb +0 -110
  80. data/vendor/pdoc/lib/pdoc/treemaker.rb +0 -94
  81. data/vendor/pdoc/pdoc.gemspec +0 -31
  82. data/vendor/pdoc/templates/html/assets/images/pdoc/alias.png +0 -0
  83. data/vendor/pdoc/templates/html/assets/images/pdoc/class.png +0 -0
  84. data/vendor/pdoc/templates/html/assets/images/pdoc/class_deprecated.png +0 -0
  85. data/vendor/pdoc/templates/html/assets/images/pdoc/class_method.png +0 -0
  86. data/vendor/pdoc/templates/html/assets/images/pdoc/class_property.png +0 -0
  87. data/vendor/pdoc/templates/html/assets/images/pdoc/constant.png +0 -0
  88. data/vendor/pdoc/templates/html/assets/images/pdoc/constructor.png +0 -0
  89. data/vendor/pdoc/templates/html/assets/images/pdoc/deprecated.png +0 -0
  90. data/vendor/pdoc/templates/html/assets/images/pdoc/description.png +0 -0
  91. data/vendor/pdoc/templates/html/assets/images/pdoc/information.png +0 -0
  92. data/vendor/pdoc/templates/html/assets/images/pdoc/instance_method.png +0 -0
  93. data/vendor/pdoc/templates/html/assets/images/pdoc/instance_property.png +0 -0
  94. data/vendor/pdoc/templates/html/assets/images/pdoc/method.png +0 -0
  95. data/vendor/pdoc/templates/html/assets/images/pdoc/method_deprecated.png +0 -0
  96. data/vendor/pdoc/templates/html/assets/images/pdoc/mixin.png +0 -0
  97. data/vendor/pdoc/templates/html/assets/images/pdoc/namespace.png +0 -0
  98. data/vendor/pdoc/templates/html/assets/images/pdoc/property.png +0 -0
  99. data/vendor/pdoc/templates/html/assets/images/pdoc/related_to.png +0 -0
  100. data/vendor/pdoc/templates/html/assets/images/pdoc/search-background.png +0 -0
  101. data/vendor/pdoc/templates/html/assets/images/pdoc/section-background.png +0 -0
  102. data/vendor/pdoc/templates/html/assets/images/pdoc/section.png +0 -0
  103. data/vendor/pdoc/templates/html/assets/images/pdoc/selected-section-background.png +0 -0
  104. data/vendor/pdoc/templates/html/assets/images/pdoc/subclass.png +0 -0
  105. data/vendor/pdoc/templates/html/assets/images/pdoc/superclass.png +0 -0
  106. data/vendor/pdoc/templates/html/assets/images/pdoc/utility.png +0 -0
  107. data/vendor/pdoc/templates/html/assets/javascripts/pdoc/application.js +0 -478
  108. data/vendor/pdoc/templates/html/assets/javascripts/pdoc/prototype.js +0 -4874
  109. data/vendor/pdoc/templates/html/assets/javascripts/pdoc/tabs.js +0 -506
  110. data/vendor/pdoc/templates/html/assets/stylesheets/pdoc/api.css +0 -677
  111. data/vendor/pdoc/templates/html/assets/stylesheets/pdoc/pygments.css +0 -62
  112. data/vendor/pdoc/templates/html/helpers.rb +0 -35
  113. data/vendor/pdoc/templates/html/index.erb +0 -18
  114. data/vendor/pdoc/templates/html/item_index.js.erb +0 -6
  115. data/vendor/pdoc/templates/html/layout.erb +0 -67
  116. data/vendor/pdoc/templates/html/leaf.erb +0 -22
  117. data/vendor/pdoc/templates/html/node.erb +0 -30
  118. data/vendor/pdoc/templates/html/partials/class_relationships.erb +0 -19
  119. data/vendor/pdoc/templates/html/partials/classes.erb +0 -7
  120. data/vendor/pdoc/templates/html/partials/constructor.erb +0 -5
  121. data/vendor/pdoc/templates/html/partials/description.erb +0 -5
  122. data/vendor/pdoc/templates/html/partials/link_list.erb +0 -1
  123. data/vendor/pdoc/templates/html/partials/method_signatures.erb +0 -14
  124. data/vendor/pdoc/templates/html/partials/methodized_note.erb +0 -9
  125. data/vendor/pdoc/templates/html/partials/mixins.erb +0 -7
  126. data/vendor/pdoc/templates/html/partials/namespaces.erb +0 -7
  127. data/vendor/pdoc/templates/html/partials/related_utilities.erb +0 -5
  128. data/vendor/pdoc/templates/html/partials/relationships.erb +0 -11
  129. data/vendor/pdoc/templates/html/partials/short_description_list.erb +0 -7
  130. data/vendor/pdoc/templates/html/partials/title.erb +0 -22
  131. data/vendor/pdoc/templates/html/section.erb +0 -18
  132. data/vendor/pdoc/test/fixtures/ajax.js +0 -809
  133. data/vendor/pdoc/test/fixtures/prototype.js +0 -5789
  134. data/vendor/pdoc/test/fixtures/test.txt +0 -1
  135. data/vendor/pdoc/test/fixtures/text.txt +0 -13
  136. data/vendor/pdoc/test/unit/parser/argument_description_test.rb +0 -40
  137. data/vendor/pdoc/test/unit/parser/basic_test.rb +0 -55
  138. data/vendor/pdoc/test/unit/parser/description_test.rb +0 -34
  139. data/vendor/pdoc/test/unit/parser/documentation_test.rb +0 -520
  140. data/vendor/pdoc/test/unit/parser/ebnf_arguments_test.rb +0 -81
  141. data/vendor/pdoc/test/unit/parser/ebnf_expression_test.rb +0 -382
  142. data/vendor/pdoc/test/unit/parser/ebnf_javascript_test.rb +0 -37
  143. data/vendor/pdoc/test/unit/parser/events_test.rb +0 -27
  144. data/vendor/pdoc/test/unit/parser/section_content_test.rb +0 -44
  145. data/vendor/pdoc/test/unit/parser/tags_test.rb +0 -39
  146. data/vendor/pdoc/test/unit/parser/test_fragment.rb +0 -80
  147. data/vendor/pdoc/test/unit/parser_test_helper.rb +0 -62
  148. data/vendor/pdoc/test/unit/runner/basic_test.rb +0 -14
  149. data/vendor/pdoc/test/unit/templates/html_helpers_test.rb +0 -25
  150. data/vendor/pdoc/vendor/albino.rb +0 -122
  151. data/vendor/pdoc/website/html/documentation.html +0 -280
  152. data/vendor/pdoc/website/html/images/pdoc.jpg +0 -0
  153. data/vendor/pdoc/website/html/index.html +0 -84
  154. data/vendor/pdoc/website/html/stylesheets/main.css +0 -73
  155. data/vendor/pdoc/website/html/stylesheets/reset.css +0 -18
  156. data/vendor/pdoc/website/markdown/syntax.markdown +0 -226
  157. data/yuicompressor-2.4.6.zip +0 -0
@@ -1,194 +0,0 @@
1
- module PDoc
2
- module Generators
3
- module Html
4
-
5
- unless defined? TEMPLATES_DIRECTORY
6
- TEMPLATES_DIRECTORY = File.join(TEMPLATES_DIR, "html")
7
- end
8
-
9
- class Website < AbstractGenerator
10
-
11
- include Helpers::BaseHelper
12
- include Helpers::LinkHelper
13
-
14
- class << Website
15
- attr_accessor :syntax_highlighter
16
- attr_accessor :markdown_parser
17
- def pretty_urls?
18
- !!@pretty_urls
19
- end
20
-
21
- def pretty_urls=(boolean)
22
- @pretty_urls = boolean
23
- end
24
- end
25
- attr_reader :templates_directory, :custom_assets, :index_page
26
- def initialize(parser_output, options = {})
27
- super
28
- @templates_directory = File.expand_path(options[:templates] || TEMPLATES_DIRECTORY)
29
- @index_page = options[:index_page] && File.expand_path(options[:index_page])
30
- @custom_assets = @options[:assets] && File.expand_path(@options[:assets])
31
- self.class.syntax_highlighter = SyntaxHighlighter.new(options[:syntax_highlighter])
32
- self.class.pretty_urls = options[:pretty_urls]
33
- set_markdown_parser(options[:markdown_parser])
34
- load_custom_helpers
35
- end
36
-
37
- def set_markdown_parser(parser = nil)
38
- parser = :rdiscount if parser.nil?
39
- case parser.to_sym
40
- when :rdiscount
41
- require 'rdiscount'
42
- self.class.markdown_parser = RDiscount
43
- when :bluecloth
44
- require 'bluecloth'
45
- self.class.markdown_parser = BlueCloth
46
- when :maruku
47
- require 'maruku'
48
- self.class.markdown_parser = Maruku
49
- else
50
- raise "Requested unsupported Markdown parser: #{parser}."
51
- end
52
- end
53
-
54
- def load_custom_helpers
55
- begin
56
- require File.join(templates_directory, "helpers")
57
- rescue LoadError => e
58
- return nil
59
- end
60
- self.class.__send__(:include, Helpers::BaseHelper)
61
- Page.__send__(:include, Helpers::BaseHelper)
62
- Helpers.constants.map(&Helpers.method(:const_get)).each(&DocPage.method(:include))
63
- end
64
-
65
- # Generates the website to the specified directory.
66
- def render(output)
67
- @depth = 0
68
- path = File.expand_path(output)
69
- FileUtils.mkdir_p(path)
70
- Dir.chdir(path) do
71
-
72
- render_index
73
- copy_assets
74
- copy_custom_assets
75
-
76
- render_children(root)
77
- if root.sections?
78
- root.sections.each do |section|
79
- @depth = 0
80
- render_template('section', { :doc_instance => section })
81
- end
82
- end
83
-
84
- dest = File.join("javascripts", "pdoc", "item_index.js")
85
- DocPage.new("item_index.js", false, variables).render_to_file(dest)
86
- end
87
- end
88
-
89
- def render_index
90
- vars = variables.merge(:index_page_content => index_page_content, :home => true)
91
- DocPage.new('index', 'layout', vars).render_to_file('index.html')
92
- end
93
-
94
- def render_template(template, var = {})
95
- @depth += 1
96
- doc = var[:doc_instance]
97
- dest = doc.url(File::SEPARATOR)
98
- puts " Rendering #{dest}..."
99
- FileUtils.mkdir_p(dest)
100
- DocPage.new(template, variables.merge(var)).render_to_file(File.join(dest, 'index.html'))
101
- render_json("#{dest}.json", doc) if json_api?
102
- render_children(doc)
103
- @depth -= 1
104
- end
105
-
106
- def render_json(dest, obj)
107
- open(dest, 'w') { |file| file << obj.to_json }
108
- end
109
-
110
- def render_children(obj)
111
- [:namespaces, :classes, :mixins].each do |prop|
112
- obj.send(prop).each(&method(:render_node)) if obj.respond_to?(prop)
113
- end
114
-
115
- obj.utilities.each(&method(:render_leaf)) if obj.respond_to?(:utilities)
116
- render_leaf(obj.constructor) if obj.respond_to?(:constructor) && obj.constructor
117
-
118
- [:instance_methods, :instance_properties, :class_methods, :class_properties, :constants].each do |prop|
119
- obj.send(prop).each(&method(:render_leaf)) if obj.respond_to?(prop)
120
- end
121
- end
122
-
123
- # Copies the content of the assets folder to the generated website's
124
- # root directory.
125
- def copy_assets
126
- FileUtils.cp_r(Dir.glob(File.join(templates_directory, "assets", "**")), '.')
127
- end
128
-
129
- def copy_custom_assets
130
- if custom_assets
131
- FileUtils.cp_r(Dir.glob(File.join(custom_assets, "**")), ".")
132
- end
133
- end
134
-
135
- def render_leaf(object)
136
- is_proto_prop = is_proto_prop?(object)
137
- @depth += 1 if is_proto_prop
138
- render_template('leaf', { :doc_instance => object })
139
- @depth -= 1 if is_proto_prop
140
- end
141
-
142
- def render_node(object)
143
- render_template('node', { :doc_instance => object })
144
- end
145
-
146
- private
147
- def variables
148
- {
149
- :root => root,
150
- :depth => @depth,
151
- :templates_directory => templates_directory,
152
- :name => @options[:name],
153
- :short_name => @options[:short_name] || @options[:name],
154
- :home_url => @options[:home_url],
155
- :version => @options[:version],
156
- :footer => footer,
157
- :index_header => index_header,
158
- :header => header,
159
- :timestamp => timestamp
160
- }
161
- end
162
-
163
- def header
164
- @header ||= @options[:header] ? htmlize(@options[:header]) : ''
165
- end
166
-
167
- def index_header
168
- @index_header ||= @options[:index_header] ? htmlize(@options[:index_header]) : ''
169
- end
170
-
171
- def footer
172
- @footer ||= @options[:footer] ? htmlize(@options[:footer]) : ''
173
- end
174
-
175
- def timestamp
176
- @timestamp ||= @options[:timestamp] == false ? nil : Time.now.utc
177
- end
178
-
179
- def json_api?
180
- !!options[:json_api]
181
- end
182
-
183
- def is_proto_prop?(object)
184
- object.is_a?(Models::InstanceMethod) ||
185
- object.is_a?(Models::InstanceProperty)
186
- end
187
-
188
- def index_page_content
189
- @index_page ? htmlize(File.read(@index_page)) : nil
190
- end
191
- end
192
- end
193
- end
194
- end
@@ -1,15 +0,0 @@
1
- require 'json'
2
- module PDoc
3
- module Generators
4
- class JSON < AbstractGenerator
5
- def render(output)
6
- open(output, "w+") do |file|
7
- json = root.registry.map do |k, obj|
8
- "#{k.inspect}: #{obj.to_json}"
9
- end.join(",\n ")
10
- file << "{\n #{json}\n}"
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,105 +0,0 @@
1
- module PDoc
2
- module Generators
3
- class Pythonesque < AbstractGenerator
4
- def render(output)
5
- open(output, "w+") do |file|
6
- file << render_to_str
7
- end
8
- end
9
-
10
- def render_to_str
11
- selected_objects.map do |k, obj|
12
- js_name = to_js_name(obj)
13
- desc = Description.new(obj).to_escaped_str
14
- " #{js_name}.__doc__ = '#{desc}';"
15
- end.join("\n")
16
- end
17
-
18
- def to_js_name(obj)
19
- if obj.is_a?(Models::InstanceMethod)
20
- obj.full_name.sub('#', '.prototype.')
21
- else
22
- obj.full_name
23
- end
24
- end
25
-
26
- def selected_objects
27
- root.registry.select do |k, v|
28
- (v.is_a?(Models::InstanceMethod) ||
29
- v.is_a?(Models::ClassMethod) ||
30
- v.is_a?(Models::Mixin) ||
31
- v.is_a?(Models::Class) ||
32
- v.is_a?(Models::Namespace) ||
33
- v.is_a?(Models::Utility)) && !v.alias?
34
- end
35
- end
36
-
37
- class Description
38
- JS_ESCAPE_MAP = {
39
- '\\' => '\\\\',
40
- '</' => '<\/',
41
- "\r\n" => '\n',
42
- "\n" => '\n',
43
- "\r" => '\n',
44
- '"' => '\\"',
45
- "'" => "\\'"
46
- }
47
-
48
- attr_reader :obj
49
- def initialize(obj)
50
- @obj = obj
51
- end
52
-
53
- def to_str
54
- return "#{obj.full_name} has been deprecated." if obj.deprecated?
55
- results = []
56
- results << sig
57
- results << args if obj.respond_to?(:arguments) && obj.arguments?
58
- results << desc
59
- results << aliases if obj.aliases?
60
- if obj.respond_to?(:constructor) && obj.constructor
61
- results << "\nWhen called as a constructor:\n"
62
- results << Description.new(obj.constructor).to_str
63
- end
64
- results.join("\n")
65
- end
66
-
67
- def to_escaped_str
68
- escape(to_str)
69
- end
70
-
71
- private
72
- def escape(str)
73
- str.gsub(/(\\|<\/|\r\n|[\n\r"'])/) {
74
- JS_ESCAPE_MAP[$1]
75
- }
76
- end
77
-
78
- def sig
79
- if obj.signatures?
80
- obj.signatures.map do |s|
81
- s.return_value ? "#{s.name} -> #{s.return_value}" : s.name
82
- end.join("\n")
83
- else
84
- obj.full_name
85
- end
86
- end
87
-
88
- def aliases
89
- aliases = obj.aliases.map { |a| a.full_name }.join(', ')
90
- "Aliased as: #{aliases}."
91
- end
92
-
93
- def args
94
- obj.arguments.map do |a|
95
- " - #{a.name} (#{a.types.join(' | ')}): #{a.description.chomp}"
96
- end.join("\n")
97
- end
98
-
99
- def desc
100
- obj.short_description ? obj.short_description : ''
101
- end
102
- end
103
- end
104
- end
105
- end
@@ -1,47 +0,0 @@
1
- $:.unshift(File.dirname(__FILE__), 'models')
2
-
3
- require 'models/base'
4
- require 'models/entity'
5
- require 'models/container'
6
- require 'models/callable'
7
- require 'models/section'
8
- require 'models/root'
9
- require 'models/argument'
10
- require 'models/class'
11
- require 'models/class_method'
12
- require 'models/class_property'
13
- require 'models/constant'
14
- require 'models/constructor'
15
- require 'models/instance_method'
16
- require 'models/instance_property'
17
- require 'models/mixin'
18
- require 'models/namespace'
19
- require 'models/signature'
20
- require 'models/utility'
21
-
22
- module PDoc
23
- module Models
24
- class << Models
25
- attr_accessor :src_code_href
26
- attr_accessor :doc_href
27
- end
28
-
29
- class Base
30
- @@subclasses_by_type = {
31
- 'section' => Section,
32
- 'argument' => Argument,
33
- 'class' => Class,
34
- 'class method' => ClassMethod,
35
- 'class property' => ClassProperty,
36
- 'constant' => Constant,
37
- 'constructor' => Constructor,
38
- 'instance method' => InstanceMethod,
39
- 'instance property' => InstanceProperty,
40
- 'mixin' => Mixin,
41
- 'namespace' => Namespace,
42
- 'signature' => Signature,
43
- 'utility' => Utility
44
- }
45
- end
46
- end
47
- end
@@ -1,37 +0,0 @@
1
- module PDoc
2
- module Models
3
- class Argument < Base
4
- attr_reader :name
5
- attr_reader :default_value
6
-
7
- def attach_to_parent(parent)
8
- parent.arguments << self
9
- end
10
-
11
- # returns the argument's id in the form
12
- # method_id:argument_name. So, for example:
13
- # document.querySelectorAll:cssSelector
14
- def id
15
- @id ||= "#{parent.id}:#{name}"
16
- end
17
-
18
- def optional?
19
- !!@optional
20
- end
21
-
22
- def types
23
- @types ||= []
24
- end
25
-
26
- def to_hash
27
- {
28
- :name => name,
29
- :description => description,
30
- :default_value => default_value,
31
- :optional => optional?,
32
- :types => types
33
- }
34
- end
35
- end
36
- end
37
- end
@@ -1,107 +0,0 @@
1
- module PDoc
2
- module Models
3
- class Base
4
- @@subclasses_by_type = {}
5
-
6
- def self.instantiate(attributes)
7
- @@subclasses_by_type[attributes['type']].new(attributes)
8
- end
9
-
10
- attr_accessor :parent
11
- attr_reader :description
12
- attr_reader :id
13
- attr_reader :type
14
- attr_reader :file
15
- attr_reader :line_number
16
-
17
- def initialize(attributes = {})
18
- attributes.each { |k, v| instance_variable_set("@#{k}", v) }
19
- end
20
-
21
- def register_on(registry)
22
- registry[id] = self
23
- end
24
-
25
- def short_description
26
- @short_description ||= description.split(/\n\n/).first
27
- end
28
-
29
- def deprecated?
30
- return !!@deprecated if @deprecated
31
- parent.respond_to?(:deprecated?) ? parent.deprecated? : false
32
- end
33
-
34
- def full_name
35
- @id
36
- end
37
-
38
- def name
39
- @name ||= @id.match(/[\w\d\$]+$/)[0]
40
- end
41
-
42
- def ancestor_of?(obj)
43
- while obj = obj.parent
44
- return true if obj == self
45
- end
46
- false
47
- end
48
-
49
- def descendant_of?(obj)
50
- obj.ancestor_of?(self)
51
- end
52
-
53
- def doc_href
54
- proc = Models.doc_href
55
- @doc_href ||= proc ? proc.call(self) : nil
56
- end
57
-
58
- def url(separator = '/')
59
- result = []
60
- obj = self
61
- begin
62
- result << obj.normalized_name
63
- if obj.is_a?(Models::InstanceMethod) || obj.is_a?(Models::InstanceProperty)
64
- result << 'prototype'
65
- end
66
- obj = obj.parent
67
- end until obj.is_a?(Models::Root)
68
- result.reverse.join(separator)
69
- end
70
-
71
- def to_hash
72
- {
73
- :deprecated => deprecated?,
74
- :id => id,
75
- :type => type,
76
- :description => description,
77
- :short_description => short_description,
78
- :parent => parent.is_a?(Models::Root) ? nil : parent.id,
79
- :doc_href => doc_href
80
- }
81
- end
82
-
83
- def to_json(*args)
84
- to_hash.to_json(*args)
85
- end
86
-
87
- def normalized_name
88
- @normalized_name ||= name.gsub(/(^\$+$)|(^\$+)|(\$+$)|(\$+)/) do |m|
89
- dollar = Array.new(m.length, 'dollar').join('-')
90
- if $1
91
- dollar
92
- elsif $2
93
- "#{dollar}-"
94
- elsif $3
95
- "-#{dollar}"
96
- elsif $4
97
- "-#{dollar}-"
98
- end
99
- end
100
- end
101
-
102
- def inspect
103
- "#<#{self.class} #{id}>"
104
- end
105
- end
106
- end
107
- end