custom_elements_manifest_parser 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +66 -0
- data/LICENSE.txt +21 -0
- data/README.md +244 -0
- data/Rakefile +23 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/custom_elements_manifest_parser.gemspec +43 -0
- data/lib/custom_elements_manifest_parser/base_struct.rb +10 -0
- data/lib/custom_elements_manifest_parser/data_types/attribute.rb +57 -0
- data/lib/custom_elements_manifest_parser/data_types/css_custom_property.rb +47 -0
- data/lib/custom_elements_manifest_parser/data_types/css_part.rb +32 -0
- data/lib/custom_elements_manifest_parser/data_types/demo.rb +29 -0
- data/lib/custom_elements_manifest_parser/data_types/event.rb +40 -0
- data/lib/custom_elements_manifest_parser/data_types/function_return_type.rb +25 -0
- data/lib/custom_elements_manifest_parser/data_types/parameter.rb +33 -0
- data/lib/custom_elements_manifest_parser/data_types/reference.rb +36 -0
- data/lib/custom_elements_manifest_parser/data_types/resolve_initializer.rb +16 -0
- data/lib/custom_elements_manifest_parser/data_types/slot.rb +31 -0
- data/lib/custom_elements_manifest_parser/data_types/source_reference.rb +17 -0
- data/lib/custom_elements_manifest_parser/data_types/type.rb +34 -0
- data/lib/custom_elements_manifest_parser/data_types/type_reference.rb +22 -0
- data/lib/custom_elements_manifest_parser/nodes/class_declaration.rb +39 -0
- data/lib/custom_elements_manifest_parser/nodes/class_field.rb +50 -0
- data/lib/custom_elements_manifest_parser/nodes/class_method.rb +55 -0
- data/lib/custom_elements_manifest_parser/nodes/custom_element_export.rb +52 -0
- data/lib/custom_elements_manifest_parser/nodes/custom_element_field.rb +23 -0
- data/lib/custom_elements_manifest_parser/nodes/function_declaration.rb +39 -0
- data/lib/custom_elements_manifest_parser/nodes/javascript_export.rb +59 -0
- data/lib/custom_elements_manifest_parser/nodes/javascript_module.rb +58 -0
- data/lib/custom_elements_manifest_parser/nodes/manifest.rb +36 -0
- data/lib/custom_elements_manifest_parser/nodes/mixin_declaration.rb +93 -0
- data/lib/custom_elements_manifest_parser/nodes/variable_declaration.rb +41 -0
- data/lib/custom_elements_manifest_parser/parser.rb +111 -0
- data/lib/custom_elements_manifest_parser/structs/class_like_struct.rb +92 -0
- data/lib/custom_elements_manifest_parser/structs/custom_element_like_struct.rb +64 -0
- data/lib/custom_elements_manifest_parser/structs/declarable_node_struct.rb +19 -0
- data/lib/custom_elements_manifest_parser/structs/function_like_struct.rb +40 -0
- data/lib/custom_elements_manifest_parser/structs/property_like_struct.rb +47 -0
- data/lib/custom_elements_manifest_parser/types.rb +13 -0
- data/lib/custom_elements_manifest_parser/version.rb +5 -0
- data/lib/custom_elements_manifest_parser.rb +12 -0
- data/sig/custom_elements_manifest_parser.rbs +4 -0
- metadata +133 -0
@@ -0,0 +1,32 @@
|
|
1
|
+
|
2
|
+
require_relative "../base_struct.rb"
|
3
|
+
require_relative "../types.rb"
|
4
|
+
|
5
|
+
module CustomElementsManifestParser
|
6
|
+
module DataTypes
|
7
|
+
# The name + description of a CSS Part
|
8
|
+
class CssPart < BaseStruct
|
9
|
+
# @!attribute name
|
10
|
+
# @return [String] - Name of the CSS part
|
11
|
+
attribute :name, Types::Strict::String
|
12
|
+
|
13
|
+
# @!attribute summary
|
14
|
+
# @return [nil, String] - A markdown summary suitable for display in a listing.
|
15
|
+
attribute :summary, Types::Strict::String.optional.meta(required: false)
|
16
|
+
|
17
|
+
# @!attribute description
|
18
|
+
# @return [nil, String] - A markdown description.
|
19
|
+
attribute :description, Types::Strict::String.optional.meta(required: false)
|
20
|
+
|
21
|
+
# @!attribute deprecated
|
22
|
+
# @return [nil, Boolean, String] -
|
23
|
+
# Whether the CSS shadow part is deprecated.
|
24
|
+
# If the value is a string, it's the reason for the deprecation.
|
25
|
+
attribute :deprecated, Types::Strict::String.optional | Types::Strict::Bool.optional.meta(required: false)
|
26
|
+
|
27
|
+
def visit(parser:)
|
28
|
+
self
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative "../base_struct.rb"
|
2
|
+
require_relative "../types.rb"
|
3
|
+
|
4
|
+
module CustomElementsManifestParser
|
5
|
+
module DataTypes
|
6
|
+
# Links to a demo of the element
|
7
|
+
class Demo < BaseStruct
|
8
|
+
# @!attribute url
|
9
|
+
# @return [String] -
|
10
|
+
# Relative URL of the demo if it's published with the package. Absolute URL
|
11
|
+
# if it's hosted.
|
12
|
+
attribute :url, Types::Strict::String
|
13
|
+
|
14
|
+
# @!attribute description
|
15
|
+
# @return [String, nil] - A markdown description of the demo.
|
16
|
+
attribute :description, Types::Strict::String.optional.meta(required: false)
|
17
|
+
|
18
|
+
# @!attribute source
|
19
|
+
# @return [SourceReference, nil]
|
20
|
+
attribute :source, Types::Nominal::Any.optional.meta(required: false)
|
21
|
+
|
22
|
+
def visit(parser:)
|
23
|
+
hash = {}
|
24
|
+
hash[:source] = parser.data_types[:source].new(source).visit(parser: parser) if source
|
25
|
+
new(hash)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require_relative "../base_struct.rb"
|
2
|
+
require_relative "../types.rb"
|
3
|
+
|
4
|
+
module CustomElementsManifestParser
|
5
|
+
module DataTypes
|
6
|
+
# Documents events on a custom element
|
7
|
+
class Event < BaseStruct
|
8
|
+
# @!attribute name
|
9
|
+
# @return [String] - Name of the event
|
10
|
+
attribute :name, Types::Strict::String
|
11
|
+
|
12
|
+
# @!attribute type
|
13
|
+
# @return [Type] - The type of the event object that's fired.
|
14
|
+
attribute :type, Types::Nominal::Any.optional.meta(required: false)
|
15
|
+
|
16
|
+
# @param summary [nil, String] - A markdown summary suitable for display in a listing.
|
17
|
+
attribute :summary, Types::Strict::String.optional.meta(required: false)
|
18
|
+
|
19
|
+
# @!attribute description
|
20
|
+
# @return [nil, String] - A markdown description.
|
21
|
+
attribute :description, Types::Strict::String.optional.meta(required: false)
|
22
|
+
|
23
|
+
# @!attribute inheritedFrom
|
24
|
+
# @return [nil, Reference]
|
25
|
+
attribute :inheritedFrom, Types::Nominal::Any.optional.meta(required: false)
|
26
|
+
|
27
|
+
# @!attribute deprecated
|
28
|
+
# @return [nil, Boolean, String]
|
29
|
+
# Whether the event is deprecated.
|
30
|
+
# If the value is a string, it's the reason for the deprecation.
|
31
|
+
attribute :deprecated, Types::Strict::String.optional | Types::Strict::Bool.optional.meta(required: false)
|
32
|
+
|
33
|
+
def visit(parser:)
|
34
|
+
hash = {}
|
35
|
+
hash[:type] = parser.data_types[:type].new(type).visit(parser: parser) if type
|
36
|
+
new(hash)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative "../base_struct.rb"
|
2
|
+
require_relative "../types.rb"
|
3
|
+
|
4
|
+
module CustomElementsManifestParser
|
5
|
+
module DataTypes
|
6
|
+
# Abstract class for documenting a FunctionReturnType
|
7
|
+
class FunctionReturnType < BaseStruct
|
8
|
+
# @!attribute type
|
9
|
+
# @return [Type, nil] - The type of the function return
|
10
|
+
attribute :type, Types::Strict::String | Types::Strict::Hash.optional.meta(required: false)
|
11
|
+
|
12
|
+
# @!attribute summary
|
13
|
+
# @return [String, nil] Summary of the function return
|
14
|
+
attribute :summary, Types::Strict::String.optional.meta(required: false)
|
15
|
+
|
16
|
+
# @!attribute description
|
17
|
+
# @return [String, nil] Description of the function return
|
18
|
+
attribute :description, Types::Strict::String.optional.meta(required: false)
|
19
|
+
|
20
|
+
def visit(parser:)
|
21
|
+
self
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require_relative "../structs/property_like_struct.rb"
|
2
|
+
|
3
|
+
require_relative "../base_struct.rb"
|
4
|
+
require_relative "../types.rb"
|
5
|
+
|
6
|
+
module CustomElementsManifestParser
|
7
|
+
module DataTypes
|
8
|
+
# Documents a parameter on a function
|
9
|
+
class Parameter < BaseStruct
|
10
|
+
# @!parse include Structs::PropertyLikeStruct
|
11
|
+
attributes_from Structs::PropertyLikeStruct
|
12
|
+
|
13
|
+
# @!attribute optional
|
14
|
+
# @return [Boolean, nil] - Whether the parameter is optional. Undefined implies non-optional.
|
15
|
+
attribute :optional, Types::Strict::Bool.optional.meta(required: false)
|
16
|
+
|
17
|
+
# @!attribute rest
|
18
|
+
# @return [Boolean, nil] -
|
19
|
+
# Whether the parameter is a rest parameter. Only the last parameter may be a rest parameter.
|
20
|
+
# Undefined implies single parameter.
|
21
|
+
attribute :rest, Types::Strict::Bool.optional.meta(required: false)
|
22
|
+
|
23
|
+
def visit(parser:)
|
24
|
+
hash = {}
|
25
|
+
|
26
|
+
hash = hash.merge(
|
27
|
+
Structs::PropertyLikeStruct.build_hash(parser: parser, struct: self)
|
28
|
+
)
|
29
|
+
new(hash)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require_relative "../base_struct.rb"
|
2
|
+
require_relative "../types.rb"
|
3
|
+
|
4
|
+
module CustomElementsManifestParser
|
5
|
+
module DataTypes
|
6
|
+
# A reference to an export of a module.
|
7
|
+
#
|
8
|
+
# All references are required to be publically accessible, so the canonical
|
9
|
+
# representation of a reference is the export it's available from.
|
10
|
+
#
|
11
|
+
# `package` should generally refer to an npm package name. If `package` is
|
12
|
+
# undefined then the reference is local to this package. If `module` is
|
13
|
+
# undefined the reference is local to the containing module.
|
14
|
+
#
|
15
|
+
# References to global symbols like `Array`, `HTMLElement`, or `Event` should
|
16
|
+
# use a `package` name of `"global:"`.
|
17
|
+
#
|
18
|
+
class Reference < BaseStruct
|
19
|
+
# @!attribute name
|
20
|
+
# @return [String] - Name of the reference
|
21
|
+
attribute :name, Types::Strict::String
|
22
|
+
|
23
|
+
# @!attribute package
|
24
|
+
# @return [String, nil] - Name of the package
|
25
|
+
attribute :package, Types::Strict::String.optional.meta(required: false)
|
26
|
+
|
27
|
+
# @!attribute module
|
28
|
+
# @return [String, nil]
|
29
|
+
attribute :module, Types::Strict::String.optional.meta(required: false)
|
30
|
+
|
31
|
+
def visit(parser:)
|
32
|
+
self
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative "../base_struct.rb"
|
2
|
+
require_relative "../types.rb"
|
3
|
+
|
4
|
+
module CustomElementsManifestParser
|
5
|
+
module DataTypes
|
6
|
+
# This shouldn't be here, but was thrown up by CEM.
|
7
|
+
class ResolveInitializer < BaseStruct
|
8
|
+
# @return [String, nil]
|
9
|
+
attribute :module, Types::Strict::String.optional.meta(required: false)
|
10
|
+
|
11
|
+
def visit(parser:)
|
12
|
+
self
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative "../base_struct.rb"
|
2
|
+
require_relative "../types.rb"
|
3
|
+
|
4
|
+
module CustomElementsManifestParser
|
5
|
+
module DataTypes
|
6
|
+
# Documents slots for a custom element
|
7
|
+
class Slot < BaseStruct
|
8
|
+
# @!attribute name
|
9
|
+
# @return [String] - The slot name, or the empty string for an unnamed slot.
|
10
|
+
attribute :name, Types::Strict::String
|
11
|
+
|
12
|
+
# @!attribute summary
|
13
|
+
# @return [String, nil] - A markdown summary suitable for display in a listing.
|
14
|
+
attribute :summary, Types::Strict::String.optional.meta(required: false)
|
15
|
+
|
16
|
+
# @!attribute description
|
17
|
+
# @return [String, nil] - A markdown description.
|
18
|
+
attribute :description, Types::Strict::String.optional.meta(required: false)
|
19
|
+
|
20
|
+
# @!attribute deprecated
|
21
|
+
# @return [nil, Boolean, String] -
|
22
|
+
# Whether the slot is deprecated.
|
23
|
+
# If the value is a string, it's the reason for the deprecation.
|
24
|
+
attribute :deprecated, Types::Strict::String.optional | Types::Strict::Bool.optional.meta(required: false)
|
25
|
+
|
26
|
+
def visit(parser:)
|
27
|
+
self
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative "../base_struct.rb"
|
2
|
+
require_relative "../types.rb"
|
3
|
+
|
4
|
+
module CustomElementsManifestParser
|
5
|
+
module DataTypes
|
6
|
+
# Gets passed an href to an absolute URL to the source.
|
7
|
+
class SourceReference < BaseStruct
|
8
|
+
# @!attribute href
|
9
|
+
# @return [String] - An absolute URL to the source (ie. a GitHub URL).
|
10
|
+
attribute :href, Types::Strict::String
|
11
|
+
|
12
|
+
def visit(parser:)
|
13
|
+
self
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require_relative "../types.rb"
|
2
|
+
require_relative "../base_struct.rb"
|
3
|
+
|
4
|
+
module CustomElementsManifestParser
|
5
|
+
module DataTypes
|
6
|
+
# Documents a JSDoc, Closure, or TypeScript type.
|
7
|
+
class Type < BaseStruct
|
8
|
+
# @param text [String] -
|
9
|
+
# The full string representation of the type, in whatever type syntax is
|
10
|
+
# used, such as JSDoc, Closure, or TypeScript.
|
11
|
+
attribute :text, Types::Strict::String
|
12
|
+
|
13
|
+
# @!attribute references
|
14
|
+
# @return [nil, Array<TypeReference> -
|
15
|
+
# An array of references to the types in the type string.
|
16
|
+
# These references have optional indices into the type string so that tools
|
17
|
+
# can understand the references in the type string independently of the type
|
18
|
+
# system and syntax. For example, a documentation viewer could display the
|
19
|
+
# type `Array<FooElement | BarElement>` with cross-references to `FooElement`
|
20
|
+
# and `BarElement` without understanding arrays, generics, or union types.
|
21
|
+
attribute :references, Types::Strict::Array.optional.meta(required: false)
|
22
|
+
|
23
|
+
# @!attribute source
|
24
|
+
# @return [nil, SourceReference]
|
25
|
+
attribute :source, Types::Nominal::Any.optional.meta(required: false)
|
26
|
+
|
27
|
+
def visit(parser:)
|
28
|
+
hash = {}
|
29
|
+
hash[:references] = references.map { |reference| parser.data_types[:type_reference].new(reference).visit(parser: parser) } unless references.nil?
|
30
|
+
new(hash)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require_relative "./reference.rb"
|
2
|
+
require_relative "../types.rb"
|
3
|
+
|
4
|
+
module CustomElementsManifestParser
|
5
|
+
module DataTypes
|
6
|
+
# A reference that is associated with a type string and optionally a range
|
7
|
+
# within the string.
|
8
|
+
#
|
9
|
+
# Start and end must both be present or not present. If they're present, they
|
10
|
+
# are indices into the associated type string. If they are missing, the entire
|
11
|
+
# type string is the symbol referenced and the name should match the type
|
12
|
+
# string.
|
13
|
+
class TypeReference < Reference
|
14
|
+
# @param start [Integer, nil]
|
15
|
+
attribute :start, Types::Strict::Integer.optional.meta(required: false)
|
16
|
+
|
17
|
+
# @!attribute end
|
18
|
+
# @return [Integer, nil]
|
19
|
+
attribute :end, Types::Strict::Integer.optional.meta(required: false)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require_relative "../structs/declarable_node_struct.rb"
|
2
|
+
require_relative "../structs/custom_element_like_struct.rb"
|
3
|
+
|
4
|
+
require_relative "../base_struct.rb"
|
5
|
+
require_relative "../types.rb"
|
6
|
+
|
7
|
+
module CustomElementsManifestParser
|
8
|
+
module Nodes
|
9
|
+
# This is equivalent to CustomElementDeclaration.
|
10
|
+
class ClassDeclaration < BaseStruct
|
11
|
+
# @return ["class"]
|
12
|
+
def self.kind; 'class'; end
|
13
|
+
|
14
|
+
|
15
|
+
# @!parse include Structs::DeclarableNodeStruct
|
16
|
+
attributes_from Structs::DeclarableNodeStruct
|
17
|
+
|
18
|
+
# @!parse include Structs::CustomElementLikeStruct
|
19
|
+
attributes_from Structs::CustomElementLikeStruct
|
20
|
+
|
21
|
+
# @!attribute kind
|
22
|
+
# @return ["class"]
|
23
|
+
attribute :kind, Types.Value("class")
|
24
|
+
|
25
|
+
# @param parser [Parser] - Gets passed a parser
|
26
|
+
# @return [ClassDeclaration]
|
27
|
+
def visit(parser:)
|
28
|
+
hash = {}
|
29
|
+
|
30
|
+
hash = hash.merge(
|
31
|
+
Structs::DeclarableNodeStruct.build_hash(parser: parser, struct: self),
|
32
|
+
Structs::DeclarableNodeStruct.build_hash(parser: parser, struct: self)
|
33
|
+
)
|
34
|
+
|
35
|
+
new(hash)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require_relative "../structs/property_like_struct.rb"
|
2
|
+
require_relative "../structs/declarable_node_struct.rb"
|
3
|
+
|
4
|
+
require_relative "../base_struct.rb"
|
5
|
+
require_relative "../types.rb"
|
6
|
+
|
7
|
+
module CustomElementsManifestParser
|
8
|
+
module Nodes
|
9
|
+
# Documents a class property. This does not get used directly. Instead, it gets extended by CustomElementField.
|
10
|
+
class ClassField < BaseStruct
|
11
|
+
# @return ["field"]
|
12
|
+
def self.kind; "field"; end
|
13
|
+
|
14
|
+
# @!attribute kind
|
15
|
+
# @return ['field']
|
16
|
+
attribute :kind, Types.Value("field")
|
17
|
+
|
18
|
+
# @!attribute privacy
|
19
|
+
# @return ["protected", "public", "private", nil]
|
20
|
+
attribute :static, Types.privacy.optional.meta(required: false)
|
21
|
+
|
22
|
+
# @!attribute inheritedFrom
|
23
|
+
# @return [Reference, nil]
|
24
|
+
attribute :inheritedFrom, Types::Nominal::Any.optional.meta(required: false)
|
25
|
+
|
26
|
+
# @!attribute source
|
27
|
+
# @return [SourceReference, nil]
|
28
|
+
attribute :source, Types::Nominal::Any.optional.meta(required: false)
|
29
|
+
|
30
|
+
# @!parse include Structs::DeclarableNodeStruct
|
31
|
+
attributes_from Structs::DeclarableNodeStruct
|
32
|
+
|
33
|
+
# @!parse include Structs::PropertyLikeStruct
|
34
|
+
attributes_from Structs::PropertyLikeStruct
|
35
|
+
|
36
|
+
def visit(parser:)
|
37
|
+
hash = {}
|
38
|
+
hash[:inheritedFrom] = parser.data_types[:inherited_from].new(inheritedFrom).visit(parser: parser) unless inheritedFrom.nil?
|
39
|
+
hash[:source] = parser.data_types[:source].new(source).visit(parser: parser) unless source.nil?
|
40
|
+
|
41
|
+
hash = hash.merge(
|
42
|
+
Structs::DeclarableNodeStruct.build_hash(parser: parser, struct: struct),
|
43
|
+
Structs::PropertyLikeStruct.build_hash(parser: parser, struct: struct)
|
44
|
+
)
|
45
|
+
|
46
|
+
new(hash)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require_relative "../structs/declarable_node_struct.rb"
|
2
|
+
require_relative "../structs/function_like_struct.rb"
|
3
|
+
|
4
|
+
require_relative "../base_struct.rb"
|
5
|
+
require_relative "../types.rb"
|
6
|
+
|
7
|
+
module CustomElementsManifestParser
|
8
|
+
module Nodes
|
9
|
+
# Documents a method attached to a class
|
10
|
+
class ClassMethod < BaseStruct
|
11
|
+
|
12
|
+
# @!parse Structs::FunctionLikeStruct
|
13
|
+
attributes_from Structs::FunctionLikeStruct
|
14
|
+
|
15
|
+
# @!parse Structs::DeclarableNodeStruct
|
16
|
+
attributes_from Structs::DeclarableNodeStruct
|
17
|
+
|
18
|
+
# @return ["method"]
|
19
|
+
def self.kind; 'method'; end
|
20
|
+
|
21
|
+
# @!attribute kind
|
22
|
+
# @return ["method"]
|
23
|
+
attribute :kind, Types.Value("method")
|
24
|
+
|
25
|
+
# @!attribute static
|
26
|
+
# @return [Boolean, nil]
|
27
|
+
attribute :static, Types::Strict::Bool.optional.meta(required: false)
|
28
|
+
|
29
|
+
# @!attribute privacy
|
30
|
+
# @return [Types.privacy, nil]
|
31
|
+
attribute :privacy, Types.privacy.optional.meta(required: false)
|
32
|
+
|
33
|
+
# @!attribute inheritedFrom
|
34
|
+
# @return [Reference, nil]
|
35
|
+
attribute :inheritedFrom, Types::Nominal::Any.optional.meta(required: false)
|
36
|
+
|
37
|
+
# @!attribute source
|
38
|
+
# @return [SourceReference, nil]
|
39
|
+
attribute :source, Types::Nominal::Any.optional.meta(required: false)
|
40
|
+
|
41
|
+
def visit(parser:)
|
42
|
+
hash = {}
|
43
|
+
hash[:inheritedFrom] = parser.data_types[:inherited_from].new(inheritedFrom).visit(parser: parser) unless inheritedFrom.nil?
|
44
|
+
hash[:source] = parser.data_types[:source].new(source).visit(parser: parser) unless source.nil?
|
45
|
+
|
46
|
+
hash = hash.merge(
|
47
|
+
Structs::FunctionLikeStruct.build_hash(parser: parser, struct: struct),
|
48
|
+
Structs::DeclarableNodeStruct.build_hash(parser: parser, struct: struct)
|
49
|
+
)
|
50
|
+
|
51
|
+
new(hash)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require_relative "../structs/declarable_node_struct.rb"
|
2
|
+
|
3
|
+
require_relative "../base_struct.rb"
|
4
|
+
require_relative "../types.rb"
|
5
|
+
|
6
|
+
module CustomElementsManifestParser
|
7
|
+
module Nodes
|
8
|
+
#
|
9
|
+
# A global custom element defintion, ie the result of a
|
10
|
+
# `customElements.define()` call.
|
11
|
+
#
|
12
|
+
# This is represented as an export because a definition makes the element
|
13
|
+
# available outside of the module it's defined it.
|
14
|
+
#
|
15
|
+
class CustomElementExport < BaseStruct
|
16
|
+
# @return ["custom-element-definition"]
|
17
|
+
def self.kind; "custom-element-definition"; end
|
18
|
+
|
19
|
+
# @!attribute kind
|
20
|
+
# @return ["custom-element-definition"]
|
21
|
+
attribute :kind, Types.Value("custom-element-definition")
|
22
|
+
|
23
|
+
# @!parse Structs::DeclarableNodeStruct
|
24
|
+
attributes_from Structs::DeclarableNodeStruct
|
25
|
+
|
26
|
+
# @!attribute name
|
27
|
+
# @return [String] - The tag name of the custom element
|
28
|
+
attribute :name, Types::Strict::String
|
29
|
+
|
30
|
+
# @!attribute declaration
|
31
|
+
# @return [Reference]
|
32
|
+
# A reference to the class or other declaration that implements the
|
33
|
+
# custom element.
|
34
|
+
attribute :declaration, Types::Nominal::Any
|
35
|
+
|
36
|
+
# @param deprecated [boolean, string, nil]
|
37
|
+
# Whether the custom-element export is deprecated.
|
38
|
+
# For example, a future version will not register the custom element in this file.
|
39
|
+
# If the value is a string, it's the reason for the deprecation.
|
40
|
+
attribute :deprecated, Types::Strict::Bool.optional | Types::Strict::String.optional.meta(required: false)
|
41
|
+
|
42
|
+
def visit(parser:)
|
43
|
+
hash = {}
|
44
|
+
hash[:declaration] = parser.data_types[:declaration].new(declaration).visit(parser: parser)
|
45
|
+
hash = hash.merge(
|
46
|
+
Structs::DeclarableNodeStruct.build_hash(parser: parser, struct: self)
|
47
|
+
)
|
48
|
+
new(hash)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require_relative "./class_field.rb"
|
2
|
+
require_relative "../types.rb"
|
3
|
+
|
4
|
+
module CustomElementsManifestParser
|
5
|
+
module Nodes
|
6
|
+
# Additional metadata for fields on custom elements.
|
7
|
+
# This is equivalent to "ClassField"
|
8
|
+
class CustomElementField < ClassField
|
9
|
+
# @!attribute attribute
|
10
|
+
# @return [String, nil] -
|
11
|
+
# The corresponding attribute name if there is one.
|
12
|
+
# If this property is defined, the attribute must be listed in the classes'
|
13
|
+
# `attributes` array.
|
14
|
+
attribute :attribute, Types::Strict::String.optional.meta(required: false)
|
15
|
+
|
16
|
+
# @!attribute reflects
|
17
|
+
# @return [Boolean, nil] -
|
18
|
+
# If the property reflects to an attribute.
|
19
|
+
# If this is true, the `attribute` property must be defined.
|
20
|
+
attribute :reflects, Types::Strict::Bool.optional.meta(required: false)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require_relative "../structs/declarable_node_struct.rb"
|
2
|
+
require_relative "../structs/function_like_struct.rb"
|
3
|
+
|
4
|
+
require_relative "../base_struct.rb"
|
5
|
+
|
6
|
+
module CustomElementsManifestParser
|
7
|
+
module Nodes
|
8
|
+
# Documents a function
|
9
|
+
class FunctionDeclaration < BaseStruct
|
10
|
+
# @!parse include Structs::DeclarableNodeStruct
|
11
|
+
attributes_from Structs::DeclarableNodeStruct
|
12
|
+
|
13
|
+
# @!parse include Structs::FunctionLikeStruct
|
14
|
+
attributes_from Structs::FunctionLikeStruct
|
15
|
+
|
16
|
+
# @return ["function"]
|
17
|
+
def self.kind; "function"; end
|
18
|
+
|
19
|
+
# @!attribute kind
|
20
|
+
# @return ["function"]
|
21
|
+
attribute :kind, Types.Value("function")
|
22
|
+
|
23
|
+
# @!attribute source
|
24
|
+
# @return [SourceReference, nil]
|
25
|
+
attribute :source, Types::Strict::String.optional.meta(required: false)
|
26
|
+
|
27
|
+
def visit(parser:)
|
28
|
+
hash = {}
|
29
|
+
hash[:source] = parser.data_types[:source].new(source).visit(parser: parser) unless source.nil?
|
30
|
+
|
31
|
+
hash = hash.merge(
|
32
|
+
Structs::DeclarableNodeStruct.build_hash(parser: parser, struct: self),
|
33
|
+
Structs::FunctionLikeStruct.build_hash(parser: parser, struct: self)
|
34
|
+
)
|
35
|
+
new(hash)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require_relative "../structs/declarable_node_struct.rb"
|
2
|
+
|
3
|
+
require_relative "../base_struct.rb"
|
4
|
+
require_relative "../types.rb"
|
5
|
+
|
6
|
+
module CustomElementsManifestParser
|
7
|
+
module Nodes
|
8
|
+
# A JavaScript export!
|
9
|
+
class JavaScriptExport < BaseStruct
|
10
|
+
# @!parse include Structs::DeclarableNodeStruct
|
11
|
+
attributes_from Structs::DeclarableNodeStruct
|
12
|
+
|
13
|
+
# @!attribute kind
|
14
|
+
# @return ["js"]
|
15
|
+
attribute :kind, Types.Value("js")
|
16
|
+
|
17
|
+
# @return ["js"]
|
18
|
+
def self.kind; "js"; end
|
19
|
+
|
20
|
+
# @!attribute name
|
21
|
+
# @return [String] -
|
22
|
+
# The name of the exported symbol.
|
23
|
+
#
|
24
|
+
# JavaScript has a number of ways to export objects which determine the
|
25
|
+
# correct name to use.
|
26
|
+
#
|
27
|
+
# - Default exports must use the name "default".
|
28
|
+
# - Named exports use the name that is exported. If the export is renamed
|
29
|
+
# with the "as" clause, use the exported name.
|
30
|
+
# - Aggregating exports (`* from`) should use the name `*`
|
31
|
+
attribute :name, Types::Strict::String
|
32
|
+
|
33
|
+
# @!attribute declaration
|
34
|
+
# @return [Reference] -
|
35
|
+
# A reference to the exported declaration.
|
36
|
+
#
|
37
|
+
# In the case of aggregating exports, the reference's `module` field must be
|
38
|
+
# defined and the `name` field must be `"*"`.
|
39
|
+
attribute :declaration, Types::Nominal::Any.optional.meta(required: false)
|
40
|
+
|
41
|
+
# @!attribute deprecated
|
42
|
+
# @return [nil, boolean, string] -
|
43
|
+
# Whether the export is deprecated. For example, the name of the export was changed.
|
44
|
+
# If the value is a string, it's the reason for the deprecation.
|
45
|
+
attribute :deprecated, Types::Strict::String.optional | Types::Strict::Bool.optional.meta(required: false)
|
46
|
+
|
47
|
+
def visit(parser:)
|
48
|
+
hash = {}
|
49
|
+
hash[:declaration] = parser.data_types[:declaration].new(declaration).visit(parser: parser) if declaration
|
50
|
+
|
51
|
+
hash = hash.merge(
|
52
|
+
Structs::DeclarableNodeStruct.build_hash(parser: parser, struct: self)
|
53
|
+
)
|
54
|
+
|
55
|
+
new(hash)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|