generate method
Generate the robots.txt content string
Implementation
String generate() {
final buffer = StringBuffer();
final cleanBase = baseUrl.endsWith('/')
? baseUrl.substring(0, baseUrl.length - 1)
: baseUrl;
// Additional lines at top (comments, etc.)
if (additionalLines != null) {
for (final line in additionalLines!) {
buffer.writeln(line);
}
buffer.writeln();
}
// Rules
if (rules.isEmpty) {
// Default: allow all
buffer.writeln('User-agent: *');
buffer.writeln('Allow: /');
} else {
for (var i = 0; i < rules.length; i++) {
final rule = rules[i];
buffer.writeln('User-agent: ${rule.userAgent}');
for (final path in rule.allow) {
buffer.writeln('Allow: $path');
}
for (final path in rule.disallow) {
buffer.writeln('Disallow: $path');
}
if (rule.crawlDelay != null) {
buffer.writeln('Crawl-delay: ${rule.crawlDelay}');
}
// Add blank line between rules
if (i < rules.length - 1) {
buffer.writeln();
}
}
}
// Sitemaps
if (sitemaps != null && sitemaps!.isNotEmpty) {
buffer.writeln();
for (final sitemap in sitemaps!) {
final sitemapUrl = sitemap.startsWith('http')
? sitemap
: '$cleanBase${sitemap.startsWith('/') ? sitemap : '/$sitemap'}';
buffer.writeln('Sitemap: $sitemapUrl');
}
}
return buffer.toString();
}