article title
24 |texte de my article
25 |article subtitle
27 |text
28 |
30 | ├── .gemtest ├── test ├── data │ ├── news │ │ ├── ryzom-naissance-du-projet-libre-ryzom-forge.md │ │ └── index.html │ ├── validator.nu-success.json │ ├── assets │ │ └── application-92f19110a9d47a56d2ebe744e15af301.css │ ├── validator.nu-failure.json │ ├── xhtml1-strict.html │ ├── html5.html │ ├── html5-fail.html │ └── html4-strict.html ├── core_test.rb ├── test_helper.rb ├── example │ └── ruby smalltalk │ │ └── blockcamp-paris-le-28-novembre.html ├── webmock_helper.rb ├── static_test.rb ├── validator_test.rb └── crawler_test.rb ├── validate-website.png ├── lib ├── validate_website.rb └── validate_website │ ├── version.rb │ ├── validator_class_methods.rb │ ├── colorful_messages.rb │ ├── runner.rb │ ├── static_link.rb │ ├── utils.rb │ ├── static.rb │ ├── crawl.rb │ ├── validator.rb │ ├── core.rb │ └── option_parser.rb ├── .gitignore ├── Gemfile ├── bin ├── validate-website └── validate-website-static ├── .rubocop.yml ├── data └── schemas │ ├── xhtml2.xsd │ ├── xhtml-inlstyle-1.xsd │ ├── frameset.dtd │ ├── xhtml-inputmode-1.xsd │ ├── xhtml-copyright-1.xsd │ ├── xml-events-copyright-1.xsd │ ├── xml-events-copyright-2.xsd │ ├── xhtml-base-1.xsd │ ├── xhtml-charent-1.xsd │ ├── xhtml-metaAttributes-1.xsd │ ├── xhtml-ssismap-1.xsd │ ├── xhtml-target-1.xsd │ ├── xhtml-nameident-1.xsd │ ├── xml-events-attribs-1.xsd │ ├── xml-events-1.xsd │ ├── xml-events-2.xsd │ ├── xml-events-attribs-2.xsd │ ├── xhtml-ruby-basic-1.xsd │ ├── xhtml-notations-1.xsd │ ├── xhtml-special.ent │ ├── xml-handlers-1.xsd │ ├── xhtml-events-1.xsd │ ├── xframes-1.xsd │ ├── xhtml-datatypes-1.xsd │ ├── xhtml-basic11.dtd │ ├── xml.xsd │ ├── xhtml-lat1.ent │ └── xhtml-symbol.ent ├── .github └── workflows │ └── ci.yml ├── Rakefile ├── .gitlab-ci.yml ├── LICENSE ├── validate-website.gemspec ├── doc ├── validate-website-static.adoc └── validate-website.adoc ├── man └── man1 │ ├── validate-website-static.1 │ └── validate-website.1 ├── README.md └── History.md /.gemtest: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/data/news/ryzom-naissance-du-projet-libre-ryzom-forge.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /validate-website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spk/validate-website/HEAD/validate-website.png -------------------------------------------------------------------------------- /test/data/validator.nu-success.json: -------------------------------------------------------------------------------- 1 | {"url":"https://example.org/","messages":[],"language":"fr"} 2 | -------------------------------------------------------------------------------- /lib/validate_website.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'validate_website/core' 4 | require 'validate_website/version' 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | pkg 2 | tags 3 | Gemfile.lock 4 | *.gem 5 | man/man1/validate-website-static.xml 6 | man/man1/validate-website.xml 7 | coverage 8 | -------------------------------------------------------------------------------- /test/data/assets/application-92f19110a9d47a56d2ebe744e15af301.css: -------------------------------------------------------------------------------- 1 | .t { background-image: url(/image/42.png) } 2 | /**/ .foo {} #{bar {} 3 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source 'https://rubygems.org' 4 | 5 | gemspec 6 | 7 | gem 'simplecov', require: false 8 | 9 | # vim: syntax=ruby filetype=ruby 10 | -------------------------------------------------------------------------------- /bin/validate-website: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # frozen_string_literal: true 3 | 4 | require 'validate_website/runner' 5 | exit_status = ValidateWebsite::Runner.run_crawl(ARGV) 6 | exit(exit_status) 7 | -------------------------------------------------------------------------------- /bin/validate-website-static: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # frozen_string_literal: true 3 | 4 | require 'validate_website/runner' 5 | exit_status = ValidateWebsite::Runner.run_static(ARGV) 6 | exit(exit_status) 7 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | --- 2 | AllCops: 3 | TargetRubyVersion: 2.7 4 | Naming/FileName: 5 | Enabled: false 6 | Lint/MissingCopEnableDirective: 7 | Enabled: false 8 | Lint/InterpolationCheck: 9 | Enabled: false 10 | Lint/UriEscapeUnescape: 11 | Enabled: false 12 | -------------------------------------------------------------------------------- /lib/validate_website/version.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Version file for ValidateWebsite 4 | module ValidateWebsite 5 | VERSION = '1.12.0' 6 | 7 | def self.jruby? # :nodoc: 8 | defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby' 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /test/core_test.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require File.expand_path('test_helper', __dir__) 4 | 5 | describe ValidateWebsite::Core do 6 | describe 'invalid options' do 7 | it 'raise ArgumentError on wrong validation_type' do 8 | _(proc { ValidateWebsite::Core.new({ color: false }, :fail) }) 9 | .must_raise ArgumentError 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /test/test_helper.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | begin 4 | require 'simplecov' 5 | SimpleCov.start 6 | rescue LoadError 7 | warn 'simplecov not loaded' 8 | end 9 | 10 | require 'minitest/autorun' 11 | require 'spidr' 12 | 13 | require 'validate_website/core' 14 | 15 | require File.expand_path('webmock_helper', __dir__) 16 | 17 | TEST_DOMAIN = 'http://www.example.com/' 18 | ENV['LC_ALL'] = 'C.UTF-8' if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby' 19 | -------------------------------------------------------------------------------- /test/data/news/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |Paragraphe.
11 | 12 |


Paragraphe.
11 | 12 |


texte de my article
25 |text
28 |
30 |
41 | Rust is a systems programming language
42 | that runs blazingly fast,
43 | prevents segfaults,
44 | and guarantees thread safety.
45 |
46 | See who's using Rust.
47 |
97 | fn main() { 98 | let greetings = ["Hello", "Hola", "Bonjour", 99 | "こんにちは", "您好"]; 100 | 101 | for (num, greeting) in greetings.iter().enumerate() { 102 | println!("{}", greeting); 103 | match num { 104 | 0 => println!("This code is editable and runnable!"), 105 | 1 => println!("Este código es editable y ejecutable!"), 106 | 2 => println!("Ce code est modifiable et exécutable!"), 107 | 3 => println!("このコードは編集して実行出来ます!"), 108 | 4 => println!("这个代码是可以编辑并且能够运行的!"), 109 | _ => {}, 110 | } 111 | } 112 | } 113 |114 |
15 | This schema document describes the XML namespace, in a form 16 | suitable for import by other schema documents. 17 |
18 |19 | See 20 | http://www.w3.org/XML/1998/namespace.html and 21 | 22 | http://www.w3.org/TR/REC-xml for information 23 | about this namespace. 24 |
25 |26 | Note that local names in this namespace are intended to be 27 | defined only by the World Wide Web Consortium or its subgroups. 28 | The names currently defined in this namespace are listed below. 29 | They should not be used with conflicting semantics by any Working 30 | Group, specification, or document instance. 31 |
32 |33 | See further below in this document for more information about how to refer to this schema document from your own 35 | XSD schema documents and about the 36 | namespace-versioning policy governing this schema document. 37 |
38 |50 | denotes an attribute whose value 51 | is a language code for the natural language of the content of 52 | any element; its value is inherited. This name is reserved 53 | by virtue of its definition in the XML specification.
54 | 55 |59 | Attempting to install the relevant ISO 2- and 3-letter 60 | codes as the enumerated possible values is probably never 61 | going to be a realistic possibility. 62 |
63 |64 | See BCP 47 at 65 | http://www.rfc-editor.org/rfc/bcp/bcp47.txt 66 | and the IANA language subtag registry at 67 | 68 | http://www.iana.org/assignments/language-subtag-registry 69 | for further information. 70 |
71 |72 | The union allows for the 'un-declaration' of xml:lang with 73 | the empty string. 74 |
75 |96 | denotes an attribute whose 97 | value is a keyword indicating what whitespace processing 98 | discipline is intended for the content of the element; its 99 | value is inherited. This name is reserved by virtue of its 100 | definition in the XML specification.
101 | 102 |119 | denotes an attribute whose value 120 | provides a URI to be used as the base for interpreting any 121 | relative URIs in the scope of the element on which it 122 | appears; its value is inherited. This name is reserved 123 | by virtue of its definition in the XML Base specification.
124 | 125 |126 | See http://www.w3.org/TR/xmlbase/ 128 | for information about this attribute. 129 |
130 |142 | denotes an attribute whose value 143 | should be interpreted as if declared to be of type ID. 144 | This name is reserved by virtue of its definition in the 145 | xml:id specification.
146 | 147 |148 | See http://www.w3.org/TR/xml-id/ 150 | for information about this attribute. 151 |
152 |172 | denotes Jon Bosak, the chair of 173 | the original XML Working Group. This name is reserved by 174 | the following decision of the W3C XML Plenary and 175 | XML Coordination groups: 176 |
177 |178 |185 |179 | In appreciation for his vision, leadership and 180 | dedication the W3C XML Plenary on this 10th day of 181 | February, 2000, reserves for Jon Bosak in perpetuity 182 | the XML name "xml:Father". 183 |
184 |
197 | This schema defines attributes and an attribute group suitable
198 | for use by schemas wishing to allow xml:base,
199 | xml:lang, xml:space or
200 | xml:id attributes on elements they define.
201 |
203 | To enable this, such a schema must import this schema for 204 | the XML namespace, e.g. as follows: 205 |
206 |207 | <schema . . .> 208 | . . . 209 | <import namespace="http://www.w3.org/XML/1998/namespace" 210 | schemaLocation="http://www.w3.org/2001/xml.xsd"/> 211 |212 |
213 | or 214 |
215 |216 | <import namespace="http://www.w3.org/XML/1998/namespace" 217 | schemaLocation="http://www.w3.org/2009/01/xml.xsd"/> 218 |219 |
220 | Subsequently, qualified reference to any of the attributes or the 221 | group defined below will have the desired effect, e.g. 222 |
223 |224 | <type . . .> 225 | . . . 226 | <attributeGroup ref="xml:specialAttrs"/> 227 |228 |
229 | will define a type which will schema-validate an instance element 230 | with any of those attributes. 231 |
232 |243 | In keeping with the XML Schema WG's standard versioning 244 | policy, this schema document will persist at 245 | 246 | http://www.w3.org/2009/01/xml.xsd. 247 |
248 |249 | At the date of issue it can also be found at 250 | 251 | http://www.w3.org/2001/xml.xsd. 252 |
253 |254 | The schema document at that URI may however change in the future, 255 | in order to remain compatible with the latest version of XML 256 | Schema itself, or with the XML namespace itself. In other words, 257 | if the XML Schema or XML namespaces change, the version of this 258 | document at 259 | http://www.w3.org/2001/xml.xsd 260 | 261 | will change accordingly; the version at 262 | 263 | http://www.w3.org/2009/01/xml.xsd 264 | 265 | will not change. 266 |
267 |268 | Previous dated (and unchanging) versions of this schema 269 | document are at: 270 |
271 | 281 |
106 |
108 |
113 | Debian est un système d'exploitation 115 | libre pour votre ordinateur. Un système d'exploitation 116 | est la suite des programmes de base et des utilitaires qui permettent à un 117 | ordinateur de fonctionner. Debian utilise le noyau 118 | Linux (le cœur d'un système d'exploitation), 119 | mais la plupart des outils de base du système proviennent du 120 | projet GNU ; d'où le nom GNU/Linux.
121 |Debian GNU/Linux est bien plus qu'un simple système d'exploitation : 122 | il contient plus de 25000 123 | paquets ; les paquets sont des composants 124 | logiciels précompilés conçus pour s'installer facilement sur votre machine.
125 | 126 |La dernière version stable de Debian est 129 | la 5.0. La dernière mise à jour de cette version a été publiée 130 | le 4 septembre 2010. Vous pouvez aussi accéder aux 131 | autres versions disponibles de Debian.
132 |Si vous souhaitez commencer à utiliser Debian, vous pouvez facilement 133 | en obtenir une copie, et ensuite suivre les 134 | instructions d'installation 135 | pour l'installer.
136 |Si vous mettez à niveau votre système depuis une ancienne version vers 137 | la dernière version stable publiée, veuillez lire les 138 | notes de publication 139 | avant de commencer.
140 |Pour obtenir de l'aide concernant l'utilisation ou la configuration 141 | de Debian, consultez nos pages sur la documentation 142 | et l'assistance.
143 |Les utilisateurs qui parlent une langue autre que l'anglais peuvent 144 | consulter la section sur l'international.
145 |Les personnes ayant un autre système qu'Intel x86 peuvent 146 | consulter la section sur les portages.
147 |[19 octobre 2010] Debian sur le point d'accueillir officiellement les contributeurs non empaqueteurs
150 | [7 octobre 2010] Debian à la rencontre de la Society for Neuroscience
151 | [8 septembre 2010] Paris Mini-DebConf 2010
152 | [5 septembre 2010] Le service de rétroportages (« backports ») devient officiel
153 | [4 septembre 2010] Publication de la mise à jour de Debian GNU/Linux 5.0.6
154 | [3 septembre 2010] Conférence 2010 de la communauté Debian italienne - du 17 au 19 septembre à Pérouse, Italie
155 |
Pour les communiqués plus anciens, consultez la suite de la page actualités. 157 | Si vous voulez recevoir un courrier (en anglais) à chaque fois qu'un communiqué paraît, abonnez-vous 158 | à la liste de diffusion debian-announce.
159 |[22 octobre 2010] DSA-2122 glibc - missing input sanitization
162 | [19 octobre 2010] DSA-2121 typo3-src - several vulnerabilities
163 | [12 octobre 2010] DSA-2120 postgresql-8.3 - privilege escalation
164 | [12 octobre 2010] DSA-2119 poppler - several vulnerabilities
165 | [8 octobre 2010] DSA-2118 subversion - logic flaw
166 | [4 octobre 2010] DSA-2117 apr-util - denial of service
167 | [4 octobre 2010] DSA-2116 freetype - integer overflow
168 | [29 septembre 2010] DSA-2115 moodle - several vulnerabilities
169 | [26 septembre 2010] DSA-2114 git-core - buffer overflow
170 | [20 septembre 2010] DSA-2113 drupal6 - several vulnerabilities
171 | [20 septembre 2010] DSA-2112 bzip2 - integer overflow
172 |
Pour les annonces de sécurité, consultez la 174 | page sécurité. 175 | Si vous voulez recevoir les annonces de sécurité (en anglais) dès leur parution, abonnez-vous 176 | à la liste de diffusion debian-security-announce.
177 |