<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:r="https://r-universe.dev"><channel><title>gitlab-bart-turczynski.r-universe.dev</title><link>https://gitlab-bart-turczynski.r-universe.dev</link><description>Recent package updates in gitlab-bart-turczynski</description><generator>R-universe</generator><image><url>https://github.com/gitlab-bart-turczynski.png</url><title>R packages by gitlab-bart-turczynski</title><link>https://gitlab-bart-turczynski.r-universe.dev</link></image><lastBuildDate>Mon, 02 Nov 2026 17:08:44 GMT</lastBuildDate><item><title>[bart-turczynski] ssrfr 0.0.0.9000</title><author>bartek@turczynski.pl (Bart Turczynski)</author><description>Protects R applications that fetch URLs an attacker can
influence from server-side request forgery. Each redirect hop
is parsed once, resolved once, and every resolved address is
classified before the connection is pinned to a validated
address, so a hostname cannot be rebound between check and
connect. Refusals carry stable reason codes. Provides the
guarded fetch of each hop of a redirect chain, a helper that
follows a whole chain, structural inspection of a URL without
network access, and resolved inspection of every address a name
resolves to.</description><link>https://github.com/r-universe/bart-turczynski/actions/runs/41502661131</link><pubDate>Mon, 02 Nov 2026 17:08:44 GMT</pubDate><r:package>ssrfr</r:package><r:version>0.0.0.9000</r:version><r:status>success</r:status><r:repository>https://bart-turczynski.r-universe.dev</r:repository><r:upstream>https://gitlab.com/bart-turczynski/ssrfr</r:upstream><r:article><r:source>introduction.Rmd</r:source><r:filename>introduction.html</r:filename><r:title>Introduction to ssrfr</r:title><r:created>2026-07-25 10:51:21</r:created><r:modified>2026-09-30 20:33:14</r:modified></r:article></item><item><title>[bart-turczynski] seor 0.1.0.9000</title><author>bartek@turczynski.pl (Bart Turczynski)</author><description>The 'seor' suite bundles a set of focused R packages for
search engine optimization and web-developer workflows: URL
parsing, punycode and internationalized-domain conversion,
public suffix list lookups, XML sitemap parsing and PageRank
estimation. Loading 'seor' with a single call to library()
installs and attaches all of the member packages at once, in
the style of the 'tidyverse' metapackage.</description><link>https://github.com/r-universe/bart-turczynski/actions/runs/41207088777</link><pubDate>Sat, 31 Oct 2026 10:34:43 GMT</pubDate><r:package>seor</r:package><r:version>0.1.0.9000</r:version><r:status>success</r:status><r:repository>https://bart-turczynski.r-universe.dev</r:repository><r:upstream>https://gitlab.com/bart-turczynski/seor</r:upstream><r:article><r:source>introduction.Rmd</r:source><r:filename>introduction.html</r:filename><r:title>Introduction to seor</r:title><r:created>2026-07-11 11:55:54</r:created><r:modified>2026-10-22 11:57:10</r:modified></r:article></item><item><title>[bart-turczynski] punycoder 1.3.0.9000</title><author>bartek@turczynski.pl (Bart Turczynski)</author><description>High-performance Unicode and Punycode processing for
internationalized domain names. The 'puny_encode()' /
'puny_decode()' helpers are a low-level, RFC 3492 compliant
Punycode codec for domain labels (the 'xn--' ASCII-Compatible
Encoding of RFC 5890/5891); they perform the raw transform plus
letter-digit-hyphen checks and do not apply Unicode IDNA
normalization. 'host_normalize()' is the Unicode Technical
Standard #46 host-normalization entry point, mapping a host
name to a canonical lowercase ASCII comparison form
(non-transitional profile, pinned default Unicode version,
which a call can override with any version the build ships).
Aimed at host normalization and data analysis workflows. Used
as the Punycode and IDNA engine by the 'pslr' and 'rurl'
packages.</description><link>https://github.com/r-universe/bart-turczynski/actions/runs/41207081669</link><pubDate>Sat, 31 Oct 2026 07:54:25 GMT</pubDate><r:package>punycoder</r:package><r:version>1.3.0.9000</r:version><r:status>success</r:status><r:repository>https://bart-turczynski.r-universe.dev</r:repository><r:upstream>https://gitlab.com/bart-turczynski/punycoder</r:upstream><r:article><r:source>punycoder-intro.Rmd</r:source><r:filename>punycoder-intro.html</r:filename><r:title>Introduction to punycoder</r:title><r:created>2025-06-09 23:33:29</r:created><r:modified>2026-09-22 14:41:56</r:modified></r:article><r:article><r:source>comparison.Rmd</r:source><r:filename>comparison.html</r:filename><r:title>Prior art and comparison</r:title><r:created>2026-10-04 16:27:59</r:created><r:modified>2026-10-04 16:27:59</r:modified></r:article></item><item><title>[bart-turczynski] rurl 3.1.0.9000</title><author>bartek@turczynski.pl (Bart Turczynski)</author><description>A lightweight toolkit for extracting structured
information from URLs. Includes functions for parsing,
normalizing protocols, extracting domains, and constructing
clean URLs. Domain and public-suffix extraction is delegated to
the 'pslr' package, which implements the Public Suffix List
from &lt;https://publicsuffix.org&gt;. Punycode and IDNA encoding is
handled by the 'punycoder' package, and IP address facts by the
'raddr' package.</description><link>https://github.com/r-universe/bart-turczynski/actions/runs/41207085307</link><pubDate>Sat, 31 Oct 2026 07:51:09 GMT</pubDate><r:package>rurl</r:package><r:version>3.1.0.9000</r:version><r:status>success</r:status><r:repository>https://bart-turczynski.r-universe.dev</r:repository><r:upstream>https://gitlab.com/bart-turczynski/rurl</r:upstream><r:article><r:source>getting-started.Rmd</r:source><r:filename>getting-started.html</r:filename><r:title>Getting Started with rurl</r:title><r:created>2025-05-02 20:06:40</r:created><r:modified>2026-10-04 16:27:05</r:modified></r:article><r:article><r:source>url-standard.Rmd</r:source><r:filename>url-standard.html</r:filename><r:title>Standard-conformant parsing with url_standard</r:title><r:created>2026-07-05 22:26:53</r:created><r:modified>2026-10-28 11:49:50</r:modified></r:article></item><item><title>[bart-turczynski] robotstxtr 0.3.1.9000</title><author>bartek@turczynski.pl (Bart Turczynski)</author><description>Evaluates whether URLs may be crawled according to
'robots.txt' rules. A versioned engine-aware facade keeps
neutral fetch evidence, per-engine status policy, robots
product tokens, and matcher capabilities separate, returning
explicit non-decisions when policy is undocumented or a matcher
is unavailable. The available matcher is a bundled,
upstream-test-validated snapshot of Google's open-source C++
'robots.txt' matcher, preserving 'Googlebot' behavior. Fetches
use a deterministic, conservative policy built on 'httr2', with
fetch origins constructed by 'rurl'. All network access in
tests, examples, and vignettes is mocked or served locally, so
no internet connection is required to install, test, or check
the package. This matcher derives from Google's 'robotstxt'
project &lt;https://github.com/google/robotstxt&gt;, distributed
under the Apache License 2.0; see the package NOTICE.</description><link>https://github.com/r-universe/bart-turczynski/actions/runs/41179402483</link><pubDate>Sat, 31 Oct 2026 04:34:27 GMT</pubDate><r:package>robotstxtr</r:package><r:version>0.3.1.9000</r:version><r:status>success</r:status><r:repository>https://bart-turczynski.r-universe.dev</r:repository><r:upstream>https://gitlab.com/bart-turczynski/robotstxtr</r:upstream><r:article><r:source>engine-aware-contract.Rmd</r:source><r:filename>engine-aware-contract.html</r:filename><r:title>Engine-aware contract</r:title><r:created>2026-10-28 15:51:19</r:created><r:modified>2026-10-28 15:51:19</r:modified></r:article><r:article><r:source>introduction.Rmd</r:source><r:filename>introduction.html</r:filename><r:title>Introduction to robotstxtr</r:title><r:created>2026-07-10 18:59:44</r:created><r:modified>2026-07-18 00:44:32</r:modified></r:article></item><item><title>[bart-turczynski] pslr 1.2.2.9000</title><author>bartek@turczynski.pl (Bart Turczynski)</author><description>A focused implementation of the Public Suffix List (PSL).
Bundles a reproducible, pinned PSL snapshot and implements the
official prevailing-rule algorithm to answer public-suffix
(eTLD) and registrable-domain (eTLD+1) queries. Distinguishes
ICANN and PRIVATE rule sections, accepts Unicode and ASCII
hostnames via 'punycoder' canonicalization, and supports an
explicit, validated offline refresh path. The matcher is
compiled with 'cpp11' and requires no external system library.
Used as the PSL engine by the 'rurl' package.</description><link>https://github.com/r-universe/bart-turczynski/actions/runs/41179391517</link><pubDate>Sat, 31 Oct 2026 04:31:01 GMT</pubDate><r:package>pslr</r:package><r:version>1.2.2.9000</r:version><r:status>success</r:status><r:repository>https://bart-turczynski.r-universe.dev</r:repository><r:upstream>https://gitlab.com/bart-turczynski/pslr</r:upstream><r:article><r:source>comparison.Rmd</r:source><r:filename>comparison.html</r:filename><r:title>How pslr compares to other PSL libraries</r:title><r:created>2026-10-04 16:23:59</r:created><r:modified>2026-10-04 16:23:59</r:modified></r:article><r:article><r:source>introduction.Rmd</r:source><r:filename>introduction.html</r:filename><r:title>Introduction to pslr</r:title><r:created>2026-06-14 20:06:00</r:created><r:modified>2026-09-29 11:22:18</r:modified></r:article></item><item><title>[bart-turczynski] sitemapr 0.0.0.9000</title><author>bartek@turczynski.pl (Bart Turczynski)</author><description>A deterministic toolkit for reading and validating XML,
text, and index sitemaps against the Sitemap Protocol 0.9 and
related W3C and RFC standards. It parses sitemap sources into
tidy data frames, expands sitemap indexes, and reports schema
and protocol findings with stable, reproducible output.</description><link>https://github.com/r-universe/bart-turczynski/actions/runs/41179409800</link><pubDate>Sat, 31 Oct 2026 04:24:56 GMT</pubDate><r:package>sitemapr</r:package><r:version>0.0.0.9000</r:version><r:status>success</r:status><r:repository>https://bart-turczynski.r-universe.dev</r:repository><r:upstream>https://gitlab.com/bart-turczynski/sitemapr</r:upstream><r:article><r:source>introduction.Rmd</r:source><r:filename>introduction.html</r:filename><r:title>Introduction to sitemapr</r:title><r:created>2026-06-27 21:28:35</r:created><r:modified>2026-09-27 22:32:13</r:modified></r:article></item><item><title>[bart-turczynski] pagerankr 0.1.1.9000</title><author>bartek@turczynski.pl (Bart Turczynski)</author><description>Provides a set of modular, pipeable functions to calculate
PageRank scores from edge lists and redirect reports, common in
SEO analysis. Functions handle URL cleaning, redirect
resolution, edge deduplication, isolate handling, and PageRank
computation using base R for data manipulation and 'igraph' for
core PageRank calculation.</description><link>https://github.com/r-universe/bart-turczynski/actions/runs/41179388211</link><pubDate>Sat, 31 Oct 2026 04:21:26 GMT</pubDate><r:package>pagerankr</r:package><r:version>0.1.1.9000</r:version><r:status>success</r:status><r:repository>https://bart-turczynski.r-universe.dev</r:repository><r:upstream>https://gitlab.com/bart-turczynski/pagerankr</r:upstream><r:article><r:source>boilerplate.Rmd</r:source><r:filename>boilerplate.html</r:filename><r:title>Boilerplate detection: template links that live in the content</r:title><r:created>2026-07-20 23:35:57</r:created><r:modified>2026-07-25 16:25:49</r:modified></r:article><r:article><r:source>case-study.Rmd</r:source><r:filename>case-study.html</r:filename><r:title>Case study: measuring an internal-linking intervention</r:title><r:created>2026-07-26 13:07:22</r:created><r:modified>2026-07-26 16:08:21</r:modified></r:article><r:article><r:source>presets.Rmd</r:source><r:filename>presets.html</r:filename><r:title>Presets: named views of the link graph</r:title><r:created>2026-07-20 20:35:05</r:created><r:modified>2026-07-23 21:26:29</r:modified></r:article><r:article><r:source>topic_feeder_pagerank.Rmd</r:source><r:filename>topic_feeder_pagerank.html</r:filename><r:title>Topic Feeder PageRank: what powers a content cluster</r:title><r:created>2026-06-19 12:08:04</r:created><r:modified>2026-06-19 16:06:08</r:modified></r:article><r:article><r:source>trustrank.Rmd</r:source><r:filename>trustrank.html</r:filename><r:title>TrustRank: seed-biased PageRank in pagerankr</r:title><r:created>2026-06-19 11:08:45</r:created><r:modified>2026-07-19 19:52:31</r:modified></r:article><r:article><r:source>pagerankr-usage.Rmd</r:source><r:filename>pagerankr-usage.html</r:filename><r:title>Using the pagerankr Package</r:title><r:created>2025-05-31 17:25:37</r:created><r:modified>2026-09-29 11:39:30</r:modified></r:article></item><item><title>[bart-turczynski] raddr 0.1.2.9000</title><author>bartek@turczynski.pl (Bart Turczynski)</author><description>Standards and implementations disagree about what an IP
address literal means: the string &quot;0177.0.0.1&quot; is rejected by
the dotted-quad grammar, read as 127.0.0.1 by browsers, and
read as 177.0.0.1 by some 'inet_pton' implementations. Most
libraries pick one reading and discard the rest. This package
reports them all, alongside the reason codes that explain each
one, and classifies parsed values against the IANA
special-purpose address registries. It is pure R, performs no
network access, and returns facts rather than allow or deny
verdicts.</description><link>https://github.com/r-universe/bart-turczynski/actions/runs/41179398880</link><pubDate>Sat, 31 Oct 2026 00:51:16 GMT</pubDate><r:package>raddr</r:package><r:version>0.1.2.9000</r:version><r:status>success</r:status><r:repository>https://bart-turczynski.r-universe.dev</r:repository><r:upstream>https://gitlab.com/bart-turczynski/raddr</r:upstream><r:article><r:source>edge-cases.Rmd</r:source><r:filename>edge-cases.html</r:filename><r:title>Edge cases</r:title><r:created>2026-07-29 11:23:48</r:created><r:modified>2026-10-05 10:11:55</r:modified></r:article><r:article><r:source>introduction.Rmd</r:source><r:filename>introduction.html</r:filename><r:title>Introduction to raddr</r:title><r:created>2026-07-25 10:14:18</r:created><r:modified>2026-07-29 09:32:53</r:modified></r:article><r:article><r:source>reason-codes.Rmd</r:source><r:filename>reason-codes.html</r:filename><r:title>Reason codes</r:title><r:created>2026-07-29 10:29:30</r:created><r:modified>2026-09-30 22:14:58</r:modified></r:article><r:article><r:source>why-raddr.Rmd</r:source><r:filename>why-raddr.html</r:filename><r:title>Why raddr</r:title><r:created>2026-10-04 16:17:40</r:created><r:modified>2026-10-04 16:17:40</r:modified></r:article></item></channel></rss>