├── .codecov.yml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── bin └── amp ├── composer.json ├── conceptual-diagram.svg ├── include └── compatibility-fixes.php ├── resources └── local_fallback │ ├── rtv │ └── metadata │ └── v0.css └── src ├── Amp.php ├── Cli ├── AmpExecutable.php ├── Colors.php ├── Command.php ├── Command │ ├── Optimize.php │ └── Validate.php ├── Executable.php ├── LogLevel.php ├── Options.php └── TableFormatter.php ├── CompatibilityFix.php ├── CompatibilityFix └── MovedClasses.php ├── CssLength.php ├── DevMode.php ├── Dom ├── Document.php ├── Document │ ├── AfterLoadFilter.php │ ├── AfterSaveFilter.php │ ├── BeforeLoadFilter.php │ ├── BeforeSaveFilter.php │ ├── Filter.php │ ├── Filter │ │ ├── AmpBindAttributes.php │ │ ├── AmpEmojiAttribute.php │ │ ├── ConvertHeadProfileToLink.php │ │ ├── DeduplicateTag.php │ │ ├── DetectInvalidByteSequence.php │ │ ├── DoctypeNode.php │ │ ├── DocumentEncoding.php │ │ ├── HttpEquivCharset.php │ │ ├── LibxmlCompatibility.php │ │ ├── MustacheScriptTemplates.php │ │ ├── NormalizeHtmlAttributes.php │ │ ├── NormalizeHtmlEntities.php │ │ ├── NoscriptElements.php │ │ ├── ProtectEsiTags.php │ │ ├── SelfClosingSVGElements.php │ │ ├── SelfClosingTags.php │ │ └── SvgSourceAttributeEncoding.php │ └── Option.php ├── Element.php ├── ElementDump.php ├── LinkManager.php ├── NodeWalker.php ├── Options.php └── UniqueIdManager.php ├── Encoding.php ├── Exception ├── AmpCliException.php ├── AmpException.php ├── Cli │ ├── InvalidArgument.php │ ├── InvalidColor.php │ ├── InvalidColumnFormat.php │ ├── InvalidCommand.php │ ├── InvalidOption.php │ ├── InvalidSapi.php │ └── MissingArgument.php ├── FailedRemoteRequest.php ├── FailedToCreateLink.php ├── FailedToGetCachedResponse.php ├── FailedToGetFromRemoteUrl.php ├── FailedToParseHtml.php ├── FailedToParseUrl.php ├── FailedToRetrieveRequiredDomElement.php ├── InvalidAttributeName.php ├── InvalidByteSequence.php ├── InvalidCssRulesetName.php ├── InvalidDeclarationName.php ├── InvalidDocRulesetName.php ├── InvalidDocumentFilter.php ├── InvalidErrorCode.php ├── InvalidExtension.php ├── InvalidFormat.php ├── InvalidListName.php ├── InvalidOptionValue.php ├── InvalidSpecName.php ├── InvalidSpecRuleName.php ├── InvalidTagId.php ├── InvalidTagName.php └── MaxCssByteCountExceeded.php ├── Extension.php ├── FakeEnum.php ├── Format.php ├── Html ├── AtRule.php ├── Attribute.php ├── LengthUnit.php ├── LowerCaseTag.php ├── Parser │ ├── DocLocator.php │ ├── EFlags.php │ ├── HtmlParser.php │ ├── HtmlSaxHandler.php │ ├── HtmlSaxHandlerWithLocation.php │ ├── ParsedAttribute.php │ ├── ParsedTag.php │ ├── ScriptTag.php │ ├── TagNameStack.php │ └── TagRegion.php ├── RequestDestination.php ├── Role.php ├── Tag.php └── UpperCaseTag.php ├── Internal.php ├── Layout.php ├── Optimizer ├── Configuration.php ├── Configuration │ ├── AmpRuntimeCssConfiguration.php │ ├── AmpStoryCssOptimizerConfiguration.php │ ├── AutoExtensionsConfiguration.php │ ├── BaseTransformerConfiguration.php │ ├── MinifyHtmlConfiguration.php │ ├── OptimizeAmpBindConfiguration.php │ ├── OptimizeHeroImagesConfiguration.php │ ├── OptimizeViewportConfiguration.php │ ├── PreloadHeroImageConfiguration.php │ ├── RewriteAmpUrlsConfiguration.php │ └── TransformedIdentifierConfiguration.php ├── CssRule.php ├── CssRules.php ├── DefaultConfiguration.php ├── Error.php ├── Error │ ├── CannotAdaptDocumentForSelfHosting.php │ ├── CannotInlineRuntimeCss.php │ ├── CannotMinifyAmpScript.php │ ├── CannotParseJsonData.php │ ├── CannotPerformServerSideRendering.php │ ├── CannotPreloadImage.php │ ├── CannotRemoveBoilerplate.php │ ├── DeprecatedTransformer.php │ ├── ErrorProperties.php │ ├── InvalidJson.php │ ├── MissingPackage.php │ ├── TooManyHeroImages.php │ └── UnknownError.php ├── ErrorCollection.php ├── Exception │ ├── AmpOptimizerException.php │ ├── InvalidArgument.php │ ├── InvalidConfiguration.php │ ├── InvalidConfigurationKey.php │ ├── InvalidConfigurationValue.php │ ├── InvalidHtmlAttribute.php │ ├── UnknownConfigurationClass.php │ └── UnknownConfigurationKey.php ├── HeroImage.php ├── ImageDimensions.php ├── LocalFallback.php ├── TransformationEngine.php ├── Transformer.php ├── Transformer │ ├── AmpBoilerplate.php │ ├── AmpBoilerplateErrorHandler.php │ ├── AmpRuntimeCss.php │ ├── AmpRuntimePreloads.php │ ├── AmpStoryCssOptimizer.php │ ├── AutoExtensions.php │ ├── GoogleFontsPreconnect.php │ ├── MinifyHtml.php │ ├── OptimizeAmpBind.php │ ├── OptimizeHeroImages.php │ ├── OptimizeViewport.php │ ├── PreloadHeroImage.php │ ├── ReorderHead.php │ ├── RewriteAmpUrls.php │ ├── ServerSideRendering.php │ └── TransformedIdentifier.php └── TransformerConfiguration.php ├── Protocol.php ├── RemoteGetRequest.php ├── RemoteRequest ├── CurlRemoteGetRequest.php ├── FallbackRemoteGetRequest.php ├── FilesystemRemoteGetRequest.php ├── RemoteGetRequestResponse.php ├── StubbedRemoteGetRequest.php └── TemporaryFileCachedRemoteGetRequest.php ├── Response.php ├── RuntimeVersion.php ├── ScriptReleaseVersion.php ├── Str.php ├── Url.php └── Validator ├── Context.php ├── ErrorCode.php ├── ExtensionsContext.php ├── FilePosition.php ├── Spec.php ├── Spec ├── AggregateTag.php ├── AggregateTagWithExtensionSpec.php ├── AttributeList.php ├── AttributeList │ ├── AmpAudioCommon.php │ ├── AmpBaseCarouselCommon.php │ ├── AmpCarouselCommon.php │ ├── AmpDatePickerCommonAttributes.php │ ├── AmpDatePickerOverlayModeAttributes.php │ ├── AmpDatePickerRangeTypeAttributes.php │ ├── AmpDatePickerSingleTypeAttributes.php │ ├── AmpDatePickerStaticModeAttributes.php │ ├── AmpFacebook.php │ ├── AmpFacebookStrict.php │ ├── AmpInputmaskCommonAttr.php │ ├── AmpLayoutAttrs.php │ ├── AmpMegaphoneCommon.php │ ├── AmpNestedMenuActions.php │ ├── AmpStreamGalleryCommon.php │ ├── AmpVideoCommon.php │ ├── AmpVideoIframeCommon.php │ ├── AmphtmlEngineAttrs.php │ ├── AmphtmlModuleEngineAttrs.php │ ├── AmphtmlNomoduleEngineAttrs.php │ ├── CiteAttr.php │ ├── ClickAttributions.php │ ├── CommonExtensionAttrs.php │ ├── CommonLinkAttrs.php │ ├── ExtendedAmpGlobal.php │ ├── FormNameAttr.php │ ├── GlobalAttrs.php │ ├── ImgAttrs.php │ ├── InputCommonAttr.php │ ├── InteractiveOptionsConfettiAttrs.php │ ├── InteractiveOptionsImgAttrs.php │ ├── InteractiveOptionsResultsCategoryAttrs.php │ ├── InteractiveOptionsTextAttrs.php │ ├── InteractiveSharedConfigsAttrs.php │ ├── LightboxableElements.php │ ├── MandatoryIdAttr.php │ ├── MandatoryNameAttr.php │ ├── MandatorySrcAmp4email.php │ ├── MandatorySrcOrSrcset.php │ ├── NameAttr.php │ ├── NonceAttr.php │ ├── OptionalSrcAmp4email.php │ ├── PooolAccessAttrs.php │ ├── PrivateClickMeasurementAttributes.php │ ├── SvgConditionalProcessingAttributes.php │ ├── SvgCoreAttributes.php │ ├── SvgFilterPrimitiveAttributes.php │ ├── SvgPresentationAttributes.php │ ├── SvgStyleAttr.php │ ├── SvgTransferFunctionAttributes.php │ ├── SvgXlinkAttributes.php │ ├── TrackAttrsNoSubtitles.php │ └── TrackAttrsSubtitles.php ├── CssRuleset.php ├── CssRuleset │ ├── Amp4ads.php │ ├── Amp4emailDataCssStrict.php │ ├── Amp4emailNoDataCssStrict.php │ ├── AmpNoTransformed.php │ └── AmpTransformed.php ├── DeclarationList.php ├── DeclarationList │ ├── BasicDeclarations.php │ ├── EmailSpecificDeclarations.php │ └── SvgBasicDeclarations.php ├── DescendantTagList.php ├── DescendantTagList │ ├── AmpMegaMenuAllowedDescendants.php │ ├── AmpNestedMenuAllowedDescendants.php │ ├── AmpStoryBookendAllowedDescendants.php │ ├── AmpStoryCtaLayerAllowedDescendants.php │ ├── AmpStoryGridLayerAllowedDescendants.php │ ├── AmpStoryPageAttachmentAllowedDescendants.php │ ├── AmpStoryPlayerAllowedDescendants.php │ └── AmpStorySocialShareAllowedDescendants.php ├── DocRuleset.php ├── DocRuleset │ └── Amp4email.php ├── Error.php ├── Error │ ├── AmpEmailMissingStrictCssAttr.php │ ├── AttrDisallowedByImpliedLayout.php │ ├── AttrDisallowedBySpecifiedLayout.php │ ├── AttrMissingRequiredExtension.php │ ├── AttrRequiredButMissing.php │ ├── AttrValueRequiredByLayout.php │ ├── BaseTagMustPreceedAllUrls.php │ ├── CdataViolatesDenylist.php │ ├── ChildTagDoesNotSatisfyReferencePoint.php │ ├── ChildTagDoesNotSatisfyReferencePointSingular.php │ ├── CssExcessivelyNested.php │ ├── CssSyntaxBadUrl.php │ ├── CssSyntaxDisallowedAttrSelector.php │ ├── CssSyntaxDisallowedDomain.php │ ├── CssSyntaxDisallowedImportant.php │ ├── CssSyntaxDisallowedKeyframeInsideKeyframe.php │ ├── CssSyntaxDisallowedMediaFeature.php │ ├── CssSyntaxDisallowedMediaType.php │ ├── CssSyntaxDisallowedPropertyValue.php │ ├── CssSyntaxDisallowedPropertyValueWithHint.php │ ├── CssSyntaxDisallowedPseudoClass.php │ ├── CssSyntaxDisallowedPseudoElement.php │ ├── CssSyntaxDisallowedQualifiedRuleMustBeInsideKeyframe.php │ ├── CssSyntaxDisallowedRelativeUrl.php │ ├── CssSyntaxEofInPreludeOfQualifiedRule.php │ ├── CssSyntaxErrorInPseudoSelector.php │ ├── CssSyntaxIncompleteDeclaration.php │ ├── CssSyntaxInvalidAtRule.php │ ├── CssSyntaxInvalidAttrSelector.php │ ├── CssSyntaxInvalidDeclaration.php │ ├── CssSyntaxInvalidProperty.php │ ├── CssSyntaxInvalidPropertyNolist.php │ ├── CssSyntaxInvalidUrl.php │ ├── CssSyntaxInvalidUrlProtocol.php │ ├── CssSyntaxMalformedMediaQuery.php │ ├── CssSyntaxMissingSelector.php │ ├── CssSyntaxMissingUrl.php │ ├── CssSyntaxNotASelectorStart.php │ ├── CssSyntaxPropertyDisallowedTogetherWith.php │ ├── CssSyntaxPropertyDisallowedWithinAtRule.php │ ├── CssSyntaxPropertyRequiresQualification.php │ ├── CssSyntaxQualifiedRuleHasNoDeclarations.php │ ├── CssSyntaxStrayTrailingBackslash.php │ ├── CssSyntaxUnparsedInputRemainsInSelector.php │ ├── CssSyntaxUnterminatedComment.php │ ├── CssSyntaxUnterminatedString.php │ ├── DeprecatedAttr.php │ ├── DeprecatedTag.php │ ├── DevModeOnly.php │ ├── DisallowedAmpDomain.php │ ├── DisallowedAttr.php │ ├── DisallowedChildTagName.php │ ├── DisallowedDomain.php │ ├── DisallowedFirstChildTagName.php │ ├── DisallowedManufacturedBody.php │ ├── DisallowedPropertyInAttrValue.php │ ├── DisallowedRelativeUrl.php │ ├── DisallowedScriptTag.php │ ├── DisallowedStyleAttr.php │ ├── DisallowedTag.php │ ├── DisallowedTagAncestor.php │ ├── DocumentSizeLimitExceeded.php │ ├── DocumentTooComplex.php │ ├── DuplicateAttribute.php │ ├── DuplicateDimension.php │ ├── DuplicateReferencePoint.php │ ├── DuplicateUniqueTag.php │ ├── DuplicateUniqueTagWarning.php │ ├── ExtensionUnused.php │ ├── GeneralDisallowedTag.php │ ├── ImpliedLayoutInvalid.php │ ├── InconsistentUnitsForWidthAndHeight.php │ ├── IncorrectMinNumChildTags.php │ ├── IncorrectNumChildTags.php │ ├── IncorrectScriptReleaseVersion.php │ ├── InlineScriptTooLong.php │ ├── InlineStyleTooLong.php │ ├── InvalidAttrValue.php │ ├── InvalidDoctypeHtml.php │ ├── InvalidExtensionPath.php │ ├── InvalidExtensionVersion.php │ ├── InvalidJsonCdata.php │ ├── InvalidPropertyValueInAttrValue.php │ ├── InvalidUrl.php │ ├── InvalidUrlProtocol.php │ ├── InvalidUtf8.php │ ├── LtsScriptAfterNonLts.php │ ├── MandatoryAnyofAttrMissing.php │ ├── MandatoryAttrMissing.php │ ├── MandatoryCdataMissingOrIncorrect.php │ ├── MandatoryLastChildTag.php │ ├── MandatoryOneofAttrMissing.php │ ├── MandatoryPropertyMissingFromAttrValue.php │ ├── MandatoryReferencePointMissing.php │ ├── MandatoryTagAncestor.php │ ├── MandatoryTagAncestorWithHint.php │ ├── MandatoryTagMissing.php │ ├── MissingLayoutAttributes.php │ ├── MissingRequiredExtension.php │ ├── MissingUrl.php │ ├── MutuallyExclusiveAttrs.php │ ├── NonLtsScriptAfterLts.php │ ├── NonWhitespaceCdataEncountered.php │ ├── SpecifiedLayoutInvalid.php │ ├── StylesheetAndInlineStyleTooLong.php │ ├── StylesheetTooLong.php │ ├── TagExcludedByTag.php │ ├── TagNotAllowedToHaveSiblings.php │ ├── TagReferencePointConflict.php │ ├── TagRequiredByMissing.php │ ├── TemplateInAttrName.php │ ├── TemplatePartialInAttrValue.php │ ├── UnescapedTemplateInAttrValue.php │ ├── UnknownCode.php │ ├── ValueSetMismatch.php │ ├── WarningExtensionDeprecatedVersion.php │ ├── WarningExtensionUnused.php │ ├── WarningTagRequiredByMissing.php │ └── WrongParentTag.php ├── Identifiable.php ├── IterableSection.php ├── Iteration.php ├── Section │ ├── AttributeLists.php │ ├── CssRulesets.php │ ├── DeclarationLists.php │ ├── DescendantTagLists.php │ ├── DocRulesets.php │ ├── Errors.php │ └── Tags.php ├── SpecRule.php ├── Tag.php ├── Tag │ ├── A.php │ ├── AAmp4email.php │ ├── Abbr.php │ ├── Acronym.php │ ├── Address.php │ ├── Amp3dGltf.php │ ├── Amp3qPlayer.php │ ├── Amp4adsEngineScript.php │ ├── AmpAccessExtensionJsonScript.php │ ├── AmpAccordion.php │ ├── AmpAccordionSection.php │ ├── AmpActionMacro.php │ ├── AmpAd.php │ ├── AmpAdCustom.php │ ├── AmpAdExit.php │ ├── AmpAdExitConfigurationJson.php │ ├── AmpAdExtensionScript.php │ ├── AmpAdWithDataEnableRefreshAttribute.php │ ├── AmpAdWithDataMultiSizeAttribute.php │ ├── AmpAdWithTypeCustom.php │ ├── AmpAddthis.php │ ├── AmpAnalytics.php │ ├── AmpAnalyticsExtensionJsonScript.php │ ├── AmpAnim.php │ ├── AmpAnimAmp4email.php │ ├── AmpAnimExtensionScriptAmp4email.php │ ├── AmpAnimation.php │ ├── AmpAnimationExtensionJsonScript.php │ ├── AmpApesterMedia.php │ ├── AmpAppBanner.php │ ├── AmpAppBannerButtonOpenButton.php │ ├── AmpAudio.php │ ├── AmpAudioA4a.php │ ├── AmpAudioSource.php │ ├── AmpAudioTrack.php │ ├── AmpAudioTrackKindSubtitles.php │ ├── AmpAutoAds.php │ ├── AmpAutocomplete.php │ ├── AmpAutocompleteAmp4email.php │ ├── AmpAutocompleteInput.php │ ├── AmpAutocompleteJson.php │ ├── AmpBaseCarousel.php │ ├── AmpBaseCarouselLightbox.php │ ├── AmpBaseCarouselLightboxChild.php │ ├── AmpBaseCarouselLightboxLightboxExclude.php │ ├── AmpBeopinion.php │ ├── AmpBindExtensionJsonScript.php │ ├── AmpBindMacro.php │ ├── AmpBodymovinAnimation.php │ ├── AmpBridPlayer.php │ ├── AmpBrightcove.php │ ├── AmpBysideContent.php │ ├── AmpCallTracking.php │ ├── AmpCarousel.php │ ├── AmpCarouselLightbox.php │ ├── AmpCarouselLightboxChild.php │ ├── AmpCarouselLightboxLightboxExclude.php │ ├── AmpConnatixPlayer.php │ ├── AmpConsent.php │ ├── AmpConsentExtensionJsonScript.php │ ├── AmpConsentType.php │ ├── AmpDailymotion.php │ ├── AmpDateCountdown.php │ ├── AmpDateDisplay.php │ ├── AmpDatePickerTemplateDateTemplate.php │ ├── AmpDatePickerTemplateInfoTemplate.php │ ├── AmpDatePickerTypeRangeModeOverlay.php │ ├── AmpDatePickerTypeRangeModeStatic.php │ ├── AmpDatePickerTypeSingleModeOverlay.php │ ├── AmpDatePickerTypeSingleModeStatic.php │ ├── AmpDelightPlayer.php │ ├── AmpEmbed.php │ ├── AmpEmbedWithDataMultiSizeAttribute.php │ ├── AmpEmbedlyCard.php │ ├── AmpEmbedlyKey.php │ ├── AmpExperiment.php │ ├── AmpExperimentExtensionJsonScript.php │ ├── AmpExperimentStoryExtensionJsonScript.php │ ├── AmpFacebook.php │ ├── AmpFacebook10.php │ ├── AmpFacebookComments.php │ ├── AmpFacebookComments10.php │ ├── AmpFacebookLike.php │ ├── AmpFacebookLike10.php │ ├── AmpFacebookPage.php │ ├── AmpFacebookPage10.php │ ├── AmpFitText.php │ ├── AmpFont.php │ ├── AmpFxFlyingCarpet.php │ ├── AmpGeo.php │ ├── AmpGeoExtensionJsonScript.php │ ├── AmpGfycat.php │ ├── AmpGist.php │ ├── AmpGoogleDocumentEmbed.php │ ├── AmpGoogleReadAloudPlayer.php │ ├── AmpGwdAnimation.php │ ├── AmpHulu.php │ ├── AmpIframe.php │ ├── AmpIframely.php │ ├── AmpImaVideo.php │ ├── AmpImaVideoScriptTypeApplicationJson.php │ ├── AmpImaVideoSource.php │ ├── AmpImaVideoTrack.php │ ├── AmpImaVideoTrackKindSubtitles.php │ ├── AmpImageLightbox.php │ ├── AmpImageSlider.php │ ├── AmpImageSliderDivFirst.php │ ├── AmpImageSliderDivSecond.php │ ├── AmpImageSliderTransformed.php │ ├── AmpImg.php │ ├── AmpImgAmp4email.php │ ├── AmpImgImgPlaceholderTransformed.php │ ├── AmpImgImgTransformed.php │ ├── AmpImgTransformed.php │ ├── AmpImgur.php │ ├── AmpInlineGallery.php │ ├── AmpInlineGalleryPagination.php │ ├── AmpInlineGalleryPaginationInset.php │ ├── AmpInlineGalleryThumbnails.php │ ├── AmpInstagram.php │ ├── AmpInstallServiceworker.php │ ├── AmpIzlesene.php │ ├── AmpJwplayer.php │ ├── AmpKalturaPlayer.php │ ├── AmpLayout.php │ ├── AmpLightbox.php │ ├── AmpLightboxAmp4ads.php │ ├── AmpLinkRewriter.php │ ├── AmpLinkRewriterExtensionJsonScript.php │ ├── AmpList.php │ ├── AmpListAmp4email.php │ ├── AmpListDivFetchError.php │ ├── AmpListLoadMore.php │ ├── AmpListLoadMoreButtonLoadMoreClickable.php │ ├── AmpLiveList.php │ ├── AmpLiveListItems.php │ ├── AmpLiveListItemsItem.php │ ├── AmpLiveListPagination.php │ ├── AmpLiveListUpdate.php │ ├── AmpMathml.php │ ├── AmpMegaMenu.php │ ├── AmpMegaMenuAmpList.php │ ├── AmpMegaMenuAmpListTemplate.php │ ├── AmpMegaMenuItemContent.php │ ├── AmpMegaMenuItemHeading.php │ ├── AmpMegaMenuNav.php │ ├── AmpMegaMenuNavUlOl.php │ ├── AmpMegaMenuNavUlOlLi.php │ ├── AmpMegaphoneDataEpisode.php │ ├── AmpMegaphoneDataPlaylist.php │ ├── AmpMinuteMediaPlayer.php │ ├── AmpMowplayer.php │ ├── AmpNestedMenu.php │ ├── AmpNextPageFooter.php │ ├── AmpNextPageRecommendationBox.php │ ├── AmpNextPageScriptTypeApplicationJson.php │ ├── AmpNextPageSeparator.php │ ├── AmpNextPageTypeAdsense.php │ ├── AmpNextPageWithInlineConfig.php │ ├── AmpNextPageWithSrcAttribute.php │ ├── AmpNexxtvPlayer.php │ ├── AmpO2Player.php │ ├── AmpOnetapGoogle.php │ ├── AmpOoyalaPlayer.php │ ├── AmpOrientationObserver.php │ ├── AmpPanZoom.php │ ├── AmpPinterest.php │ ├── AmpPixel.php │ ├── AmpPlaybuzz.php │ ├── AmpPositionObserver.php │ ├── AmpPowrPlayer.php │ ├── AmpReachPlayer.php │ ├── AmpRecaptchaInput.php │ ├── AmpRedbullPlayer.php │ ├── AmpReddit.php │ ├── AmpRender.php │ ├── AmpRiddleQuiz.php │ ├── AmpScript.php │ ├── AmpScriptExtensionLocalScript.php │ ├── AmpSelector.php │ ├── AmpSelectorChild.php │ ├── AmpSelectorOption.php │ ├── AmpSidebar.php │ ├── AmpSidebarAmp4email.php │ ├── AmpSidebarNav.php │ ├── AmpSkimlinks.php │ ├── AmpSmartlinks.php │ ├── AmpSocialShare.php │ ├── AmpSoundcloud.php │ ├── AmpSpringboardPlayer.php │ ├── AmpState.php │ ├── AmpStateAmp4email.php │ ├── AmpStickyAd.php │ ├── AmpStory.php │ ├── AmpStory360.php │ ├── AmpStoryAmpAudio.php │ ├── AmpStoryAmpSidebar.php │ ├── AmpStoryAmpStoryPageAttachmentAmpVideo.php │ ├── AmpStoryAmpVideo.php │ ├── AmpStoryAnimation.php │ ├── AmpStoryAnimationJsonScript.php │ ├── AmpStoryAutoAds.php │ ├── AmpStoryAutoAdsConfigScript.php │ ├── AmpStoryAutoAdsTemplate.php │ ├── AmpStoryAutoAnalytics.php │ ├── AmpStoryBookend.php │ ├── AmpStoryBookendExtensionJsonScript.php │ ├── AmpStoryCaptions.php │ ├── AmpStoryConsent.php │ ├── AmpStoryConsentExtensionJsonScript.php │ ├── AmpStoryCtaLayer.php │ ├── AmpStoryCtaLayerAnimateIn.php │ ├── AmpStoryGridLayer.php │ ├── AmpStoryGridLayerAnimateIn.php │ ├── AmpStoryGridLayerDefault.php │ ├── AmpStoryInteractiveBinaryPoll.php │ ├── AmpStoryInteractiveImgPoll.php │ ├── AmpStoryInteractiveImgQuiz.php │ ├── AmpStoryInteractivePoll.php │ ├── AmpStoryInteractiveQuiz.php │ ├── AmpStoryInteractiveResults.php │ ├── AmpStoryPage.php │ ├── AmpStoryPageAttachment.php │ ├── AmpStoryPageAttachmentHref.php │ ├── AmpStoryPageOutlink.php │ ├── AmpStoryPanningMedia.php │ ├── AmpStoryPlayer.php │ ├── AmpStoryPlayerImg.php │ ├── AmpStoryShoppingAttachment.php │ ├── AmpStoryShoppingConfig.php │ ├── AmpStoryShoppingTag.php │ ├── AmpStorySocialShare.php │ ├── AmpStorySocialShareExtensionJsonScript.php │ ├── AmpStorySubscriptions.php │ ├── AmpStreamGallery.php │ ├── AmpSubscriptionsExtensionJsonScript.php │ ├── AmpTiktok.php │ ├── AmpTiktokBlockquote.php │ ├── AmpTimeago.php │ ├── AmpTruncateText.php │ ├── AmpTwitter.php │ ├── AmpUserNotification.php │ ├── AmpVideo.php │ ├── AmpVideoIframe.php │ ├── AmpVideoIframeTransformed.php │ ├── AmpVideoSource.php │ ├── AmpVideoTrack.php │ ├── AmpVideoTrackKindSubtitles.php │ ├── AmpVimeo.php │ ├── AmpVine.php │ ├── AmpViqeoPlayer.php │ ├── AmpVk.php │ ├── AmpWebPush.php │ ├── AmpWebPushWidget.php │ ├── AmpWistiaPlayer.php │ ├── AmpWordpressEmbed.php │ ├── AmpYotpo.php │ ├── AmpYoutube.php │ ├── AmphtmlEngineScript.php │ ├── AmphtmlEngineScriptAmp4email.php │ ├── AmphtmlEngineScriptLts.php │ ├── AmphtmlEngineScriptLtsTransformed.php │ ├── AmphtmlEngineScriptTransformed.php │ ├── AmphtmlModuleEngineScript.php │ ├── AmphtmlModuleLtsEngineScript.php │ ├── AmphtmlNomoduleEngineScript.php │ ├── AmphtmlNomoduleLtsEngineScript.php │ ├── Article.php │ ├── Aside.php │ ├── Audio.php │ ├── AudioSource.php │ ├── AudioTrack.php │ ├── AudioTrackKindSubtitles.php │ ├── B.php │ ├── Base.php │ ├── Bdi.php │ ├── Bdo.php │ ├── Big.php │ ├── Blockquote.php │ ├── BlockquoteWithTiktok.php │ ├── Body.php │ ├── Br.php │ ├── Button.php │ ├── ButtonAmpNestedMenu.php │ ├── Canvas.php │ ├── Caption.php │ ├── Center.php │ ├── Circle.php │ ├── Cite.php │ ├── Clippath.php │ ├── Code.php │ ├── Col.php │ ├── Colgroup.php │ ├── CryptokeysJsonScript.php │ ├── Data.php │ ├── Datalist.php │ ├── Dd.php │ ├── Defs.php │ ├── Del.php │ ├── Desc.php │ ├── Details.php │ ├── Dfn.php │ ├── Dir.php │ ├── Div.php │ ├── DivAmpNestedMenu.php │ ├── Dl.php │ ├── Dt.php │ ├── Ellipse.php │ ├── Em.php │ ├── Feblend.php │ ├── Fecolormatrix.php │ ├── Fecomponenttransfer.php │ ├── Fecomposite.php │ ├── Feconvolvematrix.php │ ├── Fediffuselighting.php │ ├── Fedisplacementmap.php │ ├── Fedistantlight.php │ ├── Fedropshadow.php │ ├── Feflood.php │ ├── Fefunca.php │ ├── Fefuncb.php │ ├── Fefuncg.php │ ├── Fefuncr.php │ ├── Fegaussianblur.php │ ├── Femerge.php │ ├── Femergenode.php │ ├── Femorphology.php │ ├── Feoffset.php │ ├── Fepointlight.php │ ├── Fespecularlighting.php │ ├── Fespotlight.php │ ├── Fetile.php │ ├── Feturbulence.php │ ├── Fieldset.php │ ├── Figcaption.php │ ├── Figure.php │ ├── Filter.php │ ├── Footer.php │ ├── FormDivSubmitError.php │ ├── FormDivSubmitErrorTemplate.php │ ├── FormDivSubmitSuccess.php │ ├── FormDivSubmitSuccessTemplate.php │ ├── FormDivSubmitting.php │ ├── FormDivSubmittingTemplate.php │ ├── FormDivVerifyError.php │ ├── FormDivVerifyErrorTemplate.php │ ├── FormMethodGet.php │ ├── FormMethodGetAmp4email.php │ ├── FormMethodPost.php │ ├── FormMethodPostAmp4email.php │ ├── G.php │ ├── Glyph.php │ ├── Glyphref.php │ ├── H1.php │ ├── H2.php │ ├── H2AmpNestedMenu.php │ ├── H3.php │ ├── H3AmpNestedMenu.php │ ├── H4.php │ ├── H4AmpNestedMenu.php │ ├── H5.php │ ├── H5AmpNestedMenu.php │ ├── H6.php │ ├── H6AmpNestedMenu.php │ ├── Head.php │ ├── HeadStyleAmp4adsBoilerplate.php │ ├── HeadStyleAmp4emailBoilerplate.php │ ├── HeadStyleAmpBoilerplate.php │ ├── Header.php │ ├── HeroImage.php │ ├── HeroImg.php │ ├── Hgroup.php │ ├── Hkern.php │ ├── Hr.php │ ├── Html.php │ ├── HtmlDoctype.php │ ├── HtmlDoctypeAmp4ads.php │ ├── HtmlTransformed.php │ ├── I.php │ ├── IAmphtmlSizerIntrinsic.php │ ├── IAmphtmlSizerResponsive.php │ ├── Iframe.php │ ├── Image.php │ ├── ImageUsingSrcset.php │ ├── ImgIAmphtmlIntrinsicSizer.php │ ├── ImgIAmphtmlIntrinsicSizerAmpStoryPlayer.php │ ├── ImgUsingSrcset.php │ ├── Input.php │ ├── InputMaskCustomMask.php │ ├── InputMaskDateDdMmYyyy.php │ ├── InputMaskDateMmDdYyyy.php │ ├── InputMaskDateMmYy.php │ ├── InputMaskDateYyyyMmDd.php │ ├── InputMaskPaymentCard.php │ ├── InputTypeFile.php │ ├── InputTypeImage.php │ ├── InputTypePassword.php │ ├── Ins.php │ ├── Kbd.php │ ├── Label.php │ ├── Legend.php │ ├── Li.php │ ├── Line.php │ ├── Lineargradient.php │ ├── LineargradientStop.php │ ├── LinkItemprop.php │ ├── LinkItempropSameas.php │ ├── LinkProperty.php │ ├── LinkRel.php │ ├── LinkRelCanonical.php │ ├── LinkRelManifest.php │ ├── LinkRelModulepreload.php │ ├── LinkRelPreload.php │ ├── LinkRelStylesheetForAmpStory10Css.php │ ├── LinkRelStylesheetForFonts.php │ ├── Listing.php │ ├── Main.php │ ├── Mark.php │ ├── Marker.php │ ├── Mask.php │ ├── MetaCharsetUtf8.php │ ├── MetaHttpEquivContentLanguage.php │ ├── MetaHttpEquivContentScriptType.php │ ├── MetaHttpEquivContentStyleType.php │ ├── MetaHttpEquivContentType.php │ ├── MetaHttpEquivImagetoolbar.php │ ├── MetaHttpEquivOriginTrial.php │ ├── MetaHttpEquivPicsLabel.php │ ├── MetaHttpEquivResourceType.php │ ├── MetaHttpEquivXDnsPrefetchControl.php │ ├── MetaHttpEquivXUaCompatible.php │ ├── MetaNameAmp3pIframeSrc.php │ ├── MetaNameAmp4adsId.php │ ├── MetaNameAmp4adsVars.php │ ├── MetaNameAmpAdDoubleclickSra.php │ ├── MetaNameAmpAdEnableRefresh.php │ ├── MetaNameAmpConsentBlocking.php │ ├── MetaNameAmpCtaLandingPageType.php │ ├── MetaNameAmpCtaType.php │ ├── MetaNameAmpCtaUrl.php │ ├── MetaNameAmpExperimentToken.php │ ├── MetaNameAmpExperimentsOptIn.php │ ├── MetaNameAmpGoogleClientidIdApi.php │ ├── MetaNameAmpLinkVariableAllowedOrigin.php │ ├── MetaNameAmpListLoadMore.php │ ├── MetaNameAmpRecaptchaInput.php │ ├── MetaNameAmpScriptSrc.php │ ├── MetaNameAmpStoryGeneratorName.php │ ├── MetaNameAmpStoryGeneratorVersion.php │ ├── MetaNameAmpToAmpNavigation.php │ ├── MetaNameAndContent.php │ ├── MetaNameAppleItunesApp.php │ ├── MetaNameViewport.php │ ├── Metadata.php │ ├── Meter.php │ ├── Multicol.php │ ├── Nav.php │ ├── Nextid.php │ ├── Nobr.php │ ├── Noscript.php │ ├── NoscriptEnclosureForAmpStyleTags.php │ ├── NoscriptImg.php │ ├── NoscriptStyleAmpBoilerplate.php │ ├── OP.php │ ├── Ol.php │ ├── Optgroup.php │ ├── Option.php │ ├── Output.php │ ├── P.php │ ├── Path.php │ ├── Pattern.php │ ├── Picture.php │ ├── PictureSource.php │ ├── Polygon.php │ ├── Polyline.php │ ├── Pre.php │ ├── Progress.php │ ├── Q.php │ ├── Radialgradient.php │ ├── RadialgradientStop.php │ ├── Rb.php │ ├── Rect.php │ ├── Rp.php │ ├── Rt.php │ ├── Rtc.php │ ├── Ruby.php │ ├── S.php │ ├── Samp.php │ ├── ScriptAmp3dGltf.php │ ├── ScriptAmp3qPlayer.php │ ├── ScriptAmpAccess.php │ ├── ScriptAmpAccessFewcents.php │ ├── ScriptAmpAccessLaterpay.php │ ├── ScriptAmpAccessPoool.php │ ├── ScriptAmpAccessScroll.php │ ├── ScriptAmpAccordion.php │ ├── ScriptAmpAccordion2.php │ ├── ScriptAmpActionMacro.php │ ├── ScriptAmpAdCustom.php │ ├── ScriptAmpAdExit.php │ ├── ScriptAmpAddthis.php │ ├── ScriptAmpAnalytics.php │ ├── ScriptAmpAnim.php │ ├── ScriptAmpAnimation.php │ ├── ScriptAmpApesterMedia.php │ ├── ScriptAmpAppBanner.php │ ├── ScriptAmpAudio.php │ ├── ScriptAmpAutoAds.php │ ├── ScriptAmpAutocomplete.php │ ├── ScriptAmpBaseCarousel.php │ ├── ScriptAmpBeopinion.php │ ├── ScriptAmpBind.php │ ├── ScriptAmpBodymovinAnimation.php │ ├── ScriptAmpBridPlayer.php │ ├── ScriptAmpBrightcove.php │ ├── ScriptAmpBrightcove2.php │ ├── ScriptAmpBysideContent.php │ ├── ScriptAmpCacheUrl.php │ ├── ScriptAmpCallTracking.php │ ├── ScriptAmpCarousel.php │ ├── ScriptAmpConnatixPlayer.php │ ├── ScriptAmpConsent.php │ ├── ScriptAmpDailymotion.php │ ├── ScriptAmpDailymotion2.php │ ├── ScriptAmpDateCountdown.php │ ├── ScriptAmpDateDisplay.php │ ├── ScriptAmpDatePicker.php │ ├── ScriptAmpDelightPlayer.php │ ├── ScriptAmpDynamicCssClasses.php │ ├── ScriptAmpEmbedlyCard.php │ ├── ScriptAmpExperiment.php │ ├── ScriptAmpFacebook.php │ ├── ScriptAmpFacebookComments.php │ ├── ScriptAmpFacebookLike.php │ ├── ScriptAmpFacebookPage.php │ ├── ScriptAmpFitText.php │ ├── ScriptAmpFitText2.php │ ├── ScriptAmpFont.php │ ├── ScriptAmpForm.php │ ├── ScriptAmpFxCollection.php │ ├── ScriptAmpFxFlyingCarpet.php │ ├── ScriptAmpGeo.php │ ├── ScriptAmpGfycat.php │ ├── ScriptAmpGist.php │ ├── ScriptAmpGoogleDocumentEmbed.php │ ├── ScriptAmpGoogleReadAloudPlayer.php │ ├── ScriptAmpGwdAnimation.php │ ├── ScriptAmpHulu.php │ ├── ScriptAmpIframe.php │ ├── ScriptAmpIframe2.php │ ├── ScriptAmpIframely.php │ ├── ScriptAmpImaVideo.php │ ├── ScriptAmpImageLightbox.php │ ├── ScriptAmpImageSlider.php │ ├── ScriptAmpImgur.php │ ├── ScriptAmpInlineGallery.php │ ├── ScriptAmpInputmask.php │ ├── ScriptAmpInstagram.php │ ├── ScriptAmpInstagram2.php │ ├── ScriptAmpInstallServiceworker.php │ ├── ScriptAmpIzlesene.php │ ├── ScriptAmpJwplayer.php │ ├── ScriptAmpKalturaPlayer.php │ ├── ScriptAmpLightbox.php │ ├── ScriptAmpLightbox2.php │ ├── ScriptAmpLightboxGallery.php │ ├── ScriptAmpLinkRewriter.php │ ├── ScriptAmpList.php │ ├── ScriptAmpLiveList.php │ ├── ScriptAmpMathml.php │ ├── ScriptAmpMathml2.php │ ├── ScriptAmpMegaMenu.php │ ├── ScriptAmpMegaphone.php │ ├── ScriptAmpMinuteMediaPlayer.php │ ├── ScriptAmpMowplayer.php │ ├── ScriptAmpMraid.php │ ├── ScriptAmpMustache.php │ ├── ScriptAmpNestedMenu.php │ ├── ScriptAmpNextPage.php │ ├── ScriptAmpNexxtvPlayer.php │ ├── ScriptAmpO2Player.php │ ├── ScriptAmpOnerrorV0Js.php │ ├── ScriptAmpOnerrorV0JsOrV0Mjs.php │ ├── ScriptAmpOnetapGoogle.php │ ├── ScriptAmpOoyalaPlayer.php │ ├── ScriptAmpOrientationObserver.php │ ├── ScriptAmpPanZoom.php │ ├── ScriptAmpPinterest.php │ ├── ScriptAmpPlaybuzz.php │ ├── ScriptAmpPositionObserver.php │ ├── ScriptAmpPowrPlayer.php │ ├── ScriptAmpReachPlayer.php │ ├── ScriptAmpRecaptchaInput.php │ ├── ScriptAmpRedbullPlayer.php │ ├── ScriptAmpReddit.php │ ├── ScriptAmpRender.php │ ├── ScriptAmpRiddleQuiz.php │ ├── ScriptAmpScript.php │ ├── ScriptAmpSelector.php │ ├── ScriptAmpSelector2.php │ ├── ScriptAmpSidebar.php │ ├── ScriptAmpSidebar2.php │ ├── ScriptAmpSkimlinks.php │ ├── ScriptAmpSlides.php │ ├── ScriptAmpSmartlinks.php │ ├── ScriptAmpSocialShare.php │ ├── ScriptAmpSocialShare2.php │ ├── ScriptAmpSoundcloud.php │ ├── ScriptAmpSoundcloud2.php │ ├── ScriptAmpSpringboardPlayer.php │ ├── ScriptAmpStickyAd.php │ ├── ScriptAmpStory.php │ ├── ScriptAmpStory360.php │ ├── ScriptAmpStoryAutoAds.php │ ├── ScriptAmpStoryAutoAnalytics.php │ ├── ScriptAmpStoryCaptions.php │ ├── ScriptAmpStoryDvhPolyfill.php │ ├── ScriptAmpStoryInteractive.php │ ├── ScriptAmpStoryPanningMedia.php │ ├── ScriptAmpStoryPlayer.php │ ├── ScriptAmpStoryShopping.php │ ├── ScriptAmpStorySubscriptions.php │ ├── ScriptAmpStreamGallery.php │ ├── ScriptAmpSubscriptions.php │ ├── ScriptAmpSubscriptionsGoogle.php │ ├── ScriptAmpTiktok.php │ ├── ScriptAmpTimeago.php │ ├── ScriptAmpTruncateText.php │ ├── ScriptAmpTwitter.php │ ├── ScriptAmpTwitter2.php │ ├── ScriptAmpUserNotification.php │ ├── ScriptAmpVideo.php │ ├── ScriptAmpVideo2.php │ ├── ScriptAmpVideoDocking.php │ ├── ScriptAmpVideoIframe.php │ ├── ScriptAmpVideoIframe2.php │ ├── ScriptAmpVimeo.php │ ├── ScriptAmpVimeo2.php │ ├── ScriptAmpVine.php │ ├── ScriptAmpViqeoPlayer.php │ ├── ScriptAmpVk.php │ ├── ScriptAmpWebPush.php │ ├── ScriptAmpWistiaPlayer.php │ ├── ScriptAmpWordpressEmbed.php │ ├── ScriptAmpYotpo.php │ ├── ScriptAmpYoutube.php │ ├── ScriptAmpYoutube2.php │ ├── ScriptCustomElementAmpAccordionAmp4email.php │ ├── ScriptCustomElementAmpAutocompleteAmp4email.php │ ├── ScriptCustomElementAmpBindAmp4email.php │ ├── ScriptCustomElementAmpCarouselAmp4email.php │ ├── ScriptCustomElementAmpFitTextAmp4email.php │ ├── ScriptCustomElementAmpFormAmp4email.php │ ├── ScriptCustomElementAmpImageLightboxAmp4email.php │ ├── ScriptCustomElementAmpLightboxAmp4ads.php │ ├── ScriptCustomElementAmpLightboxAmp4email.php │ ├── ScriptCustomElementAmpListAmp4email.php │ ├── ScriptCustomElementAmpSelectorAmp4email.php │ ├── ScriptCustomElementAmpSidebarAmp4email.php │ ├── ScriptCustomElementAmpTimeagoAmp4email.php │ ├── ScriptCustomTemplateAmpMustacheAmp4ads.php │ ├── ScriptCustomTemplateAmpMustacheAmp4email.php │ ├── ScriptIdAmpRtc.php │ ├── ScriptTypeApplicationLdJson.php │ ├── ScriptTypeTextPlain.php │ ├── ScriptTypeTextPlainAmp4email.php │ ├── Section.php │ ├── SectionAmp4email.php │ ├── Select.php │ ├── Slot.php │ ├── Small.php │ ├── Solidcolor.php │ ├── Spacer.php │ ├── Span.php │ ├── SpanAmpNestedMenu.php │ ├── SpanSwgAmpCacheNonce.php │ ├── StandardImage.php │ ├── StandardImg.php │ ├── Strike.php │ ├── Strong.php │ ├── StyleAmpCustom.php │ ├── StyleAmpCustomAmp4ads.php │ ├── StyleAmpCustomAmp4email.php │ ├── StyleAmpCustomCssStrict.php │ ├── StyleAmpCustomLengthCheck.php │ ├── StyleAmpKeyframes.php │ ├── StyleAmpNoscript.php │ ├── StyleAmpRuntimeTransformed.php │ ├── Sub.php │ ├── SubscriptionsScriptCiphertext.php │ ├── SubscriptionsSectionContentSwgAmpCacheNonce.php │ ├── Summary.php │ ├── Sup.php │ ├── Svg.php │ ├── SvgTitle.php │ ├── Switch_.php │ ├── Symbol.php │ ├── Table.php │ ├── Tbody.php │ ├── Td.php │ ├── Template.php │ ├── TemplateAmp4email.php │ ├── Text.php │ ├── Textarea.php │ ├── Textpath.php │ ├── Tfoot.php │ ├── Th.php │ ├── Thead.php │ ├── Time.php │ ├── Title.php │ ├── TitleAmp4email.php │ ├── Tr.php │ ├── Tref.php │ ├── Tspan.php │ ├── Tt.php │ ├── U.php │ ├── Ul.php │ ├── Use_.php │ ├── Var_.php │ ├── Video.php │ ├── VideoSource.php │ ├── VideoTrack.php │ ├── VideoTrackKindSubtitles.php │ ├── View.php │ ├── Vkern.php │ └── Wbr.php └── TagWithExtensionSpec.php ├── ValidateTagResult.php ├── ValidationEngine.php ├── ValidationError.php ├── ValidationErrorCollection.php ├── ValidationHandler.php ├── ValidationResult.php ├── ValidationSeverity.php ├── ValidationStatus.php ├── ValidatorRules.php ├── ValueSetProvision.php └── ValueSetRequirement.php /.codecov.yml: -------------------------------------------------------------------------------- 1 | codecov: 2 | token: 9ce03549-9167-4989-a3a0-4aaef39399c4 3 | 4 | coverage: 5 | status: 6 | # Patch-level coverage (how well is the PR tested) 7 | patch: 8 | default: 9 | threshold: 80% 10 | 11 | # Project-level coverage 12 | project: 13 | default: 14 | target: auto 15 | threshold: 0.1% 16 | 17 | # See https://docs.codecov.io/docs/ignoring-paths 18 | ignore: 19 | - "/bin" 20 | 21 | comment: false 22 | 23 | github_checks: 24 | annotations: false 25 | -------------------------------------------------------------------------------- /bin/amp: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | run(); 23 | -------------------------------------------------------------------------------- /include/compatibility-fixes.php: -------------------------------------------------------------------------------- 1 | > $compatibilityFixes 7 | */ 8 | $compatibilityFixes = [ 9 | CompatibilityFix\MovedClasses::class, 10 | ]; 11 | 12 | foreach ($compatibilityFixes as $compatibilityFix) { 13 | $compatibilityFix::register(); 14 | } 15 | -------------------------------------------------------------------------------- /resources/local_fallback/rtv/metadata: -------------------------------------------------------------------------------- 1 | {"ampRuntimeVersion":"012409271652000","ampCssUrl":"https://cdn.ampproject.org/rtv/012409271652000/v0.css","canaryPercentage":"0.005","diversions":["002410031633000","022409271652000","032410031633000","042410081535000","052409271652000"],"ltsRuntimeVersion":"012406252034000","ltsCssUrl":"https://cdn.ampproject.org/rtv/012406252034000/v0.css"} -------------------------------------------------------------------------------- /src/CompatibilityFix.php: -------------------------------------------------------------------------------- 1 | indexCounter)) { 30 | ++$this->indexCounter[$prefix]; 31 | } else { 32 | $this->indexCounter[$prefix] = 0; 33 | } 34 | $uniqueId = (string)$this->indexCounter[$prefix]; 35 | if ($prefix) { 36 | $uniqueId = "{$prefix}-{$uniqueId}"; 37 | } 38 | return $uniqueId; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/Exception/AmpException.php: -------------------------------------------------------------------------------- 1 | 80) { 24 | $html = Str::substring($html, 0, 77) . '...'; 25 | } 26 | 27 | $message = "Failed to parse the provided HTML document ({$html})."; 28 | 29 | return new self($message); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Exception/FailedToParseUrl.php: -------------------------------------------------------------------------------- 1 | $accepted Array of acceptable values. 19 | * @param string $actual Value that was actually provided. 20 | * @return self 21 | */ 22 | public static function forValue($option, $accepted, $actual) 23 | { 24 | $acceptedString = implode(', ', $accepted); 25 | $message = "The value for the option '{$option}' expected the value to be one of " 26 | . "[{$acceptedString}], got '{$actual}' instead."; 27 | 28 | return new self($message); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Exception/InvalidSpecName.php: -------------------------------------------------------------------------------- 1 | tag, but before open tag. 28 | const IN_BODY = 5; 29 | const IN_SVG = 6; 30 | 31 | // We don't track the region after the closing body tag. 32 | } 33 | -------------------------------------------------------------------------------- /src/Internal.php: -------------------------------------------------------------------------------- 1 | tag that was targeted. 26 | * @return self 27 | */ 28 | public static function fromExceptionForScriptElement(Exception $exception, Element $script) 29 | { 30 | return new self(sprintf(self::SCRIPT_EXCEPTION_MESSAGE, $exception, new ElementDump($script))); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Optimizer/Error/InvalidJson.php: -------------------------------------------------------------------------------- 1 | 35 | */ 36 | const ATTRIBUTES = [ 37 | Attribute::DATE => [], 38 | Attribute::INPUT_SELECTOR => [], 39 | ]; 40 | } 41 | -------------------------------------------------------------------------------- /src/Validator/Spec/AttributeList/AmpFacebook.php: -------------------------------------------------------------------------------- 1 | $dataHref 21 | */ 22 | final class AmpFacebook extends AttributeList implements Identifiable 23 | { 24 | /** 25 | * ID of the attribute list. 26 | * 27 | * @var string 28 | */ 29 | const ID = 'amp-facebook'; 30 | 31 | /** 32 | * Array of attributes. 33 | * 34 | * @var array 35 | */ 36 | const ATTRIBUTES = [ 37 | Attribute::DATA_HREF => [ 38 | SpecRule::MANDATORY => true, 39 | ], 40 | ]; 41 | } 42 | -------------------------------------------------------------------------------- /src/Validator/Spec/AttributeList/NonceAttr.php: -------------------------------------------------------------------------------- 1 | > $nonce 21 | */ 22 | final class NonceAttr extends AttributeList implements Identifiable 23 | { 24 | /** 25 | * ID of the attribute list. 26 | * 27 | * @var string 28 | */ 29 | const ID = 'nonce-attr'; 30 | 31 | /** 32 | * Array of attributes. 33 | * 34 | * @var array 35 | */ 36 | const ATTRIBUTES = [ 37 | Attribute::NONCE => [ 38 | SpecRule::DISABLED_BY => [ 39 | Attribute::AMP4EMAIL, 40 | ], 41 | ], 42 | ]; 43 | } 44 | -------------------------------------------------------------------------------- /src/Validator/Spec/AttributeList/SvgStyleAttr.php: -------------------------------------------------------------------------------- 1 | $style 21 | */ 22 | final class SvgStyleAttr extends AttributeList implements Identifiable 23 | { 24 | /** 25 | * ID of the attribute list. 26 | * 27 | * @var string 28 | */ 29 | const ID = 'svg-style-attr'; 30 | 31 | /** 32 | * Array of attributes. 33 | * 34 | * @var array 35 | */ 36 | const ATTRIBUTES = [ 37 | Attribute::STYLE => [ 38 | SpecRule::VALUE_DOC_SVG_CSS => true, 39 | ], 40 | ]; 41 | } 42 | -------------------------------------------------------------------------------- /src/Validator/Spec/DescendantTagList/AmpStoryBookendAllowedDescendants.php: -------------------------------------------------------------------------------- 1 | 32 | */ 33 | const DESCENDANT_TAGS = [ 34 | Element::SCRIPT, 35 | ]; 36 | } 37 | -------------------------------------------------------------------------------- /src/Validator/Spec/DescendantTagList/AmpStoryPlayerAllowedDescendants.php: -------------------------------------------------------------------------------- 1 | 33 | */ 34 | const DESCENDANT_TAGS = [ 35 | Element::A, 36 | Element::SPAN, 37 | Internal::SIZER, 38 | Element::IMG, 39 | ]; 40 | } 41 | -------------------------------------------------------------------------------- /src/Validator/Spec/DescendantTagList/AmpStorySocialShareAllowedDescendants.php: -------------------------------------------------------------------------------- 1 | 32 | */ 33 | const DESCENDANT_TAGS = [ 34 | Element::SCRIPT, 35 | ]; 36 | } 37 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/AmpEmailMissingStrictCssAttr.php: -------------------------------------------------------------------------------- 1 | 'Tag \'html\' marked with attribute \'amp4email\' is missing the corresponding attribute \'data-css-strict\' for enabling strict CSS validation. This may become an error in the future.', 36 | ]; 37 | } 38 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/AttrDisallowedByImpliedLayout.php: -------------------------------------------------------------------------------- 1 | 'The attribute \'%1\' in tag \'%2\' is disallowed by implied layout \'%3\'.', 37 | SpecRule::SPECIFICITY => 51, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/AttrDisallowedBySpecifiedLayout.php: -------------------------------------------------------------------------------- 1 | 'The attribute \'%1\' in tag \'%2\' is disallowed by specified layout \'%3\'.', 37 | SpecRule::SPECIFICITY => 52, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/AttrMissingRequiredExtension.php: -------------------------------------------------------------------------------- 1 | 'The attribute \'%1\' requires including the \'%2\' extension JavaScript.', 37 | SpecRule::SPECIFICITY => 13, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/AttrRequiredButMissing.php: -------------------------------------------------------------------------------- 1 | 'The attribute \'%1\' in tag \'%2\' is missing or incorrect, but required by attribute \'%3\'.', 37 | SpecRule::SPECIFICITY => 32, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/AttrValueRequiredByLayout.php: -------------------------------------------------------------------------------- 1 | 'Invalid value \'%1\' for attribute \'%2\' in tag \'%3\' - for layout \'%4\', set the attribute \'%2\' to value \'%5\'.', 37 | SpecRule::SPECIFICITY => 28, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/BaseTagMustPreceedAllUrls.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\', which contains URLs, was found earlier in the document than the BASE element.', 37 | SpecRule::SPECIFICITY => 90, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CdataViolatesDenylist.php: -------------------------------------------------------------------------------- 1 | 'The text inside tag \'%1\' contains \'%2\', which is disallowed.', 37 | SpecRule::SPECIFICITY => 2, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssExcessivelyNested.php: -------------------------------------------------------------------------------- 1 | 'CSS excessively nested in tag \'%1\'.', 37 | SpecRule::SPECIFICITY => 125, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxBadUrl.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - bad url.', 37 | SpecRule::SPECIFICITY => 63, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxDisallowedAttrSelector.php: -------------------------------------------------------------------------------- 1 | 'CSS error in tag \'%1\' - disallowed attribute selector \'%2\'.', 37 | SpecRule::SPECIFICITY => 120, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxDisallowedDomain.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - invalid domain \'%2\'.', 37 | SpecRule::SPECIFICITY => 72, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxDisallowedImportant.php: -------------------------------------------------------------------------------- 1 | 'Usage of the !important CSS qualifier is not allowed.', 37 | SpecRule::SPECIFICITY => 123, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxDisallowedKeyframeInsideKeyframe.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - keyframe inside keyframe is not allowed.', 37 | SpecRule::SPECIFICITY => 115, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxDisallowedMediaFeature.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - disallowed media feature \'%2\'.', 37 | SpecRule::SPECIFICITY => 119, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxDisallowedMediaType.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - disallowed media type \'%2\'.', 37 | SpecRule::SPECIFICITY => 118, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxDisallowedPropertyValue.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - the property \'%2\' is set to the disallowed value \'%3\'.', 37 | SpecRule::SPECIFICITY => 85, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxDisallowedPseudoClass.php: -------------------------------------------------------------------------------- 1 | 'CSS error in tag \'%1\' - disallowed pseudo class \'%2\'.', 37 | SpecRule::SPECIFICITY => 121, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxDisallowedPseudoElement.php: -------------------------------------------------------------------------------- 1 | 'CSS error in tag \'%1\' - disallowed pseudo element \'%2\'.', 37 | SpecRule::SPECIFICITY => 122, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxDisallowedRelativeUrl.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - disallowed relative url \'%2\'.', 37 | SpecRule::SPECIFICITY => 75, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxEofInPreludeOfQualifiedRule.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - end of stylesheet encountered in prelude of a qualified rule.', 37 | SpecRule::SPECIFICITY => 64, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxErrorInPseudoSelector.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - invalid pseudo selector.', 37 | SpecRule::SPECIFICITY => 67, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxIncompleteDeclaration.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - incomplete declaration.', 37 | SpecRule::SPECIFICITY => 66, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxInvalidAtRule.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - saw invalid at rule \'@%2\'.', 37 | SpecRule::SPECIFICITY => 39, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxInvalidAttrSelector.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - invalid attribute selector.', 37 | SpecRule::SPECIFICITY => 79, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxInvalidDeclaration.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - invalid declaration.', 37 | SpecRule::SPECIFICITY => 65, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxInvalidProperty.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - invalid property \'%2\'. The only allowed properties are \'%3\'.', 37 | SpecRule::SPECIFICITY => 111, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxInvalidPropertyNolist.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - invalid property \'%2\'.', 37 | SpecRule::SPECIFICITY => 112, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxInvalidUrl.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - invalid url \'%2\'.', 37 | SpecRule::SPECIFICITY => 73, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxInvalidUrlProtocol.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - invalid url protocol \'%2:\'.', 37 | SpecRule::SPECIFICITY => 74, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxMalformedMediaQuery.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - malformed media query.', 37 | SpecRule::SPECIFICITY => 117, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxMissingSelector.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - missing selector.', 37 | SpecRule::SPECIFICITY => 68, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxMissingUrl.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - missing url.', 37 | SpecRule::SPECIFICITY => 71, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxNotASelectorStart.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - not a selector start.', 37 | SpecRule::SPECIFICITY => 69, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxQualifiedRuleHasNoDeclarations.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - qualified rule \'%2\' has no declarations.', 37 | SpecRule::SPECIFICITY => 113, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxStrayTrailingBackslash.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - stray trailing backslash.', 37 | SpecRule::SPECIFICITY => 60, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxUnparsedInputRemainsInSelector.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - unparsed input remains in selector.', 37 | SpecRule::SPECIFICITY => 70, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxUnterminatedComment.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - unterminated comment.', 37 | SpecRule::SPECIFICITY => 61, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/CssSyntaxUnterminatedString.php: -------------------------------------------------------------------------------- 1 | 'CSS syntax error in tag \'%1\' - unterminated string.', 37 | SpecRule::SPECIFICITY => 62, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DeprecatedAttr.php: -------------------------------------------------------------------------------- 1 | 'The attribute \'%1\' in tag \'%2\' is deprecated - use \'%3\' instead.', 37 | SpecRule::SPECIFICITY => 104, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DeprecatedTag.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' is deprecated - use \'%2\' instead.', 37 | SpecRule::SPECIFICITY => 105, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DevModeOnly.php: -------------------------------------------------------------------------------- 1 | 'Tag \'html\' marked with attribute \'data-ampdevmode\'. Validator will suppress errors regarding any other tag with this attribute.', 37 | SpecRule::SPECIFICITY => 1000, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DisallowedAmpDomain.php: -------------------------------------------------------------------------------- 1 | 'The script tag includes an invalid AMP domain in the src attribute.', 37 | SpecRule::SPECIFICITY => 23, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DisallowedAttr.php: -------------------------------------------------------------------------------- 1 | 'The attribute \'%1\' may not appear in tag \'%2\'.', 37 | SpecRule::SPECIFICITY => 25, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DisallowedChildTagName.php: -------------------------------------------------------------------------------- 1 | 'Tag \'%1\' is disallowed as child of tag \'%2\'. Child tag must be one of %3.', 37 | SpecRule::SPECIFICITY => 77, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DisallowedDomain.php: -------------------------------------------------------------------------------- 1 | 'The domain \'%3\' for attribute \'%1\' in tag \'%2\' is disallowed.', 37 | SpecRule::SPECIFICITY => 56, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DisallowedFirstChildTagName.php: -------------------------------------------------------------------------------- 1 | 'Tag \'%1\' is disallowed as first child of tag \'%2\'. First child tag must be one of %3.', 37 | SpecRule::SPECIFICITY => 78, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DisallowedManufacturedBody.php: -------------------------------------------------------------------------------- 1 | 'Tag or text which is only allowed inside the body section found outside of the body section.', 37 | SpecRule::SPECIFICITY => 106, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DisallowedPropertyInAttrValue.php: -------------------------------------------------------------------------------- 1 | 'The property \'%1\' in attribute \'%2\' in tag \'%3\' is disallowed.', 37 | SpecRule::SPECIFICITY => 42, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DisallowedRelativeUrl.php: -------------------------------------------------------------------------------- 1 | 'The relative URL \'%3\' for attribute \'%1\' in tag \'%2\' is disallowed.', 37 | SpecRule::SPECIFICITY => 54, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DisallowedScriptTag.php: -------------------------------------------------------------------------------- 1 | 'Custom JavaScript is not allowed.', 37 | SpecRule::SPECIFICITY => 102, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DisallowedStyleAttr.php: -------------------------------------------------------------------------------- 1 | 'The inline \'style\' attribute is not allowed in AMP documents. Use \'style amp-custom\' tag instead.', 37 | SpecRule::SPECIFICITY => 59, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DisallowedTag.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' is disallowed.', 37 | SpecRule::SPECIFICITY => 24, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DisallowedTagAncestor.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' may not appear as a descendant of tag \'%2\'.', 37 | SpecRule::SPECIFICITY => 5, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DocumentSizeLimitExceeded.php: -------------------------------------------------------------------------------- 1 | 'Document exceeded %1 bytes limit. Actual size %2 bytes.', 37 | SpecRule::SPECIFICITY => 126, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DocumentTooComplex.php: -------------------------------------------------------------------------------- 1 | 'The document is too complex.', 37 | SpecRule::SPECIFICITY => 107, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DuplicateAttribute.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' contains the attribute \'%2\' repeated multiple times.', 37 | SpecRule::SPECIFICITY => 27, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DuplicateDimension.php: -------------------------------------------------------------------------------- 1 | 'Multiple image candidates with the same width or pixel density found in attribute \'%1\' in tag \'%2\'.', 37 | SpecRule::SPECIFICITY => 53, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DuplicateReferencePoint.php: -------------------------------------------------------------------------------- 1 | 'The reference point \'%1\' for \'%2\' must be unique but a duplicate was encountered.', 37 | SpecRule::SPECIFICITY => 82, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DuplicateUniqueTag.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' appears more than once in the document.', 37 | SpecRule::SPECIFICITY => 33, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/DuplicateUniqueTagWarning.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' appears more than once in the document. This will soon be an error.', 37 | SpecRule::SPECIFICITY => 34, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/ExtensionUnused.php: -------------------------------------------------------------------------------- 1 | 'The extension \'%1\' was found on this page, but is unused. Please remove this extension.', 37 | SpecRule::SPECIFICITY => 15, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/GeneralDisallowedTag.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' is disallowed except in specific forms.', 37 | SpecRule::SPECIFICITY => 103, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/ImpliedLayoutInvalid.php: -------------------------------------------------------------------------------- 1 | 'The implied layout \'%1\' is not supported by tag \'%2\'.', 37 | SpecRule::SPECIFICITY => 49, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/IncorrectMinNumChildTags.php: -------------------------------------------------------------------------------- 1 | 'Tag \'%1\' must have a minimum of %2 child tags - saw %3 child tags.', 37 | SpecRule::SPECIFICITY => 108, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/IncorrectNumChildTags.php: -------------------------------------------------------------------------------- 1 | 'Tag \'%1\' must have %2 child tags - saw %3 child tags.', 37 | SpecRule::SPECIFICITY => 76, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/IncorrectScriptReleaseVersion.php: -------------------------------------------------------------------------------- 1 | 'The script version for \'%1\' is a %2 version which mismatches with the first script on the page using the %3 version.', 37 | SpecRule::SPECIFICITY => 22, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/InlineScriptTooLong.php: -------------------------------------------------------------------------------- 1 | 'The inline script is %1 bytes, which exceeds the limit of %2 bytes.', 37 | SpecRule::SPECIFICITY => 38, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/InlineStyleTooLong.php: -------------------------------------------------------------------------------- 1 | 'The inline style specified in tag \'%1\' is too long - it contains %2 bytes whereas the limit is %3 bytes.', 37 | SpecRule::SPECIFICITY => 37, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/InvalidAttrValue.php: -------------------------------------------------------------------------------- 1 | 'The attribute \'%1\' in tag \'%2\' is set to the invalid value \'%3\'.', 37 | SpecRule::SPECIFICITY => 26, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/InvalidDoctypeHtml.php: -------------------------------------------------------------------------------- 1 | 'Invalid or missing doctype declaration. Should be \'!doctype html\'.', 37 | SpecRule::SPECIFICITY => 128, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/InvalidExtensionPath.php: -------------------------------------------------------------------------------- 1 | 'The extension \'%1\' has a path \'%2\' which is invalid. Please use a valid path for this extension.', 37 | SpecRule::SPECIFICITY => 19, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/InvalidExtensionVersion.php: -------------------------------------------------------------------------------- 1 | 'The extension \'%1\' is referenced at version \'%2\' which is an invalid version. Please use a valid version of this extension.', 37 | SpecRule::SPECIFICITY => 18, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/InvalidJsonCdata.php: -------------------------------------------------------------------------------- 1 | 'The script tag contains invalid JSON that cannot be parsed.', 37 | SpecRule::SPECIFICITY => 4, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/InvalidPropertyValueInAttrValue.php: -------------------------------------------------------------------------------- 1 | 'The property \'%1\' in attribute \'%2\' in tag \'%3\' is set to \'%4\', which is invalid.', 37 | SpecRule::SPECIFICITY => 41, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/InvalidUrl.php: -------------------------------------------------------------------------------- 1 | 'Malformed URL \'%3\' for attribute \'%1\' in tag \'%2\'.', 37 | SpecRule::SPECIFICITY => 58, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/InvalidUrlProtocol.php: -------------------------------------------------------------------------------- 1 | 'Invalid URL protocol \'%3:\' for attribute \'%1\' in tag \'%2\'.', 37 | SpecRule::SPECIFICITY => 57, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/InvalidUtf8.php: -------------------------------------------------------------------------------- 1 | 'The document contains invalid UTF8.', 37 | SpecRule::SPECIFICITY => 124, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/LtsScriptAfterNonLts.php: -------------------------------------------------------------------------------- 1 | '\'%1\' must use the non-LTS version to correspond with the first script in the page, which does not use LTS.', 37 | SpecRule::SPECIFICITY => 21, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/MandatoryAnyofAttrMissing.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' is missing a mandatory attribute - pick at least one of %2.', 37 | SpecRule::SPECIFICITY => 31, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/MandatoryAttrMissing.php: -------------------------------------------------------------------------------- 1 | 'The mandatory attribute \'%1\' is missing in tag \'%2\'.', 37 | SpecRule::SPECIFICITY => 29, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/MandatoryCdataMissingOrIncorrect.php: -------------------------------------------------------------------------------- 1 | 'The mandatory text inside tag \'%1\' is missing or incorrect.', 37 | SpecRule::SPECIFICITY => 1, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/MandatoryLastChildTag.php: -------------------------------------------------------------------------------- 1 | 'Tag \'%1\', if present, must be the last child of tag \'%2\'.', 37 | SpecRule::SPECIFICITY => 110, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/MandatoryOneofAttrMissing.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' is missing a mandatory attribute - pick one of %2.', 37 | SpecRule::SPECIFICITY => 30, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/MandatoryPropertyMissingFromAttrValue.php: -------------------------------------------------------------------------------- 1 | 'The property \'%1\' is missing from attribute \'%2\' in tag \'%3\'.', 37 | SpecRule::SPECIFICITY => 40, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/MandatoryReferencePointMissing.php: -------------------------------------------------------------------------------- 1 | 'The mandatory reference point \'%1\' for \'%2\' is missing.', 37 | SpecRule::SPECIFICITY => 81, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/MandatoryTagAncestor.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' may only appear as a descendant of tag \'%2\'.', 37 | SpecRule::SPECIFICITY => 6, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/MandatoryTagAncestorWithHint.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' may only appear as a descendant of tag \'%2\'. Did you mean \'%3\'?', 37 | SpecRule::SPECIFICITY => 7, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/MandatoryTagMissing.php: -------------------------------------------------------------------------------- 1 | 'The mandatory tag \'%1\' is missing or incorrect.', 37 | SpecRule::SPECIFICITY => 8, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/MissingLayoutAttributes.php: -------------------------------------------------------------------------------- 1 | 'Incomplete layout attributes specified for tag \'%1\'. For example, provide attributes \'width\' and \'height\'.', 37 | SpecRule::SPECIFICITY => 48, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/MissingRequiredExtension.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' requires including the \'%2\' extension JavaScript.', 37 | SpecRule::SPECIFICITY => 12, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/MissingUrl.php: -------------------------------------------------------------------------------- 1 | 'Missing URL for attribute \'%1\' in tag \'%2\'.', 37 | SpecRule::SPECIFICITY => 55, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/MutuallyExclusiveAttrs.php: -------------------------------------------------------------------------------- 1 | 'Mutually exclusive attributes encountered in tag \'%1\' - pick one of %2.', 37 | SpecRule::SPECIFICITY => 43, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/NonLtsScriptAfterLts.php: -------------------------------------------------------------------------------- 1 | '\'%1\' must use the LTS version to correspond with the first script in the page, which uses LTS.', 37 | SpecRule::SPECIFICITY => 20, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/NonWhitespaceCdataEncountered.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' contains text, which is disallowed.', 37 | SpecRule::SPECIFICITY => 3, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/SpecifiedLayoutInvalid.php: -------------------------------------------------------------------------------- 1 | 'The specified layout \'%1\' is not supported by tag \'%2\'.', 37 | SpecRule::SPECIFICITY => 50, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/StylesheetTooLong.php: -------------------------------------------------------------------------------- 1 | 'The author stylesheet specified in tag \'%1\' is too long - document contains %2 bytes whereas the limit is %3 bytes.', 37 | SpecRule::SPECIFICITY => 35, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/TagExcludedByTag.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' is present, but is excluded by the presence of \'%2\'.', 37 | SpecRule::SPECIFICITY => 11, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/TagNotAllowedToHaveSiblings.php: -------------------------------------------------------------------------------- 1 | 'Tag \'%1\' is not allowed to have any sibling tags (\'%2\' should only have 1 child).', 37 | SpecRule::SPECIFICITY => 109, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/TagReferencePointConflict.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' conflicts with reference point \'%2\' because both define reference points.', 37 | SpecRule::SPECIFICITY => 83, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/TagRequiredByMissing.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' is missing or incorrect, but required by \'%2\'.', 37 | SpecRule::SPECIFICITY => 10, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/TemplateInAttrName.php: -------------------------------------------------------------------------------- 1 | 'Mustache template syntax in attribute name \'%1\' in tag \'%2\'.', 37 | SpecRule::SPECIFICITY => 46, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/TemplatePartialInAttrValue.php: -------------------------------------------------------------------------------- 1 | 'The attribute \'%1\' in tag \'%2\' is set to \'%3\', which contains a Mustache template partial.', 37 | SpecRule::SPECIFICITY => 45, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/UnescapedTemplateInAttrValue.php: -------------------------------------------------------------------------------- 1 | 'The attribute \'%1\' in tag \'%2\' is set to \'%3\', which contains unescaped Mustache template syntax.', 37 | SpecRule::SPECIFICITY => 44, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/UnknownCode.php: -------------------------------------------------------------------------------- 1 | 'Unknown error.', 37 | SpecRule::SPECIFICITY => 0, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/ValueSetMismatch.php: -------------------------------------------------------------------------------- 1 | 'Attribute \'%1\' in tag \'%2\' contains a value that does not match any other tags on the page.', 37 | SpecRule::SPECIFICITY => 127, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/WarningExtensionUnused.php: -------------------------------------------------------------------------------- 1 | 'The extension \'%1\' was found on this page, but is unused (no \'%2\' tag seen). This may become an error in the future.', 37 | SpecRule::SPECIFICITY => 16, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/WarningTagRequiredByMissing.php: -------------------------------------------------------------------------------- 1 | 'The tag \'%1\' is missing or incorrect, but required by \'%2\'. This will soon be an error.', 37 | SpecRule::SPECIFICITY => 14, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Error/WrongParentTag.php: -------------------------------------------------------------------------------- 1 | 'The parent tag of tag \'%1\' is \'%2\', but it can only be \'%3\'.', 37 | SpecRule::SPECIFICITY => 9, 38 | ]; 39 | } 40 | -------------------------------------------------------------------------------- /src/Validator/Spec/Identifiable.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Abbr extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'ABBR'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::ABBR, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Acronym.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Acronym extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'ACRONYM'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::ACRONYM, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | ], 43 | ]; 44 | } 45 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/B.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class B extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'B'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::B, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Bdi.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Bdi extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'BDI'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::BDI, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | ], 44 | ]; 45 | } 46 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Big.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Big extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'BIG'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::BIG, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | ], 43 | ]; 44 | } 45 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Br.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Br extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'BR'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::BR, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Center.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Center extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'CENTER'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::CENTER, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | ], 43 | ]; 44 | } 45 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Cite.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Cite extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'CITE'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::CITE, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Code.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Code extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'CODE'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::CODE, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Data.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Data extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'DATA'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::DATA, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Dd.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Dd extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'DD'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::DD, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Dfn.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Dfn extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'DFN'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::DFN, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Dir.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Dir extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'DIR'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::DIR, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | ], 43 | ]; 44 | } 45 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Dl.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Dl extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'DL'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::DL, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Dt.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Dt extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'DT'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::DT, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Em.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Em extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'EM'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::EM, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Hgroup.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Hgroup extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'HGROUP'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::HGROUP, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | ], 43 | ]; 44 | } 45 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Hr.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Hr extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'HR'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::HR, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/I.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class I extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'I'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::I, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Kbd.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Kbd extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'KBD'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::KBD, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Listing.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Listing extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'LISTING'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::LISTING, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | ], 43 | ]; 44 | } 45 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Multicol.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Multicol extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'MULTICOL'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::MULTICOL, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | ], 43 | ]; 44 | } 45 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Nav.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Nav extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'NAV'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::NAV, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Nextid.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Nextid extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'NEXTID'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::NEXTID, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | ], 43 | ]; 44 | } 45 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Nobr.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Nobr extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'NOBR'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::NOBR, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | ], 43 | ]; 44 | } 45 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/OP.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class OP extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'O:P'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::O_P, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | ], 43 | ]; 44 | } 45 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Pre.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Pre extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'PRE'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::PRE, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Rb.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Rb extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'RB'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::RB, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Rp.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Rp extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'RP'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::RP, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Rt.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Rt extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'RT'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::RT, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Rtc.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Rtc extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'RTC'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::RTC, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | ], 44 | ]; 45 | } 46 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/S.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class S extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'S'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::S, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Spacer.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Spacer extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'SPACER'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::SPACER, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | ], 43 | ]; 44 | } 45 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Strike.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Strike extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'STRIKE'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::STRIKE, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | ], 43 | ]; 44 | } 45 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Sub.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Sub extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'SUB'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::SUB, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Sup.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Sup extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'SUP'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::SUP, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Tt.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Tt extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'TT'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::TT, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | ], 43 | ]; 44 | } 45 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/U.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class U extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'U'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::U, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Ul.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Ul extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'UL'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::UL, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/Spec/Tag/Wbr.php: -------------------------------------------------------------------------------- 1 | $htmlFormat 23 | */ 24 | final class Wbr extends Tag implements Identifiable 25 | { 26 | /** 27 | * ID of the tag. 28 | * 29 | * @var string 30 | */ 31 | const ID = 'WBR'; 32 | 33 | /** 34 | * Array of spec rules. 35 | * 36 | * @var array 37 | */ 38 | const SPEC = [ 39 | SpecRule::TAG_NAME => Element::WBR, 40 | SpecRule::HTML_FORMAT => [ 41 | Format::AMP, 42 | Format::AMP4ADS, 43 | Format::AMP4EMAIL, 44 | ], 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /src/Validator/ValueSetProvision.php: -------------------------------------------------------------------------------- 1 |