a bit more organization and cleanup
This commit is contained in:
parent
f39dd9e1c2
commit
713446093a
47 changed files with 492 additions and 177 deletions
|
@ -2,10 +2,9 @@
|
|||
|
||||
namespace ByJoby\HTML\Containers\DocumentTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\ContentCategories\SectioningRoot;
|
||||
use ByJoby\HTML\Tags\ContainerTagInterface;
|
||||
use ByJoby\HTML\Tags\TagInterface;
|
||||
|
||||
interface BodyTagInterface extends ContainerTagInterface, SectioningRoot, FlowContent
|
||||
interface BodyTagInterface extends ContainerTagInterface, TagInterface
|
||||
{
|
||||
}
|
||||
}
|
|
@ -2,9 +2,10 @@
|
|||
|
||||
namespace ByJoby\HTML\Containers\DocumentTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\MetadataContent;
|
||||
use ByJoby\HTML\Tags\ContentTagInterface;
|
||||
use Stringable;
|
||||
|
||||
interface TitleTagInterface extends ContentTagInterface, MetadataContent
|
||||
interface TitleTagInterface
|
||||
{
|
||||
}
|
||||
public function setContent(string|Stringable $content): static;
|
||||
public function content(): string|Stringable;
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace ByJoby\HTML\ContentCategories;
|
||||
|
||||
interface FlowContent
|
||||
{
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace ByJoby\HTML\ContentCategories;
|
||||
|
||||
interface HeadingContent extends FlowContent
|
||||
{
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace ByJoby\HTML\ContentCategories;
|
||||
|
||||
interface MetadataContent
|
||||
{
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace ByJoby\HTML\ContentCategories;
|
||||
|
||||
interface PhrasingContent extends FlowContent
|
||||
{
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace ByJoby\HTML\ContentCategories;
|
||||
|
||||
interface SectioningContent extends FlowContent
|
||||
{
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace ByJoby\HTML\ContentCategories;
|
||||
|
||||
interface SectioningRoot
|
||||
{
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace ByJoby\HTML\DisplayTypes;
|
||||
|
||||
interface DisplayBlock
|
||||
{
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace ByJoby\HTML\DisplayTypes;
|
||||
|
||||
interface DisplayContents
|
||||
{
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace ByJoby\HTML\DisplayTypes;
|
||||
|
||||
interface DisplayInline
|
||||
{
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace ByJoby\HTML\DisplayTypes;
|
||||
|
||||
interface DisplayInlineBlock
|
||||
{
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace ByJoby\HTML\DisplayTypes;
|
||||
|
||||
interface DisplayNone
|
||||
{
|
||||
}
|
|
@ -5,6 +5,6 @@ namespace ByJoby\HTML\Html5\ContentSectioningTags;
|
|||
use ByJoby\HTML\ContentCategories\HeadingContent;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
abstract class AbstractHeaderTag extends AbstractContainerTag implements HeadingContent
|
||||
abstract class AbstractHeaderTag extends AbstractContainerTag
|
||||
{
|
||||
}
|
||||
}
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\ContentSectioningTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -20,7 +18,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/address
|
||||
*/
|
||||
class AddressTag extends AbstractContainerTag implements DisplayBlock, FlowContent
|
||||
class AddressTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'address';
|
||||
}
|
||||
|
|
|
@ -2,9 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\ContentSectioningTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\ContentCategories\SectioningContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -18,7 +15,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/article
|
||||
*/
|
||||
class ArticleTag extends AbstractContainerTag implements DisplayBlock, FlowContent, SectioningContent
|
||||
class ArticleTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'article';
|
||||
}
|
||||
|
|
|
@ -2,9 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\ContentSectioningTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\ContentCategories\SectioningContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -15,7 +12,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/aside
|
||||
*/
|
||||
class AsideTag extends AbstractContainerTag implements DisplayBlock, FlowContent, SectioningContent
|
||||
class AsideTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'aside';
|
||||
}
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\ContentSectioningTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -15,7 +13,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/footer
|
||||
*/
|
||||
class FooterTag extends AbstractContainerTag implements DisplayBlock, FlowContent
|
||||
class FooterTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'footer';
|
||||
}
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\ContentSectioningTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -14,7 +12,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/header
|
||||
*/
|
||||
class HeaderTag extends AbstractContainerTag implements DisplayBlock, FlowContent
|
||||
class HeaderTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'header';
|
||||
}
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\ContentSectioningTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -15,7 +13,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/main
|
||||
*/
|
||||
class MainTag extends AbstractContainerTag implements DisplayBlock, FlowContent
|
||||
class MainTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'main';
|
||||
}
|
||||
|
|
|
@ -2,9 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\ContentSectioningTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\ContentCategories\SectioningContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -16,7 +13,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav
|
||||
*/
|
||||
class NavTag extends AbstractContainerTag implements DisplayBlock, FlowContent, SectioningContent
|
||||
class NavTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'nav';
|
||||
}
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\ContentSectioningTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -18,7 +16,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/search
|
||||
*/
|
||||
class SearchTag extends AbstractContainerTag implements DisplayBlock, FlowContent
|
||||
class SearchTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'search';
|
||||
}
|
|
@ -2,9 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\ContentSectioningTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\ContentCategories\SectioningContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -15,7 +12,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/section
|
||||
*/
|
||||
class SectionTag extends AbstractContainerTag implements DisplayBlock, FlowContent, SectioningContent
|
||||
class SectionTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'section';
|
||||
}
|
||||
|
|
55
src/Html5/Enums/ReferrerPolicy_a.php
Normal file
55
src/Html5/Enums/ReferrerPolicy_a.php
Normal file
|
@ -0,0 +1,55 @@
|
|||
<?php
|
||||
|
||||
namespace ByJoby\HTML\Html5\Enums;
|
||||
|
||||
/**
|
||||
* How much of the referrer to send when following the link.
|
||||
*
|
||||
* Description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a
|
||||
*/
|
||||
enum ReferrerPolicy_a: string
|
||||
{
|
||||
/**
|
||||
* DEFAULT: Send a full URL when performing a same-origin request, only send
|
||||
* the origin when the protocol security level stays the same (HTTPS→HTTPS),
|
||||
* and send no header to a less secure destination (HTTPS→HTTP).
|
||||
*/
|
||||
case strictOriginWhenCrossOrigin = "strict-origin-when-cross-origin";
|
||||
/**
|
||||
* means that the Referer header will not be sent.
|
||||
*/
|
||||
case noReferrer = "no-referrer";
|
||||
/**
|
||||
* The Referer header will not be sent to origins without TLS (HTTPS).
|
||||
*/
|
||||
case noReferrerWhenDowngrade = "no-referrer-when-downgrade";
|
||||
/**
|
||||
* The sent referrer will be limited to the origin of the referring page:
|
||||
* its scheme, host, and port.
|
||||
*/
|
||||
case origin = "origin";
|
||||
/**
|
||||
* The referrer sent to other origins will be limited to the scheme, the
|
||||
* host, and the port. Navigations on the same origin will still include the
|
||||
* path.
|
||||
*/
|
||||
case originWhenCrossOrigin = "origin-when-cross-origin";
|
||||
/**
|
||||
* A referrer will be sent for same origin, but cross-origin requests will
|
||||
* contain no referrer information.
|
||||
*/
|
||||
case sameOrigin = "same-origin";
|
||||
/**
|
||||
* Only send the origin of the document as the referrer when the protocol
|
||||
* security level stays the same (HTTPS→HTTPS), but don't send it to a less
|
||||
* secure destination (HTTPS→HTTP).
|
||||
*/
|
||||
case strictOrigin = "strict-origin";
|
||||
/**
|
||||
* The referrer will include the origin and the path (but not the fragment,
|
||||
* password, or username). THIS VALUE IS UNSAFE, because it leaks origins
|
||||
* and paths from TLS-protected resources to insecure origins.
|
||||
*/
|
||||
case unsafeUrl = "unsafe-url";
|
||||
}
|
|
@ -13,6 +13,7 @@ class Html5Parser extends AbstractParser
|
|||
/** @var array<int,string> */
|
||||
protected $tag_namespaces = [
|
||||
'\\ByJoby\\HTML\\Html5\\Tags\\',
|
||||
'\\ByJoby\\HTML\\Html5\\InlineTextSemantics\\',
|
||||
'\\ByJoby\\HTML\\Html5\\TextContentTags\\',
|
||||
'\\ByJoby\\HTML\\Html5\\ContentSectioningTags\\',
|
||||
'\\ByJoby\\HTML\\Html5\\DocumentTags\\',
|
||||
|
|
326
src/Html5/InlineTextSemantics/ATag.php
Normal file
326
src/Html5/InlineTextSemantics/ATag.php
Normal file
|
@ -0,0 +1,326 @@
|
|||
<?php
|
||||
|
||||
namespace ByJoby\HTML\Html5\InlineTextSemantics;
|
||||
|
||||
use ByJoby\HTML\Html5\Enums\BooleanAttribute;
|
||||
use ByJoby\HTML\Html5\Enums\BrowsingContext;
|
||||
use ByJoby\HTML\Html5\Enums\ReferrerPolicy_a;
|
||||
use ByJoby\HTML\Html5\Enums\Rel_a;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
use Stringable;
|
||||
|
||||
/**
|
||||
* The <a> HTML element (or anchor element), with its href attribute, creates a
|
||||
* hyperlink to web pages, files, email addresses, locations in the same page,
|
||||
* or anything else a URL can address.
|
||||
*
|
||||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a
|
||||
*/
|
||||
class ATag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'a';
|
||||
|
||||
/**
|
||||
* Causes the browser to treat the linked URL as a download. Can be used
|
||||
* with or without a filename value.
|
||||
*
|
||||
* @return null|string|Stringable|BooleanAttribute::true
|
||||
*/
|
||||
public function download(): null|string|Stringable|BooleanAttribute
|
||||
{
|
||||
if ($this->attributes()['download'] === BooleanAttribute::true) return BooleanAttribute::true;
|
||||
else return $this->attributes()->asString('download');
|
||||
}
|
||||
|
||||
/**
|
||||
* Causes the browser to treat the linked URL as a download. Can be used
|
||||
* with or without a filename value.
|
||||
*
|
||||
* @param null|string|Stringable|BooleanAttribute $download
|
||||
* @return static
|
||||
*/
|
||||
public function setDownload(null|string|Stringable|BooleanAttribute $download): static
|
||||
{
|
||||
if ($download === BooleanAttribute::true) $this->attributes()['download'] = BooleanAttribute::true;
|
||||
elseif ($download === BooleanAttribute::false) $this->unsetDownload();
|
||||
elseif ($download) $this->attributes()['download'] = $download;
|
||||
else $this->unsetDownload();
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Causes the browser to treat the linked URL as a download. Can be used
|
||||
* with or without a filename value.
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public function unsetDownload(): static
|
||||
{
|
||||
unset($this->attributes()['download']);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The URL that the hyperlink points to. Links are not restricted to
|
||||
* HTTP-based URLs — they can use any URL scheme supported by browsers
|
||||
*
|
||||
* @return null|string|Stringable
|
||||
*/
|
||||
public function href(): null|string|Stringable
|
||||
{
|
||||
return $this->attributes()->asString('href');
|
||||
}
|
||||
|
||||
/**
|
||||
* The URL that the hyperlink points to. Links are not restricted to
|
||||
* HTTP-based URLs — they can use any URL scheme supported by browsers
|
||||
*
|
||||
* @param null|string|Stringable $href
|
||||
* @return static
|
||||
*/
|
||||
public function setHref(null|string|Stringable $href): static
|
||||
{
|
||||
if ($href) $this->attributes()['href'] = $href;
|
||||
else $this->unsetHref();
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The URL that the hyperlink points to. Links are not restricted to
|
||||
* HTTP-based URLs — they can use any URL scheme supported by browsers
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public function unsetHref(): static
|
||||
{
|
||||
$this->unsetHreflang();
|
||||
unset($this->attributes()['href']);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hints at the human language of the linked URL. No built-in functionality.
|
||||
* Allowed values are the same as the global lang attribute.
|
||||
*
|
||||
* @return null|string|Stringable
|
||||
*/
|
||||
public function hreflang(): null|string|Stringable
|
||||
{
|
||||
return $this->attributes()->asString('hreflang');
|
||||
}
|
||||
|
||||
/**
|
||||
* Hints at the human language of the linked URL. No built-in functionality.
|
||||
* Allowed values are the same as the global lang attribute.
|
||||
*
|
||||
* @param null|string|Stringable $hreflang
|
||||
* @return static
|
||||
*/
|
||||
public function setHreflang(null|string|Stringable $hreflang): static
|
||||
{
|
||||
if ($hreflang) $this->attributes()['hreflang'] = $hreflang;
|
||||
else $this->unsetHreflang();
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hints at the human language of the linked URL. No built-in functionality.
|
||||
* Allowed values are the same as the global lang attribute.
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public function unsetHreflang(): static
|
||||
{
|
||||
unset($this->attributes()['hreflang']);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* A space-separated list of URLs. When the link is followed, the browser
|
||||
* will send POST requests with the body PING to the URLs. Typically for
|
||||
* tracking.
|
||||
*
|
||||
* @return null|string|Stringable
|
||||
*/
|
||||
public function ping(): null|string|Stringable
|
||||
{
|
||||
return $this->attributes()->asString('ping');
|
||||
}
|
||||
|
||||
/**
|
||||
* A space-separated list of URLs. When the link is followed, the browser
|
||||
* will send POST requests with the body PING to the URLs. Typically for
|
||||
* tracking.
|
||||
*
|
||||
* @param null|string|Stringable $ping
|
||||
* @return static
|
||||
*/
|
||||
public function setPing(null|string|Stringable $ping): static
|
||||
{
|
||||
if ($ping) $this->attributes()['ping'] = $ping;
|
||||
else $this->unsetPing();
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* A space-separated list of URLs. When the link is followed, the browser
|
||||
* will send POST requests with the body PING to the URLs. Typically for
|
||||
* tracking.
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public function unsetPing(): static
|
||||
{
|
||||
unset($this->attributes()['ping']);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* An enum indicating which referrer to use when fetching the resource.
|
||||
*
|
||||
* @return null|ReferrerPolicy_a
|
||||
*/
|
||||
public function referrerpolicy(): null|ReferrerPolicy_a
|
||||
{
|
||||
return $this->attributes()->asEnum('referrerpolicy', ReferrerPolicy_a::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* An enum indicating which referrer to use when fetching the resource.
|
||||
*
|
||||
* @param null|ReferrerPolicy_a $referrerpolicy
|
||||
* @return static
|
||||
*/
|
||||
public function setReferrerpolicy(null|ReferrerPolicy_a $referrerpolicy): static
|
||||
{
|
||||
if ($referrerpolicy) $this->attributes()['referrerpolicy'] = $referrerpolicy->value;
|
||||
else $this->unsetReferrerpolicy();
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* An enum indicating which referrer to use when fetching the resource.
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public function unsetReferrerpolicy(): static
|
||||
{
|
||||
unset($this->attributes()['referrerpolicy']);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The relationship of the linked URL as space-separated link types.
|
||||
*
|
||||
* @return Rel_a[]
|
||||
*/
|
||||
public function rel(): array
|
||||
{
|
||||
return $this->attributes()->asEnumArray('rel', Rel_a::class, ' ');
|
||||
}
|
||||
|
||||
/**
|
||||
* The relationship of the linked URL as space-separated link types.
|
||||
*
|
||||
* @param null|Rel_a|array<int|string,Rel_a> $rel
|
||||
* @return static
|
||||
*/
|
||||
public function setRel(null|Rel_a|array $rel): static
|
||||
{
|
||||
if ($rel) $this->attributes()->setEnumArray('rel', $rel, Rel_a::class, ' ');
|
||||
else $this->unsetRel();
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The relationship of the linked URL as space-separated link types.
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public function unsetRel(): static
|
||||
{
|
||||
unset($this->attributes()['rel']);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Where to display the linked URL, as the name for a browsing context (a
|
||||
* tab, window, or <iframe>).
|
||||
*
|
||||
* @return null|string|Stringable|BrowsingContext
|
||||
*/
|
||||
public function target(): null|string|Stringable|BrowsingContext
|
||||
{
|
||||
return $this->attributes()->asEnum('target', BrowsingContext::class)
|
||||
?? $this->attributes()->asString('target');
|
||||
}
|
||||
|
||||
/**
|
||||
* Where to display the linked URL, as the name for a browsing context (a
|
||||
* tab, window, or <iframe>).
|
||||
*
|
||||
* @param null|string|Stringable|BrowsingContext $target
|
||||
* @return static
|
||||
*/
|
||||
public function setTarget(null|string|Stringable|BrowsingContext $target): static
|
||||
{
|
||||
if (!$target) {
|
||||
$this->unsetTarget();
|
||||
} elseif ($target instanceof BrowsingContext) {
|
||||
$this->attributes()['target'] = $target->value;
|
||||
} else {
|
||||
$this->attributes()['target'] = $target;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Where to display the linked URL, as the name for a browsing context (a
|
||||
* tab, window, or <iframe>).
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public function unsetTarget(): static
|
||||
{
|
||||
unset($this->attributes()['target']);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hints at the linked URL's format with a MIME type. No built-in
|
||||
* functionality.
|
||||
*
|
||||
* @return null|string|Stringable
|
||||
*/
|
||||
public function type(): null|string|Stringable
|
||||
{
|
||||
return $this->attributes()->asString('type');
|
||||
}
|
||||
|
||||
/**
|
||||
* Hints at the linked URL's format with a MIME type. No built-in
|
||||
* functionality.
|
||||
*
|
||||
* @param null|string|Stringable $type
|
||||
* @return static
|
||||
*/
|
||||
public function setType(null|string|Stringable $type): static
|
||||
{
|
||||
if ($type) $this->attributes()['type'] = $type;
|
||||
else $this->unsetType();
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hints at the linked URL's format with a MIME type. No built-in
|
||||
* functionality.
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public function unsetType(): static
|
||||
{
|
||||
unset($this->attributes()['type']);
|
||||
return $this;
|
||||
}
|
||||
}
|
70
src/Html5/InlineTextSemantics/AbbrTag.php
Normal file
70
src/Html5/InlineTextSemantics/AbbrTag.php
Normal file
|
@ -0,0 +1,70 @@
|
|||
<?php
|
||||
|
||||
namespace ByJoby\HTML\Html5\InlineTextSemantics;
|
||||
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
use Stringable;
|
||||
|
||||
/**
|
||||
* The <abbr> HTML element represents an abbreviation or acronym.
|
||||
*
|
||||
* When including an abbreviation or acronym, provide a full expansion of the
|
||||
* term in plain text on first use, along with the <abbr> to mark up the
|
||||
* abbreviation. This informs the user what the abbreviation or acronym means.
|
||||
*
|
||||
* The optional title attribute can provide an expansion for the abbreviation or
|
||||
* acronym when a full expansion is not present. This provides a hint to user
|
||||
* agents on how to announce/display the content while informing all users what
|
||||
* the abbreviation means. If present, title must contain this full description
|
||||
* and nothing else.
|
||||
*
|
||||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/abbr
|
||||
*/
|
||||
class AbbrTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'abbr';
|
||||
|
||||
/**
|
||||
* The title attribute has a specific semantic meaning when used with the
|
||||
* <abbr> element; it must contain a full human-readable description or
|
||||
* expansion of the abbreviation. This text is often presented by browsers
|
||||
* as a tooltip when the mouse cursor is hovered over the element.
|
||||
*
|
||||
* @return null|string|Stringable
|
||||
*/
|
||||
public function title(): null|string|Stringable
|
||||
{
|
||||
return $this->attributes()->asString('title');
|
||||
}
|
||||
|
||||
/**
|
||||
* The title attribute has a specific semantic meaning when used with the
|
||||
* <abbr> element; it must contain a full human-readable description or
|
||||
* expansion of the abbreviation. This text is often presented by browsers
|
||||
* as a tooltip when the mouse cursor is hovered over the element.
|
||||
*
|
||||
* @param null|string|Stringable $title
|
||||
* @return static
|
||||
*/
|
||||
public function setTitle(null|string|Stringable $title): static
|
||||
{
|
||||
if ($title) $this->attributes()['title'] = $title;
|
||||
else $this->unsetTitle();
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The title attribute has a specific semantic meaning when used with the
|
||||
* <abbr> element; it must contain a full human-readable description or
|
||||
* expansion of the abbreviation. This text is often presented by browsers
|
||||
* as a tooltip when the mouse cursor is hovered over the element.
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public function unsetTitle(): static
|
||||
{
|
||||
unset($this->attributes()['title']);
|
||||
return $this;
|
||||
}
|
||||
}
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\Tags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\MetadataContent;
|
||||
use ByJoby\HTML\Html5\Enums\BrowsingContext;
|
||||
use ByJoby\HTML\Tags\AbstractTag;
|
||||
use Stringable;
|
||||
|
@ -17,7 +16,7 @@ use Stringable;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
|
||||
*/
|
||||
class BaseTag extends AbstractTag implements MetadataContent
|
||||
class BaseTag extends AbstractTag
|
||||
{
|
||||
const TAG = 'base';
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\Tags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\HeadingContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -14,7 +12,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hgroup
|
||||
*/
|
||||
class HgroupTag extends AbstractContainerTag implements DisplayBlock, HeadingContent
|
||||
class HgroupTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'hgroup';
|
||||
}
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\Tags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\MetadataContent;
|
||||
use ByJoby\HTML\Helpers\StringableEnumArray;
|
||||
use ByJoby\HTML\Html5\Enums\As_link;
|
||||
use ByJoby\HTML\Html5\Enums\CrossOrigin;
|
||||
use ByJoby\HTML\Html5\Enums\ReferrerPolicy_link;
|
||||
|
@ -22,7 +20,7 @@ use Stringable;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link
|
||||
*/
|
||||
class LinkTag extends AbstractTag implements MetadataContent
|
||||
class LinkTag extends AbstractTag
|
||||
{
|
||||
const TAG = 'link';
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\Tags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\MetadataContent;
|
||||
use ByJoby\HTML\Helpers\StringableEnumArray;
|
||||
use ByJoby\HTML\Html5\Enums\HttpEquiv_meta;
|
||||
use ByJoby\HTML\Html5\Enums\Name_meta;
|
||||
|
@ -18,7 +17,7 @@ use Stringable;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta
|
||||
*/
|
||||
class MetaTag extends AbstractTag implements MetadataContent
|
||||
class MetaTag extends AbstractTag
|
||||
{
|
||||
const TAG = 'meta';
|
||||
|
||||
|
|
|
@ -2,9 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\Tags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\MetadataContent;
|
||||
use ByJoby\HTML\ContentCategories\PhrasingContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayContents;
|
||||
use ByJoby\HTML\Tags\AbstractContentTag;
|
||||
|
||||
/**
|
||||
|
@ -15,7 +12,7 @@ use ByJoby\HTML\Tags\AbstractContentTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript
|
||||
*/
|
||||
class NoscriptTag extends AbstractContentTag implements MetadataContent, PhrasingContent, DisplayContents
|
||||
class NoscriptTag extends AbstractContentTag
|
||||
{
|
||||
const TAG = 'noscript';
|
||||
}
|
||||
|
|
|
@ -2,9 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\Tags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\MetadataContent;
|
||||
use ByJoby\HTML\ContentCategories\PhrasingContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayNone;
|
||||
use ByJoby\HTML\Html5\Enums\BooleanAttribute;
|
||||
use ByJoby\HTML\Html5\Enums\CrossOrigin;
|
||||
use ByJoby\HTML\Html5\Enums\ReferrerPolicy_script;
|
||||
|
@ -21,7 +18,7 @@ use Stringable;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
|
||||
*/
|
||||
class ScriptTag extends AbstractContentTag implements MetadataContent, PhrasingContent, DisplayNone
|
||||
class ScriptTag extends AbstractContentTag
|
||||
{
|
||||
const TAG = 'script';
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\Tags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\MetadataContent;
|
||||
use ByJoby\HTML\Tags\AbstractContentTag;
|
||||
use Stringable;
|
||||
|
||||
|
@ -14,7 +13,7 @@ use Stringable;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style
|
||||
*/
|
||||
class StyleTag extends AbstractContentTag implements MetadataContent
|
||||
class StyleTag extends AbstractContentTag
|
||||
{
|
||||
const TAG = 'style';
|
||||
|
||||
|
|
|
@ -2,9 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\TextContentTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\ContentCategories\SectioningRoot;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
use Stringable;
|
||||
|
||||
|
@ -18,7 +15,7 @@ use Stringable;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote
|
||||
*/
|
||||
class BlockquoteTag extends AbstractContainerTag implements FlowContent, SectioningRoot, DisplayBlock
|
||||
class BlockquoteTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'blockquote';
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\TextContentTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\SectioningContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -15,7 +13,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div
|
||||
*/
|
||||
class DivTag extends AbstractContainerTag implements DisplayBlock, SectioningContent
|
||||
class DivTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'div';
|
||||
}
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\TextContentTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -15,7 +13,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dl
|
||||
*/
|
||||
class DlTag extends AbstractContainerTag implements FlowContent, DisplayBlock
|
||||
class DlTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'dl';
|
||||
}
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\TextContentTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -13,7 +11,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figcaption
|
||||
*/
|
||||
class FigcaptionTag extends AbstractContainerTag implements FlowContent, DisplayBlock
|
||||
class FigcaptionTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'figcaption';
|
||||
}
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
namespace ByJoby\HTML\Html5\TextContentTags;
|
||||
|
||||
use ByJoby\HTML\Containers\ContainerGroup;
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\NodeInterface;
|
||||
use ByJoby\HTML\Tags\AbstractGroupedTag;
|
||||
use ByJoby\HTML\Tags\TagInterface;
|
||||
|
@ -17,7 +15,7 @@ use ByJoby\HTML\Tags\TagInterface;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figure
|
||||
*/
|
||||
class FigureTag extends AbstractGroupedTag implements FlowContent, DisplayBlock
|
||||
class FigureTag extends AbstractGroupedTag
|
||||
{
|
||||
const TAG = 'figure';
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\TextContentTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractTag;
|
||||
|
||||
/**
|
||||
|
@ -14,7 +12,7 @@ use ByJoby\HTML\Tags\AbstractTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hr
|
||||
*/
|
||||
class HrTag extends AbstractTag implements FlowContent, DisplayBlock
|
||||
class HrTag extends AbstractTag
|
||||
{
|
||||
const TAG = 'hr';
|
||||
}
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\TextContentTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Html5\Enums\Type_list;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
|
@ -17,7 +15,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li
|
||||
*/
|
||||
class LiTag extends AbstractContainerTag implements FlowContent, DisplayBlock
|
||||
class LiTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'li';
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\TextContentTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -15,7 +13,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu
|
||||
*/
|
||||
class MenuTag extends AbstractContainerTag implements FlowContent, DisplayBlock
|
||||
class MenuTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'menu';
|
||||
}
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\TextContentTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Html5\Enums\BooleanAttribute;
|
||||
use ByJoby\HTML\Html5\Enums\Type_list;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
@ -15,7 +13,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol
|
||||
*/
|
||||
class OlTag extends AbstractContainerTag implements FlowContent, DisplayBlock
|
||||
class OlTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'ol';
|
||||
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\TextContentTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\SectioningContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -15,7 +13,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/p
|
||||
*/
|
||||
class PTag extends AbstractContainerTag implements DisplayBlock, SectioningContent
|
||||
class PTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'p';
|
||||
}
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\TextContentTags;
|
||||
|
||||
use ByJoby\HTML\DisplayTypes\DisplayBlock;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -14,7 +13,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre
|
||||
*/
|
||||
class PreTag extends AbstractContainerTag implements DisplayBlock
|
||||
class PreTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'pre';
|
||||
}
|
||||
|
|
|
@ -2,9 +2,6 @@
|
|||
|
||||
namespace ByJoby\HTML\Html5\TextContentTags;
|
||||
|
||||
use ByJoby\HTML\ContentCategories\FlowContent;
|
||||
use ByJoby\HTML\ContentCategories\PhrasingContent;
|
||||
use ByJoby\HTML\DisplayTypes\DisplayInline;
|
||||
use ByJoby\HTML\Tags\AbstractContainerTag;
|
||||
|
||||
/**
|
||||
|
@ -19,7 +16,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/span
|
||||
*/
|
||||
class SpanTag extends AbstractContainerTag implements DisplayInline, FlowContent, PhrasingContent
|
||||
class SpanTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'span';
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ use ByJoby\HTML\Tags\AbstractContainerTag;
|
|||
* Tag description by Mozilla Contributors licensed under CC-BY-SA 2.5
|
||||
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul
|
||||
*/
|
||||
class UlTag extends AbstractContainerTag implements DisplayBlock
|
||||
class UlTag extends AbstractContainerTag
|
||||
{
|
||||
const TAG = 'ul';
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue