File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ module Docs
2+ class Tcllib
3+ class CleanHtmlFilter < Filter
4+ def call
5+ css ( "hr" ) . remove ( )
6+ xpath ( "./div/text()" ) . remove ( ) # Navigation text content e.g. [ | | | ]
7+ css ( "div.markdown > a" ) . remove ( ) # Navigation links
8+
9+
10+ # Fix up ToC links
11+ css ( 'a[name]' ) . each do |node |
12+ node . parent [ 'id' ] = node [ 'name' ]
13+ node . before ( node . children ) . remove unless node [ 'href' ]
14+ end
15+
16+ # Relies on the above ToC fixup
17+ keywords = at_css ( '#keywords' )
18+ if !keywords . nil?
19+ keywords . next_sibling . remove ( )
20+ keywords . remove ( )
21+ css ( 'a[href="#keywords"]' ) . remove ( )
22+ end
23+
24+ # Downrank headings for styling
25+ css ( 'h2' ) . each do |node |
26+ node . name = 'h3'
27+ end
28+ css ( 'h1' ) . each do |node |
29+ node . name = 'h2'
30+ end
31+
32+ doc
33+ end
34+ end
35+ end
36+ end
Original file line number Diff line number Diff line change 1+ module Docs
2+ class Tcllib
3+ class EntriesFilter < Docs ::EntriesFilter
4+ def get_name
5+ # The first word after the `NAME` heading
6+ name = at_css ( 'h1 + p' )
7+ return name . content . strip . split [ 0 ]
8+ end
9+
10+ def get_type
11+ # The types are the categories as indicated on each page (and on the
12+ # root page, toc0.md)
13+ category = at_css ( 'a[name="category"]' )
14+ if !category . nil?
15+ return category . parent . next . next . content
16+ end
17+ return 'Unfiled'
18+ end
19+ end
20+ end
21+ end
22+
Original file line number Diff line number Diff line change 1+ module Docs
2+ class Tcllib
3+ class NopFilter < Filter
4+ def call
5+ doc
6+ end
7+ end
8+ end
9+ end
Original file line number Diff line number Diff line change 1+ module Docs
2+ class Tcllib < UrlScraper
3+ self . name = 'Tcllib'
4+ self . type = 'simple'
5+ self . slug = 'tcllib'
6+ self . release = '2.0'
7+ self . base_url = 'https://core.tcl-lang.org/tcllib/doc/trunk/embedded/md/'
8+ self . root_path = 'toc0.md'
9+ self . links = {
10+ home : 'https://core.tcl-lang.org/tcllib/doc/trunk/embedded/index.md' ,
11+ code : 'https://sourceforge.net/projects/tcllib/files/tcllib/'
12+ }
13+
14+ html_filters . push 'tcllib/entries' , 'tcllib/clean_html' , 'title'
15+ # The docs have incorrect <base> elements, so we should just skip that
16+ html_filters . replace ( 'apply_base_url' , 'tcllib/nop' )
17+
18+ options [ :root_title ] = 'Tcllib Documentation'
19+ options [ :container ] = '.content'
20+ options [ :skip ] = [
21+ # Full of broken links, path improperly duplicates "tcllib" segment
22+ 'tcllib/toc.md' ,
23+ # The other ones aren't terribly useful
24+ 'toc.md' , 'toc1.md' , 'toc2.md' ,
25+ # Keyword index
26+ 'index.md'
27+ ]
28+
29+ options [ :attribution ] = <<-HTML
30+ Licensed under the < a href ="https://core.tcl-lang.org/tcllib/doc/trunk/embedded/md/tcllib/files/devdoc/tcllib_license.md "> BSD license</ a >
31+ HTML
32+
33+
34+ def get_latest_version ( opts )
35+ doc = fetch_doc ( 'https://core.tcl-lang.org/tcllib/doc/trunk/embedded/index.md' , opts )
36+ doc . at_css ( 'strong' ) . content . scan ( /([0-9.]+)/ ) [ 0 ] [ 0 ]
37+ end
38+ end
39+ end
Original file line number Diff line number Diff line change 1+ https://commons.wikimedia.org/wiki/File:Tcl.svg
You can’t perform that action at this time.
0 commit comments