#!/usr/bin/env perl # Copyright (C) Daniel Stenberg, , et al. # # SPDX-License-Identifier: curl # # Input: cmdline docs markdown files, they get modified *in place* # # Strip off the leading meta-data/header part, remove all known curl symbols # and long command line options. Also clean up whatever else the spell checker # might have a problem with that we still deem is fine. # open(S, "<./docs/libcurl/symbols-in-versions") || die "can't find symbols-in-versions"; while() { if(/^([^ ]*) /) { push @asyms, $1; } } close(S); # init the opts table with "special" options not easy to figure out my @aopts = ( '--ftp-ssl-reqd', # old alias ); open(O, "<./docs/options-in-versions") || die "can't find options-in-versions"; while() { chomp; if(/^([^ ]+)/) { my $o = $1; push @aopts, $o; if($o =~ /^--no-(.*)/) { # for the --no options, also make one without it push @aopts, "--$1"; } elsif($o =~ /^--disable-(.*)/) { # for the --disable options, also make the special ones push @aopts, "--$1"; push @aopts, "--no-$1"; } } } close(O); open(C, "<./.github/scripts/spellcheck.curl") || die "can't find spellcheck.curl"; while() { if(/^\#/) { next; } chomp; if(/^([^ ]+)/) { push @asyms, $1; } } close(C); # longest symbols first my @syms = sort { length($b) <=> length($a) } @asyms; # longest cmdline options first my @opts = sort { length($b) <=> length($a) } @aopts; sub process { my ($f) = @_; my $ignore = 0; my $sepcount = 0; my $out; my $line = 0; open(F, "<$f") or die; while() { $line++; if(/^---/ && ($line == 1)) { $ignore = 1; next; } elsif(/^---/ && $ignore) { $ignore = 0; next; } next if($ignore); my $l = $_; # strip out backticked words $l =~ s/`[^`]+`//g; # **bold** $l =~ s/\*\*(\S.*?)\*\*//g; # *italics* $l =~ s/\*(\S.*?)\*//g; # strip out https URLs, we don't want them spellchecked $l =~ s!https://[a-z0-9\#_/.-]+!!gi; $out .= $l; } close(F); # cut out all known curl cmdline options map { $out =~ s/$_//g; } (@opts); # cut out all known curl symbols map { $out =~ s/\b$_\b//g; } (@syms); if(!$ignore) { open(O, ">$f") or die; print O $out; close(O); } } for my $f (@ARGV) { process($f); }