mirror of
https://github.com/YGGverse/gemini-php.git
synced 2026-04-01 09:25:29 +00:00
implement skipTags method
This commit is contained in:
parent
9ec48ba944
commit
75685f3737
2 changed files with 104 additions and 0 deletions
19
README.md
19
README.md
|
|
@ -96,6 +96,25 @@ var_dump(
|
||||||
);
|
);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Body::skipTags
|
||||||
|
|
||||||
|
Strip gemini tags from Gemini document
|
||||||
|
|
||||||
|
```
|
||||||
|
var_dump(
|
||||||
|
$body->skipTags() // strip all tags
|
||||||
|
);
|
||||||
|
|
||||||
|
var_dump(
|
||||||
|
$body->skipTags(
|
||||||
|
[ // 1- and 2- level headers only
|
||||||
|
"##",
|
||||||
|
"###"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
### Link
|
### Link
|
||||||
|
|
||||||
Inline links parser.
|
Inline links parser.
|
||||||
|
|
|
||||||
|
|
@ -105,4 +105,89 @@ class Body
|
||||||
|
|
||||||
return $matches;
|
return $matches;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function skipTags(array $tags = []): string
|
||||||
|
{
|
||||||
|
$lines = [];
|
||||||
|
|
||||||
|
foreach ($this->_lines as $line)
|
||||||
|
{
|
||||||
|
$line = trim(
|
||||||
|
$line
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($tags)
|
||||||
|
{
|
||||||
|
foreach ($tags as $tag)
|
||||||
|
{
|
||||||
|
if(!in_array($tag, ['#', '##', '###', '=>', '*', '```']))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (true)
|
||||||
|
{
|
||||||
|
case str_starts_with($line, '#'):
|
||||||
|
|
||||||
|
$line = preg_replace(
|
||||||
|
sprintf(
|
||||||
|
'/^%s([^#]+)/ui',
|
||||||
|
$tag
|
||||||
|
),
|
||||||
|
'$1',
|
||||||
|
$line
|
||||||
|
);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case str_starts_with($line, '*'):
|
||||||
|
|
||||||
|
$line = preg_replace(
|
||||||
|
'/^\*(.*)/ui',
|
||||||
|
'$1',
|
||||||
|
$line
|
||||||
|
);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
|
||||||
|
$line = preg_replace(
|
||||||
|
sprintf(
|
||||||
|
'/^%s(.*)/ui',
|
||||||
|
$tag
|
||||||
|
),
|
||||||
|
'$1',
|
||||||
|
$line
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$line = preg_replace(
|
||||||
|
[
|
||||||
|
'/^#([^#]+)/ui',
|
||||||
|
'/^##([^#]+)/ui',
|
||||||
|
'/^###([^#]+)/ui',
|
||||||
|
'/^=>(.*)/ui',
|
||||||
|
'/^\*(.*)/ui',
|
||||||
|
'/^```(.*)/ui',
|
||||||
|
],
|
||||||
|
'$1',
|
||||||
|
$line
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$lines[] = trim(
|
||||||
|
$line
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return implode(
|
||||||
|
PHP_EOL,
|
||||||
|
$lines
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue