From 31ed04343a8761d7898f30bd0eed35136175cedb Mon Sep 17 00:00:00 2001 From: JJ Merelo Date: Mon, 12 Mar 2018 17:32:38 +0100 Subject: [PATCH 01/97] Adds perl6 test from perl6/doc home --- test/markups/README.pod6 | 67 +++++++++++++++++++++++++++++++++++ test/markups/README.pod6.html | 42 ++++++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100755 test/markups/README.pod6 create mode 100644 test/markups/README.pod6.html diff --git a/test/markups/README.pod6 b/test/markups/README.pod6 new file mode 100755 index 00000000..ee65afbe --- /dev/null +++ b/test/markups/README.pod6 @@ -0,0 +1,67 @@ +=begin Html + +Welcome to the official documentation of the Perl 6 +programming language! +Besides online browsing and searching, you can also +view everything in one file or +contribute +by reporting mistakes or sending patches. + +
+ +
+ +
Language Reference & Tutorials
+
+ A collection of documents describing, in detail, the various + conceptual parts of the language. + + +
+ +
Type Reference
+
+ Index of built-in classes and roles. +
+ +
Routine Reference
+
+ Index of built-in subroutines and methods. +
+ +
Perl 6 Programs
+
+ A collection of documents describing how to + run the Perl 6 executable program and other utilities, + how to debug Perl 6 programs, and how to hack on Perl 6 + source code. +
+ + + +
+ +
+ + +

The Perl 6 homepage offers a +comprehensive list of Perl 6 resources, including tutorials, how-tos +and FAQs (Frequently Asked Questions).

+ +

+Perl 6 compiler developers may also be interested in +The Perl 6 Specification. +Documentation for the different but related Perl 5 language +can be found on the Perl 5 documentation website. +

+=end Html + +# vim: expandtab softtabstop=4 shiftwidth=4 ft=perl6 diff --git a/test/markups/README.pod6.html b/test/markups/README.pod6.html new file mode 100644 index 00000000..511f5390 --- /dev/null +++ b/test/markups/README.pod6.html @@ -0,0 +1,42 @@ + + + + + + + + + + + +
+ + + +
+ Welcome to the official documentation of the Perl 6 programming language! Besides online browsing and searching, you can also view everything in one file or contribute by reporting mistakes or sending patches.
Language Reference & Tutorials
A collection of documents describing, in detail, the various conceptual parts of the language.
Type Reference
Index of built-in classes and roles.
Routine Reference
Index of built-in subroutines and methods.
Perl 6 Programs
A collection of documents describing how to run the Perl 6 executable program and other utilities, how to debug Perl 6 programs, and how to hack on Perl 6 source code.

The Perl 6 homepage offers a comprehensive list of Perl 6 resources, including tutorials, how-tos and FAQs (Frequently Asked Questions).

Perl 6 compiler developers may also be interested in The Perl 6 Specification. Documentation for the different but related Perl 5 language can be found on the Perl 5 documentation website.

+
+ + + + + From 3286a7eb442fcfdda59bdcd3ff7740a6a79ea971 Mon Sep 17 00:00:00 2001 From: JJ Merelo Date: Mon, 12 Mar 2018 17:47:28 +0100 Subject: [PATCH 02/97] Adds files (and modifies) for perl6 refs #907 --- README.md | 8 ++++++++ lib/github/commands/pod62html | 3 +++ lib/github/markup.rb | 1 + lib/github/markups.rb | 3 ++- 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100755 lib/github/commands/pod62html diff --git a/README.md b/README.md index b4ab5226..b00b9023 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,14 @@ Installation gem install github-markup ``` +or + +``` +bundle install +``` + +from this directory + Usage ----- diff --git a/lib/github/commands/pod62html b/lib/github/commands/pod62html new file mode 100755 index 00000000..4bea53ba --- /dev/null +++ b/lib/github/commands/pod62html @@ -0,0 +1,3 @@ +#!/bin/bash + +perl6 --doc=HTML "$1" diff --git a/lib/github/markup.rb b/lib/github/markup.rb index 84c1e45f..44344909 100644 --- a/lib/github/markup.rb +++ b/lib/github/markup.rb @@ -19,6 +19,7 @@ module Markups MARKUP_RDOC = :rdoc MARKUP_RST = :rst MARKUP_TEXTILE = :textile + MARKUP_POD6 = :pod6 end module Markup diff --git a/lib/github/markups.rb b/lib/github/markups.rb index 61138e85..917c6215 100644 --- a/lib/github/markups.rb +++ b/lib/github/markups.rb @@ -51,4 +51,5 @@ "restructuredtext" ) -command(::GitHub::Markups::MARKUP_POD, :pod2html, /pod/, ["Pod"], "pod") +command(::GitHub::Markups::MARKUP_POD6, :pod6tohtml, /pod/, ["Pod6"], "pod6") +command(::GitHub::Markups::MARKUP_POD, :pod2html, /pod$/, ["Pod"], "pod") From 8c5fc3d9995cfdda08b96d9606a42100e30a55f2 Mon Sep 17 00:00:00 2001 From: JJ Merelo Date: Mon, 12 Mar 2018 18:12:07 +0100 Subject: [PATCH 03/97] Cleanup --- .gitignore | 1 + lib/github/commands/pod62html | 2 ++ lib/github/markups.rb | 2 +- test/markup_test.rb | 5 +++-- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 2535ee2a..c8263789 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ Gemfile.lock vendor/ .project .buildpath +*~ \ No newline at end of file diff --git a/lib/github/commands/pod62html b/lib/github/commands/pod62html index 4bea53ba..3b36e8f3 100755 --- a/lib/github/commands/pod62html +++ b/lib/github/commands/pod62html @@ -1,3 +1,5 @@ #!/bin/bash +echo "Processing " +echo "$1" perl6 --doc=HTML "$1" diff --git a/lib/github/markups.rb b/lib/github/markups.rb index 917c6215..8099846c 100644 --- a/lib/github/markups.rb +++ b/lib/github/markups.rb @@ -51,5 +51,5 @@ "restructuredtext" ) -command(::GitHub::Markups::MARKUP_POD6, :pod6tohtml, /pod/, ["Pod6"], "pod6") +command(::GitHub::Markups::MARKUP_POD6, :pod6tohtml, /pod6/, ["Pod6"], "pod6") command(::GitHub::Markups::MARKUP_POD, :pod2html, /pod$/, ["Pod"], "pod") diff --git a/test/markup_test.rb b/test/markup_test.rb index 8e02ed21..709161d6 100644 --- a/test/markup_test.rb +++ b/test/markup_test.rb @@ -1,4 +1,4 @@ -# encoding: UTF-8 +# encoding: utf-8 $LOAD_PATH.unshift File.dirname(__FILE__) + "/../lib" @@ -93,7 +93,8 @@ def test_each_render_has_a_name assert_equal "wikicloth", GitHub::Markup.renderer('README.wiki', '

Title

').name assert_equal "asciidoctor", GitHub::Markup.renderer('README.adoc', '== Title').name assert_equal "restructuredtext", GitHub::Markup.renderer('README.rst', 'Title').name - assert_equal "pod", GitHub::Markup.renderer('README.pod', '=begin').name + assert_equal "pod", GitHub::Markup.renderer('README.pod', '=head1').name + assert_equal "pod6", GitHub::Markup.renderer('README.pod6', '=begin').name end def test_rendering_by_symbol From c08633c4d2772aa56ac3f48dec28797291d75198 Mon Sep 17 00:00:00 2001 From: JJ Merelo Date: Mon, 12 Mar 2018 18:12:41 +0100 Subject: [PATCH 04/97] Cleanup --- test/markup_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/markup_test.rb b/test/markup_test.rb index 709161d6..f417d915 100644 --- a/test/markup_test.rb +++ b/test/markup_test.rb @@ -93,8 +93,8 @@ def test_each_render_has_a_name assert_equal "wikicloth", GitHub::Markup.renderer('README.wiki', '

Title

').name assert_equal "asciidoctor", GitHub::Markup.renderer('README.adoc', '== Title').name assert_equal "restructuredtext", GitHub::Markup.renderer('README.rst', 'Title').name - assert_equal "pod", GitHub::Markup.renderer('README.pod', '=head1').name - assert_equal "pod6", GitHub::Markup.renderer('README.pod6', '=begin').name +# assert_equal "pod", GitHub::Markup.renderer('README.pod', '=head1').name +# assert_equal "pod6", GitHub::Markup.renderer('README.pod6', '=begin').name end def test_rendering_by_symbol From a6dc07724335a51e7f9cff860522beaaec1d2c7e Mon Sep 17 00:00:00 2001 From: JJ Merelo Date: Mon, 12 Mar 2018 20:33:04 +0100 Subject: [PATCH 05/97] Reduced errors to 0 --- lib/github/commands/pod62html | 9 +- lib/github/markup.rb | 1 - lib/github/markups.rb | 2 +- test/markup_test.rb | 5 +- test/markups/README.pod6 | 215 ++++++++++++++++++++++++---------- test/markups/README.pod6.html | 154 +++++++++++++++++++++--- 6 files changed, 292 insertions(+), 94 deletions(-) diff --git a/lib/github/commands/pod62html b/lib/github/commands/pod62html index 3b36e8f3..28937eca 100755 --- a/lib/github/commands/pod62html +++ b/lib/github/commands/pod62html @@ -1,5 +1,6 @@ -#!/bin/bash +#!/usr/bin/env perl6 -echo "Processing " -echo "$1" -perl6 --doc=HTML "$1" +use v6; + +use Pod::To::HTML; +put Pod::To::HTML.render(slurp); diff --git a/lib/github/markup.rb b/lib/github/markup.rb index 44344909..4f22c9ea 100644 --- a/lib/github/markup.rb +++ b/lib/github/markup.rb @@ -74,7 +74,6 @@ def command(symbol, command, regexp, languages, name, &block) if File.exist?(file = File.dirname(__FILE__) + "/commands/#{command}") command = file end - markup_impl(symbol, CommandImplementation.new(regexp, languages, command, name, &block)) end diff --git a/lib/github/markups.rb b/lib/github/markups.rb index 8099846c..278e7068 100644 --- a/lib/github/markups.rb +++ b/lib/github/markups.rb @@ -51,5 +51,5 @@ "restructuredtext" ) -command(::GitHub::Markups::MARKUP_POD6, :pod6tohtml, /pod6/, ["Pod6"], "pod6") +command(::GitHub::Markups::MARKUP_POD6, :pod62html, /pod6/, ["Perl 6"], "pod6") command(::GitHub::Markups::MARKUP_POD, :pod2html, /pod$/, ["Pod"], "pod") diff --git a/test/markup_test.rb b/test/markup_test.rb index f417d915..66195103 100644 --- a/test/markup_test.rb +++ b/test/markup_test.rb @@ -52,7 +52,6 @@ def call define_method "test_#{markup}" do skip "Skipping MediaWiki test because wikicloth is currently not compatible with JRuby." if markup == "mediawiki" && RUBY_PLATFORM == "java" - source = File.read(readme) expected_file = "#{readme}.html" expected = File.read(expected_file).rstrip @@ -67,7 +66,6 @@ def call f.close_write f.read end - assert_html_equal expected, actual, <Title').name assert_equal "asciidoctor", GitHub::Markup.renderer('README.adoc', '== Title').name assert_equal "restructuredtext", GitHub::Markup.renderer('README.rst', 'Title').name -# assert_equal "pod", GitHub::Markup.renderer('README.pod', '=head1').name -# assert_equal "pod6", GitHub::Markup.renderer('README.pod6', '=begin').name + assert_equal "pod", GitHub::Markup.renderer('README.pod', '=head1').name end def test_rendering_by_symbol diff --git a/test/markups/README.pod6 b/test/markups/README.pod6 index ee65afbe..a153b1bb 100755 --- a/test/markups/README.pod6 +++ b/test/markups/README.pod6 @@ -1,67 +1,152 @@ -=begin Html - -Welcome to the official documentation of the Perl 6 -programming language! -Besides online browsing and searching, you can also -view everything in one file or -contribute -by reporting mistakes or sending patches. - -
- -
- -
Language Reference & Tutorials
-
- A collection of documents describing, in detail, the various - conceptual parts of the language. - - -
- -
Type Reference
-
- Index of built-in classes and roles. -
- -
Routine Reference
-
- Index of built-in subroutines and methods. -
- -
Perl 6 Programs
-
- A collection of documents describing how to - run the Perl 6 executable program and other utilities, - how to debug Perl 6 programs, and how to hack on Perl 6 - source code. -
- - - -
- -
- - -

The Perl 6 homepage offers a -comprehensive list of Perl 6 resources, including tutorials, how-tos -and FAQs (Frequently Asked Questions).

- -

-Perl 6 compiler developers may also be interested in -The Perl 6 Specification. -Documentation for the different but related Perl 5 language -can be found on the Perl 5 documentation website. -

-=end Html +=begin pod + +=TITLE About the Docs + +=SUBTITLE Meta-documentation + +This document collection represents the on-going effort to document the Perl 6 programming +language with the goals of being: comprehensive; easy to use; easy to +navigate; and useful to both newcomers and experienced Perl 6 +programmers. + +An HTML version of the documentation is located online at +L. + +The official source for this documentation is located at L. + +This particular document is a quick overview of the process +described in more detail in L. +This document also provides a short introduction to writing Perl 6 +Pod files, which can be rendered into HTML and other formats. + +=head1 Structure + +All of the documentation is written in Perl 6 Pod and kept in the C +directory, and the C and C sub-directories. +These files are processed as collections of definitions or +"documentables", which are then post-processed and linked together. + +=head1 Generating HTML from Pod + +To generate HTML from the Pod files, you'll need: + +=item A recent version of the Rakudo Perl 6 compiler + +=item The Perl 6 modules Pod::To::HTML, Pod::To::BigPage, and URI::Escape +(can be installed via L). + +=item B: L, for creating graphs +of the relationships between Perl 6 types + +=item B: L and L, for syntax +highlighting + +To generate the documentation into the C folder, run: + +=begin code :lang +perl6 htmlify.p6 +=end code + +To host the documentation from a web server, have Perl 5 +and Mojolicious::Lite installed, then run: + +=begin code :lang +perl app.pl daemon +=end code + +=head1 Contributing + +The documentation is written in Perl 6 Pod. + +For a quick introduction to Perl 6 Pod, see L. + +For full details about the Perl 6 Pod specification, see L. + +=head2 Adding definitions + +Documentables can be defined using an C<=headN> Pod directive, where +C is greater than zero (e.g., C<=head1>, C<=head2>, …). + +All of the paragraphs and blocks following that directive, up until the +next directive of the same level, will be considered part of the +documentable. So, in: + +=begin code :allow :skip-test +=head2 R + +Some paragraphs, followed by some code: + + my Code $examples = "amazing"; + +Mind === blown. + +=head3 Minor details about R + +It's fantastic. + +=head2 And now, for something completely different + +… + +=end code + +The documentable R extends down to the C<=head2 And now…>. + +Documentables may contain other documentables. Class documentables, for +example, often contain the methods the class implements. + +Definitions must be in one of the following forms to be recognized as +the start of a documentable named, say, þ. First the code in the document source: + +=begin code :skip-test + +=item X | infix,þ> (This a special case, which +is always considered a definition) + +=item C + +=item B Infix> + +=item C + +=item B> + +=item C (A special case for the L documentables) + +=end code + +Then the results on the rendered page: + +=item X | infix,þ> (This is a special case, which +is always considered a definition) + +=item C + +=item B Infix> + +=item C + +=item B> + +=item C (A special case for the L documentables) + +These items should now be searchable by using the search field in the HTML docs. + +You can add emphasis with bold (B >>) or italicized (B >>), +with or without code formatting (B >>). Due to current parser limitations, +special steps have to be taken to use B >> with other formatting codes; for example: + +=begin code :skip-test +=item X|foo> a fancy subroutine +=end code + +renders like this + +=item X|foo> a fancy subroutine + +Notice that text after a pipe ('|') has no formatting. Also note that B >> +preserves spaces and treats text as verbatim. +=end pod # vim: expandtab softtabstop=4 shiftwidth=4 ft=perl6 diff --git a/test/markups/README.pod6.html b/test/markups/README.pod6.html index 511f5390..c0039bc8 100644 --- a/test/markups/README.pod6.html +++ b/test/markups/README.pod6.html @@ -1,16 +1,14 @@ - - - - - - - - - -
+ + +
-
- Welcome to the official documentation of the Perl 6 programming language! Besides online browsing and searching, you can also view everything in one file or contribute by reporting mistakes or sending patches.
Language Reference & Tutorials
A collection of documents describing, in detail, the various conceptual parts of the language.
Type Reference
Index of built-in classes and roles.
Routine Reference
Index of built-in subroutines and methods.
Perl 6 Programs
A collection of documents describing how to run the Perl 6 executable program and other utilities, how to debug Perl 6 programs, and how to hack on Perl 6 source code.

The Perl 6 homepage offers a comprehensive list of Perl 6 resources, including tutorials, how-tos and FAQs (Frequently Asked Questions).

Perl 6 compiler developers may also be interested in The Perl 6 Specification. Documentation for the different but related Perl 5 language can be found on the Perl 5 documentation website.

-
+

About the Docs

+

Meta-documentation

+ + +

Table of Contents

+ + + + + + + + + + + + + + + + + +
1Structure
2Generating HTML from Pod
3Contributing
3.1Adding definitions
+ + +
+

This document collection represents the on-going effort to document the Perl 6 programming language with the goals of being: comprehensive; easy to use; easy to navigate; and useful to both newcomers and experienced Perl 6 programmers.

+

An HTML version of the documentation is located online at https://docs.perl6.org.

+

The official source for this documentation is located at perl6/doc on GitHub.

+

This particular document is a quick overview of the process described in more detail in CONTRIBUTING on GitHub. This document also provides a short introduction to writing Perl 6 Pod files, which can be rendered into HTML and other formats.

+

Structure

+

All of the documentation is written in Perl 6 Pod and kept in the doc/ directory, and the doc/Language/ and doc/Type/ sub-directories. These files are processed as collections of definitions or "documentables", which are then post-processed and linked together.

+

Generating HTML from Pod

+

To generate HTML from the Pod files, you'll need:

+
    +
  • +

    A recent version of the Rakudo Perl 6 compiler

    +
  • +
  • +

    The Perl 6 modules Pod::To::HTML, Pod::To::BigPage, and URI::Escape (can be installed via zef).

    +
  • +
  • +

    Optional: GraphViz, for creating graphs of the relationships between Perl 6 types

    +
  • +
  • +

    Optional: Atom Highlights and language-perl6, for syntax highlighting

    +
  • +
+

To generate the documentation into the html/ folder, run:

+
perl6 htmlify.p6
+
+

To host the documentation from a web server, have Perl 5 and Mojolicious::Lite installed, then run:

+
perl app.pl daemon
+
+

Contributing

+

The documentation is written in Perl 6 Pod.

+

For a quick introduction to Perl 6 Pod, see Perl 6 Pod.

+

For full details about the Perl 6 Pod specification, see Synopsis 26, Documentation.

+

Adding definitions

+

Documentables can be defined using an =headN Pod directive, where N is greater than zero (e.g., =head1, =head2, …).

+

All of the paragraphs and blocks following that directive, up until the next directive of the same level, will be considered part of the documentable. So, in:

+
=head2 My Definition
+
+Some paragraphs, followed by some code:
+
+    my Code $examples = "amazing";
+
+Mind === blown.
+
+=head3 Minor details about My Definition
 
-
-
+It's fantastic.
 
+=head2 And now, for something completely different
+
+…
+
+
+

The documentable My Definition extends down to the =head2 And now….

+

Documentables may contain other documentables. Class documentables, for example, often contain the methods the class implements.

+

Definitions must be in one of the following forms to be recognized as the start of a documentable named, say, þ. First the code in the document source:

+
=item X<C<How to use the þ infix> | infix,þ> (This a special case, which
+is always considered a definition)
+
+=item C<The þ Infix>
+
+=item B<The C<þ> Infix>
+
+=item C<Infix þ>
+
+=item B<Infix C<þ>>
+
+=item C<trait is cached> (A special case for the L<trait|/language/functions#Traits> documentables)
+
+
+

Then the results on the rendered page:

+
    +
  • +

    How to use the þ infix (This is a special case, which is always considered a definition)

    +
  • +
  • +

    The þ Infix

    +
  • +
  • +

    The þ Infix

    +
  • +
  • +

    Infix þ

    +
  • +
  • +

    Infix þ

    +
  • +
  • +

    trait is cached (A special case for the trait documentables)

    +
  • +
+

These items should now be searchable by using the search field in the HTML docs.

+

You can add emphasis with bold ( B<> ) or italicized ( I<> ), with or without code formatting ( C<> ). Due to current parser limitations, special steps have to be taken to use X<> with other formatting codes; for example:

+
=item X<B<foo>|foo> a fancy subroutine
+
+

renders like this

+
    +
  • +

    foo a fancy subroutine

    +
  • +
+

Notice that text after a pipe ('|') has no formatting. Also note that C<> preserves spaces and treats text as verbatim.

+ +
From f3cd92ace7794575892567c4e20555ee44893725 Mon Sep 17 00:00:00 2001 From: JJ Merelo Date: Mon, 12 Mar 2018 20:37:38 +0100 Subject: [PATCH 06/97] Test-driving travis now --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index f118d5cc..f46ceb8b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,6 +16,7 @@ git: before_install: - sudo apt-get update -qq - sudo apt-get install perl + - wget -O /tmp/perl6.deb https://nxadm.github.io/rakudo-pkg/latest-release.html?os=ubuntu&version=14.04&arch=amd64 && sudo dpkg -i /tmp/perl6.deb && install-zef-as-user && zef install Pod::To::HTML - curl -L http://cpanmin.us | perl - --sudo App::cpanminus - sudo cpanm --installdeps --notest Pod::Simple - sudo pip install docutils From ce7705c0c327e47db9a2e486696503ee93724948 Mon Sep 17 00:00:00 2001 From: JJ Merelo Date: Mon, 12 Mar 2018 20:42:03 +0100 Subject: [PATCH 07/97] Use direct link --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f46ceb8b..29a41d4e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ git: before_install: - sudo apt-get update -qq - sudo apt-get install perl - - wget -O /tmp/perl6.deb https://nxadm.github.io/rakudo-pkg/latest-release.html?os=ubuntu&version=14.04&arch=amd64 && sudo dpkg -i /tmp/perl6.deb && install-zef-as-user && zef install Pod::To::HTML + - wget -O /tmp/perl6.deb https://github.com/nxadm/rakudo-pkg/releases/download/v2018.02.1/rakudo-pkg-Ubuntu14.04_2018.02.1-01_amd64.deb && sudo dpkg -i /tmp/perl6.deb && install-zef-as-user && zef install Pod::To::HTML - curl -L http://cpanmin.us | perl - --sudo App::cpanminus - sudo cpanm --installdeps --notest Pod::Simple - sudo pip install docutils From fed288a7551114c9d1e39dd7fef66080d51c5fde Mon Sep 17 00:00:00 2001 From: JJ Merelo Date: Mon, 12 Mar 2018 20:48:31 +0100 Subject: [PATCH 08/97] Adjusts path --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 29a41d4e..b7d7ecf1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,7 +16,7 @@ git: before_install: - sudo apt-get update -qq - sudo apt-get install perl - - wget -O /tmp/perl6.deb https://github.com/nxadm/rakudo-pkg/releases/download/v2018.02.1/rakudo-pkg-Ubuntu14.04_2018.02.1-01_amd64.deb && sudo dpkg -i /tmp/perl6.deb && install-zef-as-user && zef install Pod::To::HTML + - wget -O /tmp/perl6.deb https://github.com/nxadm/rakudo-pkg/releases/download/v2018.02.1/rakudo-pkg-Ubuntu14.04_2018.02.1-01_amd64.deb && sudo dpkg -i /tmp/perl6.deb && export PATH=$PATH:/.perl6/bin:/opt/rakudo-pkg/bin && install-zef-as-user && zef install Pod::To::HTML - curl -L http://cpanmin.us | perl - --sudo App::cpanminus - sudo cpanm --installdeps --notest Pod::Simple - sudo pip install docutils From d0f9a825fb2db1c30db769c771ec3ffb531ac75d Mon Sep 17 00:00:00 2001 From: JJ Merelo Date: Mon, 12 Mar 2018 21:27:24 +0100 Subject: [PATCH 09/97] Adds POD6 to README. Closes #907 when accepted (along with the rest of the commits). --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b00b9023..8bb045bc 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,8 @@ you wish to run the library. You can also run `script/bootstrap` to fetch them a * [.asciidoc, .adoc, .asc](http://asciidoc.org/) -- `gem install asciidoctor` (http://asciidoctor.org) * [.pod](http://search.cpan.org/dist/perl/pod/perlpod.pod) -- `Pod::Simple::XHTML` comes with Perl >= 5.10. Lower versions should install Pod::Simple from CPAN. - +* [.pod6](https://docs.perl6.org/language/pod) -- No additional + dependency. Installation ----------- From c45c7e60b25ade1b42e6c9fc67e3c7d93d79d7ab Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Fri, 19 Oct 2018 09:52:28 +1100 Subject: [PATCH 10/97] remove RMarkdown from the linguist match list --- lib/github/markup/markdown.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/github/markup/markdown.rb b/lib/github/markup/markdown.rb index aa012d48..11cf662d 100644 --- a/lib/github/markup/markdown.rb +++ b/lib/github/markup/markdown.rb @@ -31,7 +31,7 @@ class Markdown < Implementation def initialize super( /md|mkdn?|mdwn|mdown|markdown|litcoffee/i, - ["Markdown", "RMarkdown", "Literate CoffeeScript"]) + ["Markdown", "Literate CoffeeScript"]) end def load From 91736268b38d869df6ef1d4ea9902f2e8c82c69b Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Fri, 19 Oct 2018 09:55:59 +1100 Subject: [PATCH 11/97] :gem: bump to 3.0.1 --- HISTORY.md | 4 ++++ lib/github-markup.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index 97f3e825..6ead2e6d 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,7 @@ +## 3.0.1 - 2018-10-19 + +* Remove linguist-detected RMarkdown files from the Markdown renderer [#1237](https://github.com/github/markup/pull/1237) + ## 3.0.0 - 2018-10-18 * Allow passing options through to CommonMarker [#1236](https://github.com/github/markup/pull/1236) diff --git a/lib/github-markup.rb b/lib/github-markup.rb index cb58c742..259319e2 100644 --- a/lib/github-markup.rb +++ b/lib/github-markup.rb @@ -1,6 +1,6 @@ module GitHub module Markup - VERSION = '3.0.0' + VERSION = '3.0.1' Version = VERSION end end From e70b3eedb7ac9f27b4289a8f7b541a8e971f6bf7 Mon Sep 17 00:00:00 2001 From: Jordan Webb Date: Thu, 1 Nov 2018 19:41:26 +0100 Subject: [PATCH 12/97] Clarifying dependencies. Co-Authored-By: JJ --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8bb045bc..71f2e5ed 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ you wish to run the library. You can also run `script/bootstrap` to fetch them a * [.pod](http://search.cpan.org/dist/perl/pod/perlpod.pod) -- `Pod::Simple::XHTML` comes with Perl >= 5.10. Lower versions should install Pod::Simple from CPAN. * [.pod6](https://docs.perl6.org/language/pod) -- No additional - dependency. + dependency beyond perl6 `Pod::To::HTML` (in stdlib) Installation ----------- From 11a355bba9c6d9f25836b9be09262d2362ca9177 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Wed, 7 Nov 2018 10:38:05 +1100 Subject: [PATCH 13/97] we no longer use html-pipeline for this --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8d619414..be9ef8d1 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ This library is the **first step** of a journey that every markup file in a repo 1. `github-markup` selects an _underlying library_ to convert the raw markup to HTML. See the list of [supported markup formats](#markups) below. 1. The HTML is sanitized, aggressively removing things that could harm you and your kin—such as `script` tags, inline-styles, and `class` or `id` attributes. 1. Syntax highlighting is performed on code blocks. See [github/linguist](https://github.com/github/linguist#syntax-highlighting) for more information about syntax highlighting. -1. The HTML is passed through other filters in the [html-pipeline](https://github.com/jch/html-pipeline) that add special sauce, such as [emoji](https://github.com/jch/html-pipeline/blob/master/lib/html/pipeline/emoji_filter.rb), [task lists](https://github.com/github/task_list/blob/master/lib/task_list/filter.rb), [named anchors](https://github.com/jch/html-pipeline/blob/master/lib/html/pipeline/toc_filter.rb), [CDN caching for images](https://github.com/jch/html-pipeline/blob/master/lib/html/pipeline/camo_filter.rb), and [autolinking](https://github.com/jch/html-pipeline/blob/master/lib/html/pipeline/autolink_filter.rb). +1. The HTML is passed through other filters that add special sauce, such as emoji, task lists, named anchors, CDN caching for images, and autolinking. 1. The resulting HTML is rendered on GitHub.com. Please note that **only the first step** is covered by this gem — the rest happens on GitHub.com. In particular, `markup` itself does no sanitization of the resulting HTML, as it expects that to be covered by whatever pipeline is consuming the HTML. From 811148744b9752e22d3c6a1db87bddf01c5107c1 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Mon, 10 Dec 2018 12:50:54 +1100 Subject: [PATCH 14/97] cleanup/fixes --- .travis.yml | 6 ++- README.md | 2 +- lib/github/markups.rb | 2 +- test/markup_test.rb | 1 + test/markups/README.pod6.html | 82 +++++++++++++++++------------------ 5 files changed, 46 insertions(+), 47 deletions(-) diff --git a/.travis.yml b/.travis.yml index b7d7ecf1..e409f596 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,9 +14,11 @@ notifications: git: depth: 10 before_install: + - sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 379CE192D401AB61 + - echo "deb https://dl.bintray.com/nxadm/rakudo-pkg-debs `lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list.d/rakudo-pkg.list - sudo apt-get update -qq - - sudo apt-get install perl - - wget -O /tmp/perl6.deb https://github.com/nxadm/rakudo-pkg/releases/download/v2018.02.1/rakudo-pkg-Ubuntu14.04_2018.02.1-01_amd64.deb && sudo dpkg -i /tmp/perl6.deb && export PATH=$PATH:/.perl6/bin:/opt/rakudo-pkg/bin && install-zef-as-user && zef install Pod::To::HTML + - sudo apt-get install perl rakudo-pkg + - export PATH=$PATH:/.perl6/bin:/opt/rakudo-pkg/bin && install-zef-as-user && zef install Pod::To::HTML - curl -L http://cpanmin.us | perl - --sudo App::cpanminus - sudo cpanm --installdeps --notest Pod::Simple - sudo pip install docutils diff --git a/README.md b/README.md index f023abf6..0651c33c 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ or bundle install ``` -from this directory +from this directory. Usage ----- diff --git a/lib/github/markups.rb b/lib/github/markups.rb index 518c52cc..585d54b0 100644 --- a/lib/github/markups.rb +++ b/lib/github/markups.rb @@ -52,4 +52,4 @@ ) command(::GitHub::Markups::MARKUP_POD6, :pod62html, /pod6/, ["Perl 6"], "pod6") -command(::GitHub::Markups::MARKUP_POD, :pod2html, /pod$/, ["Pod"], "pod") +command(::GitHub::Markups::MARKUP_POD, :pod2html, /pod/, ["Pod"], "pod") diff --git a/test/markup_test.rb b/test/markup_test.rb index e08b7c12..86c83ee7 100644 --- a/test/markup_test.rb +++ b/test/markup_test.rb @@ -90,6 +90,7 @@ def test_each_render_has_a_name assert_equal "asciidoctor", GitHub::Markup.renderer('README.adoc', '== Title').name assert_equal "restructuredtext", GitHub::Markup.renderer('README.rst', 'Title').name assert_equal "pod", GitHub::Markup.renderer('README.pod', '=head1').name + assert_equal "pod6", GitHub::Markup.renderer('README.pod6', '=begin pod').name end def test_rendering_by_symbol diff --git a/test/markups/README.pod6.html b/test/markups/README.pod6.html index c0039bc8..5f56257f 100644 --- a/test/markups/README.pod6.html +++ b/test/markups/README.pod6.html @@ -1,35 +1,28 @@ - About the Docs - - - /* code gets the browser-default font - * kbd gets a slightly less common monospace font - * samp gets the hard pixelly fonts - */ - kbd { font-family: "Droid Sans Mono", "Luxi Mono", "Inconsolata", monospace } - samp { font-family: "Terminus", "Courier", "Lucida Console", monospace } - /* WHATWG HTML frowns on the use of <u> because it looks like a link, - * so we make it not look like one. - */ - u { text-decoration: none } - .nested { - margin-left: 3em; - } - // footnote things: - aside, u { opacity: 0.7 } - a[id^="fn-"]:target { background: #ff0 } - - - - - - -
- - -

About the Docs

-

Meta-documentation

- + + + About the Docs + + + kbd { font-family: "Droid Sans Mono", "Luxi Mono", "Inconsolata", monospace } + samp { font-family: "Terminus", "Courier", "Lucida Console", monospace } + u { text-decoration: none } + .nested { + margin-left: 3em; + } + aside, u { opacity: 0.7 } + a[id^="fn-"]:target { background: #ff0 } + + + + + + +
+ +

About the Docs

+

Meta-documentation

+

Table of Contents

@@ -52,24 +45,24 @@

Table of Contents

-
-

This document collection represents the on-going effort to document the Perl 6 programming language with the goals of being: comprehensive; easy to use; easy to navigate; and useful to both newcomers and experienced Perl 6 programmers.

+
+

This document collection represents the on-going effort to document the Perl 6 programming language with the goals of being: comprehensive; easy to use; easy to navigate; and useful to both newcomers and experienced Perl 6 programmers.

An HTML version of the documentation is located online at https://docs.perl6.org.

The official source for this documentation is located at perl6/doc on GitHub.

-

This particular document is a quick overview of the process described in more detail in CONTRIBUTING on GitHub. This document also provides a short introduction to writing Perl 6 Pod files, which can be rendered into HTML and other formats.

+

This particular document is a quick overview of the process described in more detail in CONTRIBUTING on GitHub. This document also provides a short introduction to writing Perl 6 Pod files, which can be rendered into HTML and other formats.

Structure

-

All of the documentation is written in Perl 6 Pod and kept in the doc/ directory, and the doc/Language/ and doc/Type/ sub-directories. These files are processed as collections of definitions or "documentables", which are then post-processed and linked together.

+

All of the documentation is written in Perl 6 Pod and kept in the doc/ directory, and the doc/Language/ and doc/Type/ sub-directories. These files are processed as collections of definitions or "documentables", which are then post-processed and linked together.

Generating HTML from Pod

To generate HTML from the Pod files, you'll need:

  • -

    A recent version of the Rakudo Perl 6 compiler

    +

    A recent version of the Rakudo Perl 6 compiler

  • -

    The Perl 6 modules Pod::To::HTML, Pod::To::BigPage, and URI::Escape (can be installed via zef).

    +

    The Perl 6 modules Pod::To::HTML, Pod::To::BigPage, and URI::Escape (can be installed via zef).

  • -

    Optional: GraphViz, for creating graphs of the relationships between Perl 6 types

    +

    Optional: GraphViz, for creating graphs of the relationships between Perl 6 types

  • Optional: Atom Highlights and language-perl6, for syntax highlighting

    @@ -78,13 +71,13 @@

    Generating HTML from Pod

    To generate the documentation into the html/ folder, run:

    perl6 htmlify.p6
     
    -

    To host the documentation from a web server, have Perl 5 and Mojolicious::Lite installed, then run:

    +

    To host the documentation from a web server, have Perl 5 and Mojolicious::Lite installed, then run:

    perl app.pl daemon
     

    Contributing

    -

    The documentation is written in Perl 6 Pod.

    -

    For a quick introduction to Perl 6 Pod, see Perl 6 Pod.

    -

    For full details about the Perl 6 Pod specification, see Synopsis 26, Documentation.

    +

    The documentation is written in Perl 6 Pod.

    +

    For a quick introduction to Perl 6 Pod, see Perl 6 Pod.

    +

    For full details about the Perl 6 Pod specification, see Synopsis 26, Documentation.

    Adding definitions

    Documentables can be defined using an =headN Pod directive, where N is greater than zero (e.g., =head1, =head2, …).

    All of the paragraphs and blocks following that directive, up until the next directive of the same level, will be considered part of the documentable. So, in:

    @@ -155,4 +148,7 @@

    Adding definitions

Notice that text after a pipe ('|') has no formatting. Also note that C<> preserves spaces and treats text as verbatim.

-
+
+ + + From f7a96cc5a07c97e93bcfe6cce2f8c8d46dc61c9f Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Mon, 10 Dec 2018 12:50:58 +1100 Subject: [PATCH 15/97] add testing Dockerfile --- .dockerignore | 1 + Dockerfile | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..94143827 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..aa0f09aa --- /dev/null +++ b/Dockerfile @@ -0,0 +1,39 @@ +FROM ubuntu:trusty + +RUN apt-get update -qq +RUN apt-get install -y apt-transport-https + +RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 379CE192D401AB61 +RUN echo "deb https://dl.bintray.com/nxadm/rakudo-pkg-debs `lsb_release -cs` main" | tee -a /etc/apt/sources.list.d/rakudo-pkg.list +RUN apt-get update -qq + +RUN apt-get install -y \ + perl rakudo-pkg curl git build-essential python python-pip \ + libssl-dev libreadline-dev zlib1g-dev \ + libicu-dev cmake pkg-config + +ENV PATH $PATH:/opt/rakudo-pkg/bin +RUN install-zef-as-user && zef install Pod::To::HTML + +RUN curl -L http://cpanmin.us | perl - App::cpanminus +RUN cpanm --installdeps --notest Pod::Simple + +RUN pip install docutils + +ENV PATH $PATH:/root/.rbenv/bin:/root/.rbenv/shims +RUN curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash +RUN rbenv install 2.4.1 +RUN rbenv global 2.4.1 +RUN rbenv rehash + +RUN gem install bundler + +WORKDIR /data/github-markup +COPY github-markup.gemspec . +COPY Gemfile . +COPY Gemfile.lock . +COPY lib/github-markup.rb lib/github-markup.rb +RUN bundle + +ENV LC_ALL en_US.UTF-8 +RUN locale-gen en_US.UTF-8 From 9c5ea1a94050789108afbebea8f18c2d64da20eb Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Mon, 10 Dec 2018 13:04:05 +1100 Subject: [PATCH 16/97] use linguist 7 --- github-markup.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github-markup.gemspec b/github-markup.gemspec index 7c663d09..acfacd2e 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -23,5 +23,5 @@ Gem::Specification.new do |s| s.add_development_dependency 'sanitize', '~> 2.1', '>= 2.1.0' s.add_development_dependency 'nokogiri', '~> 1.8.1' s.add_development_dependency 'nokogiri-diff', '~> 0.2.0' - s.add_development_dependency "github-linguist", "~> 6.0" + s.add_development_dependency "github-linguist", "~> 7" end From 83dfbbb31460f9ac7079f212c7bf02413ed81b05 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Mon, 10 Dec 2018 13:31:01 +1100 Subject: [PATCH 17/97] we're calling it Pod 6 --- lib/github/markups.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/github/markups.rb b/lib/github/markups.rb index 585d54b0..c900594d 100644 --- a/lib/github/markups.rb +++ b/lib/github/markups.rb @@ -51,5 +51,5 @@ "restructuredtext" ) -command(::GitHub::Markups::MARKUP_POD6, :pod62html, /pod6/, ["Perl 6"], "pod6") +command(::GitHub::Markups::MARKUP_POD6, :pod62html, /pod6/, ["Pod 6"], "pod6") command(::GitHub::Markups::MARKUP_POD, :pod2html, /pod/, ["Pod"], "pod") From e953f7083002053b72d461f1dc743ccb04f6cdef Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Tue, 11 Dec 2018 10:05:15 +1100 Subject: [PATCH 18/97] trim heading/leading text --- lib/github/commands/pod62html | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/github/commands/pod62html b/lib/github/commands/pod62html index 28937eca..0416c7bc 100755 --- a/lib/github/commands/pod62html +++ b/lib/github/commands/pod62html @@ -3,4 +3,8 @@ use v6; use Pod::To::HTML; -put Pod::To::HTML.render(slurp); + +$_ = Pod::To::HTML.render(slurp); +s:s{\<\!doctype html\>.*\
\<\/div\>\s*} = ""; +s:s{\s*\<\/div\>\s*\<\/body\>\s*\<\/html\>\s*} = ""; +.put; From 7d24dd18b7e187d1892e389410295be9f942b487 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Tue, 11 Dec 2018 10:24:51 +1100 Subject: [PATCH 19/97] raise when lang missing --- lib/github/markup/implementation.rb | 6 +++++- test/markups/README.pod6 | 0 2 files changed, 5 insertions(+), 1 deletion(-) mode change 100755 => 100644 test/markups/README.pod6 diff --git a/lib/github/markup/implementation.rb b/lib/github/markup/implementation.rb index f2854e22..458ab0d8 100644 --- a/lib/github/markup/implementation.rb +++ b/lib/github/markup/implementation.rb @@ -8,7 +8,11 @@ def initialize(regexp, languages) @regexp = regexp if defined?(::Linguist) - @languages = languages.map {|l| Linguist::Language[l]} + @languages = languages.map do |l| + lang = Linguist::Language[l] + raise "no match for language #{l.inspect}" if lang.nil? + lang + end end end diff --git a/test/markups/README.pod6 b/test/markups/README.pod6 old mode 100755 new mode 100644 From ed385c6a840cd685f9b9e580bdb935efe0f182e8 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Tue, 11 Dec 2018 10:32:06 +1100 Subject: [PATCH 20/97] update pod6 test --- test/markups/README.pod6 | 1 - test/markups/README.pod6.html | 30 ++---------------------------- 2 files changed, 2 insertions(+), 29 deletions(-) diff --git a/test/markups/README.pod6 b/test/markups/README.pod6 index a153b1bb..c780c5be 100644 --- a/test/markups/README.pod6 +++ b/test/markups/README.pod6 @@ -149,4 +149,3 @@ Notice that text after a pipe ('|') has no formatting. Also note that B > preserves spaces and treats text as verbatim. =end pod -# vim: expandtab softtabstop=4 shiftwidth=4 ft=perl6 diff --git a/test/markups/README.pod6.html b/test/markups/README.pod6.html index 5f56257f..3b55d843 100644 --- a/test/markups/README.pod6.html +++ b/test/markups/README.pod6.html @@ -1,26 +1,4 @@ - - - - About the Docs - - - kbd { font-family: "Droid Sans Mono", "Luxi Mono", "Inconsolata", monospace } - samp { font-family: "Terminus", "Courier", "Lucida Console", monospace } - u { text-decoration: none } - .nested { - margin-left: 3em; - } - aside, u { opacity: 0.7 } - a[id^="fn-"]:target { background: #ff0 } - - - - - - -
- -

About the Docs

+

About the Docs

Meta-documentation

@@ -147,8 +125,4 @@

Adding definitions

Notice that text after a pipe ('|') has no formatting. Also note that C<> preserves spaces and treats text as verbatim.

- - - - - + \ No newline at end of file From bf3ad46e3102571e471cb44a3f8bb951da1db26e Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Tue, 11 Dec 2018 11:03:08 +1100 Subject: [PATCH 21/97] vend Pod::To::HTML --- .gitignore | 3 +-- .gitmodules | 3 +++ lib/github/commands/pod62html | 2 +- vendor/Pod-To-HTML | 1 + 4 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 .gitmodules create mode 160000 vendor/Pod-To-HTML diff --git a/.gitignore b/.gitignore index c8263789..589d00dc 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ pkg/ .bundle Gemfile.lock -vendor/ .project .buildpath -*~ \ No newline at end of file +*~ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..1875291b --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "vendor/Pod-To-HTML"] + path = vendor/Pod-To-HTML + url = https://github.com/perl6/Pod-To-HTML diff --git a/lib/github/commands/pod62html b/lib/github/commands/pod62html index 0416c7bc..e9e5316a 100755 --- a/lib/github/commands/pod62html +++ b/lib/github/commands/pod62html @@ -1,7 +1,7 @@ #!/usr/bin/env perl6 use v6; - +use lib $*PROGRAM.IO.parent.add: '../../../vendor/Pod-To-HTML'; use Pod::To::HTML; $_ = Pod::To::HTML.render(slurp); diff --git a/vendor/Pod-To-HTML b/vendor/Pod-To-HTML new file mode 160000 index 00000000..f5ea68c2 --- /dev/null +++ b/vendor/Pod-To-HTML @@ -0,0 +1 @@ +Subproject commit f5ea68c2bb2145dc79f26bf1d9489acb36c0461c From 27e4eea56f198c7a708b310db0836eae047cda76 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Tue, 11 Dec 2018 11:13:33 +1100 Subject: [PATCH 22/97] add Pod-To-HTML to gem --- github-markup.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/github-markup.gemspec b/github-markup.gemspec index acfacd2e..b143e768 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -12,6 +12,7 @@ Gem::Specification.new do |s| s.license = "MIT" s.files = `git ls-files`.split($\) + s.files += Dir['vendor/Pod-To-HTML/**/*'] s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) } s.test_files = s.files.grep(%r{^(test|spec|features)/}) s.require_paths = %w[lib] From 455a75d86d4e159d904c5c9191927b39f1fc14b2 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Wed, 12 Dec 2018 10:15:22 +1100 Subject: [PATCH 23/97] minimum 7.1.3 --- github-markup.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github-markup.gemspec b/github-markup.gemspec index b143e768..2459b753 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -24,5 +24,5 @@ Gem::Specification.new do |s| s.add_development_dependency 'sanitize', '~> 2.1', '>= 2.1.0' s.add_development_dependency 'nokogiri', '~> 1.8.1' s.add_development_dependency 'nokogiri-diff', '~> 0.2.0' - s.add_development_dependency "github-linguist", "~> 7" + s.add_development_dependency "github-linguist", ">= 7.1.3" end From 050b57546db44eb6a1aa34219e21026128f08c0b Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Wed, 12 Dec 2018 14:49:09 +1100 Subject: [PATCH 24/97] :gem: bump to 3.0.2 --- HISTORY.md | 4 ++++ lib/github-markup.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index 6ead2e6d..520743ee 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,7 @@ +## 3.0.2 - 2018-12-12 + +* Add support for POD6 [#1173](https://github.com/github/markup/pull/1173) + ## 3.0.1 - 2018-10-19 * Remove linguist-detected RMarkdown files from the Markdown renderer [#1237](https://github.com/github/markup/pull/1237) diff --git a/lib/github-markup.rb b/lib/github-markup.rb index 259319e2..0979d20e 100644 --- a/lib/github-markup.rb +++ b/lib/github-markup.rb @@ -1,6 +1,6 @@ module GitHub module Markup - VERSION = '3.0.1' + VERSION = '3.0.2' Version = VERSION end end From 51cb693229925f3ed275a02d066c442bf1a51661 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Fri, 14 Dec 2018 15:06:43 +1100 Subject: [PATCH 25/97] clean up regexes, remove another weird tag --- lib/github/commands/pod62html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/github/commands/pod62html b/lib/github/commands/pod62html index e9e5316a..f034a556 100755 --- a/lib/github/commands/pod62html +++ b/lib/github/commands/pod62html @@ -5,6 +5,7 @@ use lib $*PROGRAM.IO.parent.add: '../../../vendor/Pod-To-HTML'; use Pod::To::HTML; $_ = Pod::To::HTML.render(slurp); -s:s{\<\!doctype html\>.*\
\<\/div\>\s*} = ""; -s:s{\s*\<\/div\>\s*\<\/body\>\s*\<\/html\>\s*} = ""; +s:s{'' .* '
' \s*} = ""; +s:s{\s* '
' \s* '' \s* '' \s*} = ""; +s:s{'
Date: Mon, 17 Dec 2018 13:36:19 +1100 Subject: [PATCH 26/97] use latest Pod::To::HTML, no more eval --- .gitmodules | 3 +++ lib/github/commands/pod62html | 8 ++++++-- vendor/Pod-To-HTML | 2 +- vendor/p6-pod-load | 1 + 4 files changed, 11 insertions(+), 3 deletions(-) create mode 160000 vendor/p6-pod-load diff --git a/.gitmodules b/.gitmodules index 1875291b..bbb6b614 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "vendor/Pod-To-HTML"] path = vendor/Pod-To-HTML url = https://github.com/perl6/Pod-To-HTML +[submodule "vendor/p6-pod-load"] + path = vendor/p6-pod-load + url = https://github.com/JJ/p6-pod-load diff --git a/lib/github/commands/pod62html b/lib/github/commands/pod62html index f034a556..b8c13b41 100755 --- a/lib/github/commands/pod62html +++ b/lib/github/commands/pod62html @@ -1,11 +1,15 @@ #!/usr/bin/env perl6 use v6; + +use lib $*PROGRAM.IO.parent.add: '../../../vendor/p6-pod-load'; +use Pod::Load; + use lib $*PROGRAM.IO.parent.add: '../../../vendor/Pod-To-HTML'; use Pod::To::HTML; -$_ = Pod::To::HTML.render(slurp); +$_ = Pod::To::HTML.render(load(slurp)); s:s{'' .* '
' \s*} = ""; s:s{\s* '
' \s* '' \s* '' \s*} = ""; -s:s{'
Date: Mon, 17 Dec 2018 13:40:07 +1100 Subject: [PATCH 27/97] tweak expected output --- test/markups/README.pod6.html | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/markups/README.pod6.html b/test/markups/README.pod6.html index 3b55d843..16951ee0 100644 --- a/test/markups/README.pod6.html +++ b/test/markups/README.pod6.html @@ -23,7 +23,6 @@

Table of Contents

-

This document collection represents the on-going effort to document the Perl 6 programming language with the goals of being: comprehensive; easy to use; easy to navigate; and useful to both newcomers and experienced Perl 6 programmers.

An HTML version of the documentation is located online at https://docs.perl6.org.

The official source for this documentation is located at perl6/doc on GitHub.

@@ -125,4 +124,3 @@

Adding definitions

Notice that text after a pipe ('|') has no formatting. Also note that C<> preserves spaces and treats text as verbatim.

-
\ No newline at end of file From c0452d671ae0eddb97c1614c854cf7e86224e859 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Mon, 17 Dec 2018 13:54:45 +1100 Subject: [PATCH 28/97] don't install from zef --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e409f596..b6d066c5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,7 @@ before_install: - echo "deb https://dl.bintray.com/nxadm/rakudo-pkg-debs `lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list.d/rakudo-pkg.list - sudo apt-get update -qq - sudo apt-get install perl rakudo-pkg - - export PATH=$PATH:/.perl6/bin:/opt/rakudo-pkg/bin && install-zef-as-user && zef install Pod::To::HTML + - export PATH=$PATH:/.perl6/bin:/opt/rakudo-pkg/bin - curl -L http://cpanmin.us | perl - --sudo App::cpanminus - sudo cpanm --installdeps --notest Pod::Simple - sudo pip install docutils From d1461feeb2305909dcd7e8325e5b2e1dcadac226 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Mon, 17 Dec 2018 14:03:54 +1100 Subject: [PATCH 29/97] remove jvm from travis build matrix --- .travis.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index b6d066c5..15942b74 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,9 +6,6 @@ rvm: - 2.2.7 - 2.3.4 - 2.4.1 - - jruby-9.1.9.0 -jdk: - - oraclejdk8 notifications: email: false git: @@ -28,6 +25,3 @@ cache: env: global: - "JRUBY_OPTS=-Xcext.enabled=true" -matrix: - allow_failures: - - rvm: jruby-9.1.9.0 From a34a7235cbd575c025f82e9713388a3b119805b8 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Mon, 17 Dec 2018 14:10:19 +1100 Subject: [PATCH 30/97] add p6 uri --- .gitmodules | 3 +++ lib/github/commands/pod62html | 5 +++-- vendor/uri | 1 + 3 files changed, 7 insertions(+), 2 deletions(-) create mode 160000 vendor/uri diff --git a/.gitmodules b/.gitmodules index bbb6b614..793e296f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "vendor/p6-pod-load"] path = vendor/p6-pod-load url = https://github.com/JJ/p6-pod-load +[submodule "vendor/uri"] + path = vendor/uri + url = https://github.com/perl6-community-modules/uri diff --git a/lib/github/commands/pod62html b/lib/github/commands/pod62html index b8c13b41..1c0ab8a2 100755 --- a/lib/github/commands/pod62html +++ b/lib/github/commands/pod62html @@ -3,9 +3,10 @@ use v6; use lib $*PROGRAM.IO.parent.add: '../../../vendor/p6-pod-load'; -use Pod::Load; - use lib $*PROGRAM.IO.parent.add: '../../../vendor/Pod-To-HTML'; +use lib $*PROGRAM.IO.parent.add: '../../../vendor/uri'; + +use Pod::Load; use Pod::To::HTML; $_ = Pod::To::HTML.render(load(slurp)); diff --git a/vendor/uri b/vendor/uri new file mode 160000 index 00000000..e5c85512 --- /dev/null +++ b/vendor/uri @@ -0,0 +1 @@ +Subproject commit e5c85512db5446fa4f7a38e421170cd602a53dce From 647fac6c17747e9194fcdee1ec547241c8d5ba39 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Mon, 17 Dec 2018 14:15:55 +1100 Subject: [PATCH 31/97] add Template-Mustache submodule --- .gitmodules | 3 +++ lib/github/commands/pod62html | 1 + vendor/p6-Template-Mustache | 1 + 3 files changed, 5 insertions(+) create mode 160000 vendor/p6-Template-Mustache diff --git a/.gitmodules b/.gitmodules index 793e296f..e770ee37 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "vendor/uri"] path = vendor/uri url = https://github.com/perl6-community-modules/uri +[submodule "vendor/p6-Template-Mustache"] + path = vendor/p6-Template-Mustache + url = https://github.com/softmoth/p6-Template-Mustache diff --git a/lib/github/commands/pod62html b/lib/github/commands/pod62html index 1c0ab8a2..ba50226c 100755 --- a/lib/github/commands/pod62html +++ b/lib/github/commands/pod62html @@ -5,6 +5,7 @@ use v6; use lib $*PROGRAM.IO.parent.add: '../../../vendor/p6-pod-load'; use lib $*PROGRAM.IO.parent.add: '../../../vendor/Pod-To-HTML'; use lib $*PROGRAM.IO.parent.add: '../../../vendor/uri'; +use lib $*PROGRAM.IO.parent.add: '../../../vendor/p6-Template-Mustache'; use Pod::Load; use Pod::To::HTML; diff --git a/vendor/p6-Template-Mustache b/vendor/p6-Template-Mustache new file mode 160000 index 00000000..d84fdf30 --- /dev/null +++ b/vendor/p6-Template-Mustache @@ -0,0 +1 @@ +Subproject commit d84fdf303480622805de119024e930c05c9fd6d2 From f7fc90c212f34e5ce6d52e4bbed99d43500457c3 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Mon, 17 Dec 2018 14:54:41 +1100 Subject: [PATCH 32/97] include all of vendor/ in gem --- github-markup.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github-markup.gemspec b/github-markup.gemspec index 2459b753..88212c66 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -12,7 +12,7 @@ Gem::Specification.new do |s| s.license = "MIT" s.files = `git ls-files`.split($\) - s.files += Dir['vendor/Pod-To-HTML/**/*'] + s.files += Dir['vendor/**/*'] s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) } s.test_files = s.files.grep(%r{^(test|spec|features)/}) s.require_paths = %w[lib] From b8843a4b81d31495b90a0c63a3daafef45a4a2f0 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Mon, 17 Dec 2018 16:45:38 +1100 Subject: [PATCH 33/97] replace with passthrough --- .gitmodules | 12 --- lib/github/commands/pod62html | 14 +--- test/markups/README.pod6 | 151 ---------------------------------- test/markups/README.pod6.html | 126 ---------------------------- vendor/Pod-To-HTML | 1 - vendor/p6-Template-Mustache | 1 - vendor/p6-pod-load | 1 - vendor/uri | 1 - 8 files changed, 1 insertion(+), 306 deletions(-) delete mode 100644 .gitmodules delete mode 100644 test/markups/README.pod6 delete mode 100644 test/markups/README.pod6.html delete mode 160000 vendor/Pod-To-HTML delete mode 160000 vendor/p6-Template-Mustache delete mode 160000 vendor/p6-pod-load delete mode 160000 vendor/uri diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index e770ee37..00000000 --- a/.gitmodules +++ /dev/null @@ -1,12 +0,0 @@ -[submodule "vendor/Pod-To-HTML"] - path = vendor/Pod-To-HTML - url = https://github.com/perl6/Pod-To-HTML -[submodule "vendor/p6-pod-load"] - path = vendor/p6-pod-load - url = https://github.com/JJ/p6-pod-load -[submodule "vendor/uri"] - path = vendor/uri - url = https://github.com/perl6-community-modules/uri -[submodule "vendor/p6-Template-Mustache"] - path = vendor/p6-Template-Mustache - url = https://github.com/softmoth/p6-Template-Mustache diff --git a/lib/github/commands/pod62html b/lib/github/commands/pod62html index ba50226c..b2d27764 100755 --- a/lib/github/commands/pod62html +++ b/lib/github/commands/pod62html @@ -2,16 +2,4 @@ use v6; -use lib $*PROGRAM.IO.parent.add: '../../../vendor/p6-pod-load'; -use lib $*PROGRAM.IO.parent.add: '../../../vendor/Pod-To-HTML'; -use lib $*PROGRAM.IO.parent.add: '../../../vendor/uri'; -use lib $*PROGRAM.IO.parent.add: '../../../vendor/p6-Template-Mustache'; - -use Pod::Load; -use Pod::To::HTML; - -$_ = Pod::To::HTML.render(load(slurp)); -s:s{'' .* '
' \s*} = ""; -s:s{\s* '
' \s* '' \s* '' \s*} = ""; -s:s{'
. - -The official source for this documentation is located at L. - -This particular document is a quick overview of the process -described in more detail in L. -This document also provides a short introduction to writing Perl 6 -Pod files, which can be rendered into HTML and other formats. - -=head1 Structure - -All of the documentation is written in Perl 6 Pod and kept in the C -directory, and the C and C sub-directories. -These files are processed as collections of definitions or -"documentables", which are then post-processed and linked together. - -=head1 Generating HTML from Pod - -To generate HTML from the Pod files, you'll need: - -=item A recent version of the Rakudo Perl 6 compiler - -=item The Perl 6 modules Pod::To::HTML, Pod::To::BigPage, and URI::Escape -(can be installed via L). - -=item B: L, for creating graphs -of the relationships between Perl 6 types - -=item B: L and L, for syntax -highlighting - -To generate the documentation into the C folder, run: - -=begin code :lang -perl6 htmlify.p6 -=end code - -To host the documentation from a web server, have Perl 5 -and Mojolicious::Lite installed, then run: - -=begin code :lang -perl app.pl daemon -=end code - -=head1 Contributing - -The documentation is written in Perl 6 Pod. - -For a quick introduction to Perl 6 Pod, see L. - -For full details about the Perl 6 Pod specification, see L. - -=head2 Adding definitions - -Documentables can be defined using an C<=headN> Pod directive, where -C is greater than zero (e.g., C<=head1>, C<=head2>, …). - -All of the paragraphs and blocks following that directive, up until the -next directive of the same level, will be considered part of the -documentable. So, in: - -=begin code :allow :skip-test -=head2 R - -Some paragraphs, followed by some code: - - my Code $examples = "amazing"; - -Mind === blown. - -=head3 Minor details about R - -It's fantastic. - -=head2 And now, for something completely different - -… - -=end code - -The documentable R extends down to the C<=head2 And now…>. - -Documentables may contain other documentables. Class documentables, for -example, often contain the methods the class implements. - -Definitions must be in one of the following forms to be recognized as -the start of a documentable named, say, þ. First the code in the document source: - -=begin code :skip-test - -=item X | infix,þ> (This a special case, which -is always considered a definition) - -=item C - -=item B Infix> - -=item C - -=item B> - -=item C (A special case for the L documentables) - -=end code - -Then the results on the rendered page: - -=item X | infix,þ> (This is a special case, which -is always considered a definition) - -=item C - -=item B Infix> - -=item C - -=item B> - -=item C (A special case for the L documentables) - -These items should now be searchable by using the search field in the HTML docs. - -You can add emphasis with bold (B >>) or italicized (B >>), -with or without code formatting (B >>). Due to current parser limitations, -special steps have to be taken to use B >> with other formatting codes; for example: - -=begin code :skip-test -=item X|foo> a fancy subroutine -=end code - -renders like this - -=item X|foo> a fancy subroutine - -Notice that text after a pipe ('|') has no formatting. Also note that B >> -preserves spaces and treats text as verbatim. -=end pod - diff --git a/test/markups/README.pod6.html b/test/markups/README.pod6.html deleted file mode 100644 index 16951ee0..00000000 --- a/test/markups/README.pod6.html +++ /dev/null @@ -1,126 +0,0 @@ -

About the Docs

-

Meta-documentation

- - -

Table of Contents

- - - - - - - - - - - - - - - - - -
1Structure
2Generating HTML from Pod
3Contributing
3.1Adding definitions
- - -

This document collection represents the on-going effort to document the Perl 6 programming language with the goals of being: comprehensive; easy to use; easy to navigate; and useful to both newcomers and experienced Perl 6 programmers.

-

An HTML version of the documentation is located online at https://docs.perl6.org.

-

The official source for this documentation is located at perl6/doc on GitHub.

-

This particular document is a quick overview of the process described in more detail in CONTRIBUTING on GitHub. This document also provides a short introduction to writing Perl 6 Pod files, which can be rendered into HTML and other formats.

-

Structure

-

All of the documentation is written in Perl 6 Pod and kept in the doc/ directory, and the doc/Language/ and doc/Type/ sub-directories. These files are processed as collections of definitions or "documentables", which are then post-processed and linked together.

-

Generating HTML from Pod

-

To generate HTML from the Pod files, you'll need:

-
    -
  • -

    A recent version of the Rakudo Perl 6 compiler

    -
  • -
  • -

    The Perl 6 modules Pod::To::HTML, Pod::To::BigPage, and URI::Escape (can be installed via zef).

    -
  • -
  • -

    Optional: GraphViz, for creating graphs of the relationships between Perl 6 types

    -
  • -
  • -

    Optional: Atom Highlights and language-perl6, for syntax highlighting

    -
  • -
-

To generate the documentation into the html/ folder, run:

-
perl6 htmlify.p6
-
-

To host the documentation from a web server, have Perl 5 and Mojolicious::Lite installed, then run:

-
perl app.pl daemon
-
-

Contributing

-

The documentation is written in Perl 6 Pod.

-

For a quick introduction to Perl 6 Pod, see Perl 6 Pod.

-

For full details about the Perl 6 Pod specification, see Synopsis 26, Documentation.

-

Adding definitions

-

Documentables can be defined using an =headN Pod directive, where N is greater than zero (e.g., =head1, =head2, …).

-

All of the paragraphs and blocks following that directive, up until the next directive of the same level, will be considered part of the documentable. So, in:

-
=head2 My Definition
-
-Some paragraphs, followed by some code:
-
-    my Code $examples = "amazing";
-
-Mind === blown.
-
-=head3 Minor details about My Definition
-
-It's fantastic.
-
-=head2 And now, for something completely different
-
-…
-
-
-

The documentable My Definition extends down to the =head2 And now….

-

Documentables may contain other documentables. Class documentables, for example, often contain the methods the class implements.

-

Definitions must be in one of the following forms to be recognized as the start of a documentable named, say, þ. First the code in the document source:

-
=item X<C<How to use the þ infix> | infix,þ> (This a special case, which
-is always considered a definition)
-
-=item C<The þ Infix>
-
-=item B<The C<þ> Infix>
-
-=item C<Infix þ>
-
-=item B<Infix C<þ>>
-
-=item C<trait is cached> (A special case for the L<trait|/language/functions#Traits> documentables)
-
-
-

Then the results on the rendered page:

-
    -
  • -

    How to use the þ infix (This is a special case, which is always considered a definition)

    -
  • -
  • -

    The þ Infix

    -
  • -
  • -

    The þ Infix

    -
  • -
  • -

    Infix þ

    -
  • -
  • -

    Infix þ

    -
  • -
  • -

    trait is cached (A special case for the trait documentables)

    -
  • -
-

These items should now be searchable by using the search field in the HTML docs.

-

You can add emphasis with bold ( B<> ) or italicized ( I<> ), with or without code formatting ( C<> ). Due to current parser limitations, special steps have to be taken to use X<> with other formatting codes; for example:

-
=item X<B<foo>|foo> a fancy subroutine
-
-

renders like this

-
    -
  • -

    foo a fancy subroutine

    -
  • -
-

Notice that text after a pipe ('|') has no formatting. Also note that C<> preserves spaces and treats text as verbatim.

diff --git a/vendor/Pod-To-HTML b/vendor/Pod-To-HTML deleted file mode 160000 index a8d07053..00000000 --- a/vendor/Pod-To-HTML +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a8d07053ce61f4bb90725d31073cf38380a171b4 diff --git a/vendor/p6-Template-Mustache b/vendor/p6-Template-Mustache deleted file mode 160000 index d84fdf30..00000000 --- a/vendor/p6-Template-Mustache +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d84fdf303480622805de119024e930c05c9fd6d2 diff --git a/vendor/p6-pod-load b/vendor/p6-pod-load deleted file mode 160000 index 66fc6158..00000000 --- a/vendor/p6-pod-load +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 66fc6158e7c22e8a7a5f90de342e799c7fb2315e diff --git a/vendor/uri b/vendor/uri deleted file mode 160000 index e5c85512..00000000 --- a/vendor/uri +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e5c85512db5446fa4f7a38e421170cd602a53dce From ea511824a331a933e8f3f2769f2ab7039d700e3c Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Mon, 17 Dec 2018 16:48:48 +1100 Subject: [PATCH 34/97] :gem: bump to 3.0.3 --- HISTORY.md | 4 ++++ lib/github-markup.rb | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index 520743ee..27a471f9 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,7 @@ +## 3.0.3 - 2018-12-17 + +* Temporarily remove support for POD6 [#1248](https://github.com/github/markup/pull/1248) + ## 3.0.2 - 2018-12-12 * Add support for POD6 [#1173](https://github.com/github/markup/pull/1173) diff --git a/lib/github-markup.rb b/lib/github-markup.rb index 0979d20e..be7ad756 100644 --- a/lib/github-markup.rb +++ b/lib/github-markup.rb @@ -1,6 +1,6 @@ module GitHub module Markup - VERSION = '3.0.2' + VERSION = '3.0.3' Version = VERSION end end From 3e08f13ac9ba51687c3139a4c5f4ed2521ef065d Mon Sep 17 00:00:00 2001 From: jimcheung Date: Fri, 21 Dec 2018 14:39:12 +0800 Subject: [PATCH 35/97] perf(markup): add options to render_s --- lib/github/markup.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/github/markup.rb b/lib/github/markup.rb index 444907a3..1c63c8bd 100644 --- a/lib/github/markup.rb +++ b/lib/github/markup.rb @@ -47,11 +47,11 @@ def render(filename, content, symlink: false, options: {}) end end - def render_s(symbol, content) + def render_s(symbol, content, options: {}) raise ArgumentError, 'Can not render a nil.' if content.nil? if markups.key?(symbol) - markups[symbol].render(nil, content) + markups[symbol].render(nil, content, options: options) else content end From 32909da48054fdc36e8e83bf7c47ef27b1ad6a3f Mon Sep 17 00:00:00 2001 From: jimcheung Date: Fri, 21 Dec 2018 16:12:05 +0800 Subject: [PATCH 36/97] perf(markup): add test --- test/markup_test.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/test/markup_test.rb b/test/markup_test.rb index 86c83ee7..1ff2272a 100644 --- a/test/markup_test.rb +++ b/test/markup_test.rb @@ -72,7 +72,7 @@ def call message end end - + def test_knows_what_it_can_and_cannot_render assert_equal false, GitHub::Markup.can_render?('README.html', '

Title

') assert_equal true, GitHub::Markup.can_render?('README.markdown', '=== Title') @@ -92,7 +92,7 @@ def test_each_render_has_a_name assert_equal "pod", GitHub::Markup.renderer('README.pod', '=head1').name assert_equal "pod6", GitHub::Markup.renderer('README.pod6', '=begin pod').name end - + def test_rendering_by_symbol assert_equal '

test

', GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, '`test`').strip end @@ -117,5 +117,8 @@ def test_preserve_markup def test_commonmarker_options assert_equal "

hello world

\n", GitHub::Markup.render("test.md", "hello world") assert_equal "

hello world

\n", GitHub::Markup.render("test.md", "hello world", options: {commonmarker_opts: [:UNSAFE]}) + + assert_equal "

hello world

\n", GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, "hello world") + assert_equal "

hello world

\n", GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, "hello world", options: {commonmarker_opts: [:UNSAFE]}) end end From 24d25cbf924b59884caee0b3a1539202867d8cb4 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Mon, 25 Feb 2019 09:37:42 +1100 Subject: [PATCH 37/97] remove pod6 from supported list --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 0651c33c..b2bcc809 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,6 @@ you wish to run the library. You can also run `script/bootstrap` to fetch them a * [.asciidoc, .adoc, .asc](http://asciidoc.org/) -- `gem install asciidoctor` (http://asciidoctor.org) * [.pod](http://search.cpan.org/dist/perl/pod/perlpod.pod) -- `Pod::Simple::XHTML` comes with Perl >= 5.10. Lower versions should install Pod::Simple from CPAN. -* [.pod6](https://docs.perl6.org/language/pod) -- No additional - dependency beyond perl6 `Pod::To::HTML` (in stdlib) Installation ----------- From 34a79756a9d3177d4f9fa7a323570f75d8db16a6 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Mon, 1 Apr 2019 23:55:47 -0600 Subject: [PATCH 38/97] upgrade to Asciidoctor 2.0.x - upgrade to Asciidoctor 2.0.x (starting with 2.0.5) - switch to fuzzy version match for asciidoctor gem - disable sectanchors (since they get removed by the sanitizer anyway) - use formal xref macro for interdocument xref in test - add test for toggling the document title using showtitle/!showtitle - add test to verify toc is generated at top of document when toc attribute is set --- Gemfile | 2 +- lib/github/markups.rb | 1 + test/markups/README.asciidoc | 4 +- test/markups/README.hidetitle.asciidoc | 4 ++ test/markups/README.hidetitle.asciidoc.html | 3 ++ test/markups/README.toc.asciidoc | 15 +++++++ test/markups/README.toc.asciidoc.html | 46 +++++++++++++++++++++ 7 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 test/markups/README.hidetitle.asciidoc create mode 100644 test/markups/README.hidetitle.asciidoc.html create mode 100644 test/markups/README.toc.asciidoc create mode 100644 test/markups/README.toc.asciidoc.html diff --git a/Gemfile b/Gemfile index cbd97b7b..61920ab8 100644 --- a/Gemfile +++ b/Gemfile @@ -11,5 +11,5 @@ gem "org-ruby", "= 0.9.9" gem "creole", "~>0.3.6" gem "wikicloth", "=0.8.3" gem "twitter-text", "~> 1.14" -gem "asciidoctor", "= 1.5.6.1" +gem "asciidoctor", "~> 2.0.5" gem "rake" diff --git a/lib/github/markups.rb b/lib/github/markups.rb index c900594d..ea816c75 100644 --- a/lib/github/markups.rb +++ b/lib/github/markups.rb @@ -32,6 +32,7 @@ 'showtitle' => '@', 'idprefix' => '', 'idseparator' => '-', + 'sectanchors' => nil, 'docname' => File.basename(filename, (extname = File.extname(filename))), 'docfilesuffix' => extname, 'outfilesuffix' => extname, diff --git a/test/markups/README.asciidoc b/test/markups/README.asciidoc index d3c872f7..5f65dd2b 100644 --- a/test/markups/README.asciidoc +++ b/test/markups/README.asciidoc @@ -1,4 +1,6 @@ = Document Title +// sectanchors will be ignored +:sectanchors: == First Section @@ -7,7 +9,7 @@ Refer to <> or <>. -Navigate from {docname}{outfilesuffix} to <>. +Navigate from {docname}{outfilesuffix} to xref:another-document.asciidoc[another document]. == Another Section diff --git a/test/markups/README.hidetitle.asciidoc b/test/markups/README.hidetitle.asciidoc new file mode 100644 index 00000000..38cf76b0 --- /dev/null +++ b/test/markups/README.hidetitle.asciidoc @@ -0,0 +1,4 @@ += Not Shown +:!showtitle: + +This test verifies the author can disable the document title by adding `:!showtitle:` to the document header. diff --git a/test/markups/README.hidetitle.asciidoc.html b/test/markups/README.hidetitle.asciidoc.html new file mode 100644 index 00000000..ae6b258f --- /dev/null +++ b/test/markups/README.hidetitle.asciidoc.html @@ -0,0 +1,3 @@ +
+

This test verifies the author can disable the document title by adding :!showtitle: to the document header.

+
diff --git a/test/markups/README.toc.asciidoc b/test/markups/README.toc.asciidoc new file mode 100644 index 00000000..a8e42bdd --- /dev/null +++ b/test/markups/README.toc.asciidoc @@ -0,0 +1,15 @@ += Document Title +:toc: +:toc-title: Contents + +== Section A + +=== Subsection A-1 + +=== Subsection A-2 + +== Section B + +=== Subsection B-1 + +=== Subsection B-2 diff --git a/test/markups/README.toc.asciidoc.html b/test/markups/README.toc.asciidoc.html new file mode 100644 index 00000000..e6f598cf --- /dev/null +++ b/test/markups/README.toc.asciidoc.html @@ -0,0 +1,46 @@ +

Document Title

+ +
+

Section A

+
+
+

Subsection A-1

+ +
+
+

Subsection A-2

+ +
+
+
+
+

Section B

+
+
+

Subsection B-1

+ +
+
+

Subsection B-2

+ +
+
+
From 067c18dc0a96d837e8ccce0ed8b13f2c7ce24e9e Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Wed, 3 Apr 2019 10:33:55 +1100 Subject: [PATCH 39/97] :gem: bump to 3.0.4 --- HISTORY.md | 5 +++++ lib/github-markup.rb | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index 27a471f9..981cb46c 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,8 @@ +## 3.0.4 - 2019-04-03 + +* Expose options in #render_s [#1249](https://github.com/github/markup/pull/1249) +* Upgrade to Asciidoctor 2.0.x [#1264](https://github.com/github/markup/pull/1264) + ## 3.0.3 - 2018-12-17 * Temporarily remove support for POD6 [#1248](https://github.com/github/markup/pull/1248) diff --git a/lib/github-markup.rb b/lib/github-markup.rb index be7ad756..1bebb3ab 100644 --- a/lib/github-markup.rb +++ b/lib/github-markup.rb @@ -1,6 +1,6 @@ module GitHub module Markup - VERSION = '3.0.3' + VERSION = '3.0.4' Version = VERSION end end From 3e973e535221539b160b1d0f1fcf08d3038cbdd8 Mon Sep 17 00:00:00 2001 From: Ashe Connor Date: Wed, 3 Apr 2019 10:38:15 +1100 Subject: [PATCH 40/97] use modern sanitize in tests (Vulnerability alert doesn't exactly apply as it's never used in actual execution, but that's okay.) --- github-markup.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github-markup.gemspec b/github-markup.gemspec index 88212c66..f988c443 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -21,7 +21,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'activesupport', '~> 4.0' s.add_development_dependency 'minitest', '~> 5.4', '>= 5.4.3' s.add_development_dependency 'html-pipeline', '~> 1.0' - s.add_development_dependency 'sanitize', '~> 2.1', '>= 2.1.0' + s.add_development_dependency 'sanitize', '>= 4.6.3' s.add_development_dependency 'nokogiri', '~> 1.8.1' s.add_development_dependency 'nokogiri-diff', '~> 0.2.0' s.add_development_dependency "github-linguist", ">= 7.1.3" From d3430c3f453546d9291a59c31539aa6233ebae2f Mon Sep 17 00:00:00 2001 From: jimcheung Date: Mon, 6 May 2019 18:08:59 +0800 Subject: [PATCH 41/97] feat(commonmarker): add commonmarker_exts to options --- lib/github/markup/markdown.rb | 3 ++- test/markup_test.rb | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/github/markup/markdown.rb b/lib/github/markup/markdown.rb index 11cf662d..7952bd3b 100644 --- a/lib/github/markup/markdown.rb +++ b/lib/github/markup/markdown.rb @@ -6,7 +6,8 @@ class Markdown < Implementation MARKDOWN_GEMS = { "commonmarker" => proc { |content, options: {}| commonmarker_opts = [:GITHUB_PRE_LANG].concat(options.fetch(:commonmarker_opts, [])) - CommonMarker.render_html(content, commonmarker_opts, [:tagfilter, :autolink, :table, :strikethrough]) + commonmarker_exts = options.fetch(:commonmarker_exts, [:tagfilter, :autolink, :table, :strikethrough]) + CommonMarker.render_html(content, commonmarker_opts, commonmarker_exts) }, "github/markdown" => proc { |content, options: {}| GitHub::Markdown.render(content) diff --git a/test/markup_test.rb b/test/markup_test.rb index 1ff2272a..da859944 100644 --- a/test/markup_test.rb +++ b/test/markup_test.rb @@ -120,5 +120,8 @@ def test_commonmarker_options assert_equal "

hello world

\n", GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, "hello world") assert_equal "

hello world

\n", GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, "hello world", options: {commonmarker_opts: [:UNSAFE]}) + + assert_equal "<style>.red{color: #ff2727;}</style>\n", GitHub::Markup.render("test.md", "", options: {commonmarker_opts: [:UNSAFE]}) + assert_equal "\n", GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, "", options: {commonmarker_opts: [:UNSAFE], commonmarker_exts: [:autolink, :table, :strikethrough]}) end end From 7b17174957c73e399ea8b05914fd6f0df8b7e3c2 Mon Sep 17 00:00:00 2001 From: jimcheung Date: Tue, 7 May 2019 11:56:27 +0800 Subject: [PATCH 42/97] perf(commonmarker test): improve test case --- test/markup_test.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/test/markup_test.rb b/test/markup_test.rb index da859944..4c3cc7af 100644 --- a/test/markup_test.rb +++ b/test/markup_test.rb @@ -121,7 +121,10 @@ def test_commonmarker_options assert_equal "

hello world

\n", GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, "hello world") assert_equal "

hello world

\n", GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, "hello world", options: {commonmarker_opts: [:UNSAFE]}) - assert_equal "<style>.red{color: #ff2727;}</style>\n", GitHub::Markup.render("test.md", "", options: {commonmarker_opts: [:UNSAFE]}) - assert_equal "\n", GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, "", options: {commonmarker_opts: [:UNSAFE], commonmarker_exts: [:autolink, :table, :strikethrough]}) + assert_equal "<style>.red{color: red;}</style>\n", GitHub::Markup.render("test.md", "", options: {commonmarker_opts: [:UNSAFE]}) + assert_equal "\n", GitHub::Markup.render("test.md", "", options: {commonmarker_opts: [:UNSAFE], commonmarker_exts: [:autolink, :table, :strikethrough]}) + + assert_equal "<style>.red{color: red;}</style>\n", GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, "", options: {commonmarker_opts: [:UNSAFE]}) + assert_equal "\n", GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, "", options: {commonmarker_opts: [:UNSAFE], commonmarker_exts: [:autolink, :table, :strikethrough]}) end end From cd4e3e0c6705115f97d11704cabbf790259d40a6 Mon Sep 17 00:00:00 2001 From: Nick Maloucaze Date: Wed, 22 May 2019 20:02:14 -0300 Subject: [PATCH 43/97] Use squiggly HEREDOC syntax It is recommended to use the squiggly HEREDOC syntax (https://infinum.co/the-capsized-eight/multiline-strings-ruby-2-3-0-the-squiggly-heredoc) for multiline strings. --- github-markup.gemspec | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/github-markup.gemspec b/github-markup.gemspec index f988c443..3cdeaef8 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -4,8 +4,10 @@ Gem::Specification.new do |s| s.name = "github-markup" s.version = GitHub::Markup::VERSION s.summary = "The code GitHub uses to render README.markup" - s.description = "This gem is used by GitHub to render any fancy markup such " + - "as Markdown, Textile, Org-Mode, etc. Fork it and add your own!" + s.description = <<~DESC + This gem is used by GitHub to render any fancy markup such as Markdown, + Textile,Org-Mode, etc. Fork it and add your own! + DESC s.authors = ["Chris Wanstrath"] s.email = "chris@ozmm.org" s.homepage = "https://github.com/github/markup" From f82c99532b199558ec861488b26f35e692d973fb Mon Sep 17 00:00:00 2001 From: Nick Maloucaze <39865913+maloucaze@users.noreply.github.com> Date: Wed, 22 May 2019 21:27:22 -0300 Subject: [PATCH 44/97] Update github-markup.gemspec Co-Authored-By: Ashe Connor --- github-markup.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github-markup.gemspec b/github-markup.gemspec index 3cdeaef8..594d3507 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -6,7 +6,7 @@ Gem::Specification.new do |s| s.summary = "The code GitHub uses to render README.markup" s.description = <<~DESC This gem is used by GitHub to render any fancy markup such as Markdown, - Textile,Org-Mode, etc. Fork it and add your own! + Textile, Org-Mode, etc. Fork it and add your own! DESC s.authors = ["Chris Wanstrath"] s.email = "chris@ozmm.org" From 2710ab922c6d976137f8c1e8585ba5f41dbce90e Mon Sep 17 00:00:00 2001 From: Dawa Ometto Date: Wed, 4 Sep 2019 13:43:49 +0200 Subject: [PATCH 45/97] Check whether filename is set when rendering asciidoc --- lib/github/markups.rb | 9 ++++++--- test/markup_test.rb | 5 ++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/github/markups.rb b/lib/github/markups.rb index ea816c75..0ed55df0 100644 --- a/lib/github/markups.rb +++ b/lib/github/markups.rb @@ -33,13 +33,16 @@ 'idprefix' => '', 'idseparator' => '-', 'sectanchors' => nil, - 'docname' => File.basename(filename, (extname = File.extname(filename))), - 'docfilesuffix' => extname, - 'outfilesuffix' => extname, 'env' => 'github', 'env-github' => '', 'source-highlighter' => 'html-pipeline' } + if filename + attributes['docname'] = File.basename(filename, (extname = File.extname(filename))) + attributes['docfilesuffix'] = attributes['outfilesuffix'] = extname + else + attributes['outfilesuffix'] = '.adoc' + end Asciidoctor::Compliance.unique_id_start_index = 1 Asciidoctor.convert(content, :safe => :secure, :attributes => attributes) end diff --git a/test/markup_test.rb b/test/markup_test.rb index 4c3cc7af..24e78000 100644 --- a/test/markup_test.rb +++ b/test/markup_test.rb @@ -94,7 +94,10 @@ def test_each_render_has_a_name end def test_rendering_by_symbol - assert_equal '

test

', GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, '`test`').strip + markup = '`test`' + result = /

test<\/code><\/p>/ + assert_match result, GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, markup).strip + assert_match result, GitHub::Markup.render_s(GitHub::Markups::MARKUP_ASCIIDOC, markup).split.join end def test_raises_error_if_command_exits_non_zero From 194e363c2a2cd44caa8e799a5ef4e64fb2824f0c Mon Sep 17 00:00:00 2001 From: Aaron Harpole Date: Thu, 12 Nov 2020 19:26:19 +0000 Subject: [PATCH 46/97] bump version to 3.0.5 --- HISTORY.md | 5 +++++ lib/github-markup.rb | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index 981cb46c..8ee4e818 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,8 @@ +## 3.0.5 - 2020-11-12 + +* Add commonmarker_exts to commonmarker options [#1268](https://github.com/github/markup/pull/1268) +* Check whether filename is set when rendering Asciidoc. [#1290](https://github.com/github/markup/pull/1290) + ## 3.0.4 - 2019-04-03 * Expose options in #render_s [#1249](https://github.com/github/markup/pull/1249) diff --git a/lib/github-markup.rb b/lib/github-markup.rb index 1bebb3ab..4b064e0e 100644 --- a/lib/github-markup.rb +++ b/lib/github-markup.rb @@ -1,6 +1,6 @@ module GitHub module Markup - VERSION = '3.0.4' + VERSION = '3.0.5' Version = VERSION end end From b95a3068ae330690da5e20e1556502b4599cebb4 Mon Sep 17 00:00:00 2001 From: Carl Brasic Date: Tue, 30 Mar 2021 14:41:06 -0500 Subject: [PATCH 47/97] Point to python3 executable for rendering RST https://github.com/github/markup/pull/919 added support for python3, but we still explicitly shell out to the `python2` executable. Let's switch to python3 now that it's supported. This bumps the major version because it's a breaking change for anyone running in an environment with only python2. --- lib/github-markup.rb | 2 +- lib/github/markups.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/github-markup.rb b/lib/github-markup.rb index 4b064e0e..df6aa41d 100644 --- a/lib/github-markup.rb +++ b/lib/github-markup.rb @@ -1,6 +1,6 @@ module GitHub module Markup - VERSION = '3.0.5' + VERSION = '4.0.0' Version = VERSION end end diff --git a/lib/github/markups.rb b/lib/github/markups.rb index 0ed55df0..f12fb7e0 100644 --- a/lib/github/markups.rb +++ b/lib/github/markups.rb @@ -49,7 +49,7 @@ command( ::GitHub::Markups::MARKUP_RST, - "python2 -S #{Shellwords.escape(File.dirname(__FILE__))}/commands/rest2html", + "python3 -S #{Shellwords.escape(File.dirname(__FILE__))}/commands/rest2html", /re?st(\.txt)?/, ["reStructuredText"], "restructuredtext" From e1fb4356cd9064384c026b8bcb10fc88c151d505 Mon Sep 17 00:00:00 2001 From: Carl Brasic Date: Tue, 30 Mar 2021 15:31:52 -0500 Subject: [PATCH 48/97] Remove -S flag for python3 This should not be necessary anymore and its presence breaks actual use of pip which installs into the site-packages directory. --- lib/github/markups.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/github/markups.rb b/lib/github/markups.rb index f12fb7e0..2c30c99d 100644 --- a/lib/github/markups.rb +++ b/lib/github/markups.rb @@ -49,7 +49,7 @@ command( ::GitHub::Markups::MARKUP_RST, - "python3 -S #{Shellwords.escape(File.dirname(__FILE__))}/commands/rest2html", + "python3 #{Shellwords.escape(File.dirname(__FILE__))}/commands/rest2html", /re?st(\.txt)?/, ["reStructuredText"], "restructuredtext" From 935ee3bb2365b372ee1a290e8f0ea4ea0ffc8c6d Mon Sep 17 00:00:00 2001 From: Carl Brasic Date: Tue, 30 Mar 2021 15:33:15 -0500 Subject: [PATCH 49/97] Update bootstrap script to use pip3 --- script/bootstrap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/bootstrap b/script/bootstrap index 8092d517..f89f3181 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -5,4 +5,4 @@ set -e cd $(dirname "$0")/.. bundle install -easy_install docutils +pip3 install docutils From 9899397bdef227900f827001116a85f350377312 Mon Sep 17 00:00:00 2001 From: Carl Brasic Date: Tue, 30 Mar 2021 15:47:37 -0500 Subject: [PATCH 50/97] Update HTML fixture for python3 The README.rst fixture had a test that was python2-specific, it asserted that a segment of markup would be dropped from the output for containing UTF-8 chars. That's no longer true, so we can update the fixture accordingly. --- test/markups/README.rst.html | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/test/markups/README.rst.html b/test/markups/README.rst.html index 7b8e9fca..031c3c4a 100644 --- a/test/markups/README.rst.html +++ b/test/markups/README.rst.html @@ -16,6 +16,47 @@

Header 2

  • Somé UTF-8°
  • The UTF-8 quote character in this table used to cause python to go boom. Now docutils just silently ignores it.

    + +Things that are Awesome (on a scale of 1-11) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ThingAwesomeness
    Icecream7
    Honey Badgers10.5
    Nickelback-2
    Iron Man10
    Iron Man 23
    Tabular Data5
    Made up ratings11
     A block of code
     
    From 4230afedbb28a0d0e053ac51f5d74a9fdf160349 Mon Sep 17 00:00:00 2001 From: Carl Brasic Date: Wed, 31 Mar 2021 10:14:16 -0500 Subject: [PATCH 51/97] Add changelog entry --- HISTORY.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 8ee4e818..c296602b 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,7 @@ +## 4.0.0 - 2021-03-31 + +* Drop support for Python 2 in RST rendering [#1456](https://github.com/github/markup/pull/1456) + ## 3.0.5 - 2020-11-12 * Add commonmarker_exts to commonmarker options [#1268](https://github.com/github/markup/pull/1268) @@ -72,8 +76,8 @@ ### Added -* Re-introduce [#537](https://github.com/github/markup/pull/537) to detect language of markup document - However `github-linguist` is optional and this gem will fallback to extensions for detection. +* Re-introduce [#537](https://github.com/github/markup/pull/537) to detect language of markup document + However `github-linguist` is optional and this gem will fallback to extensions for detection. [Full changelog](https://github.com/github/markup/compare/v1.4.9...v1.5.0) From 681f5392ec409779298aea881a3eed05351d3e78 Mon Sep 17 00:00:00 2001 From: "Terence D. Honles" Date: Tue, 9 Mar 2021 14:31:40 -0800 Subject: [PATCH 52/97] convert to github actions --- .github/workflows/ci.yml | 58 ++++++++++++++++++++++++++++++++++++++++ .travis.yml | 27 ------------------- 2 files changed, 58 insertions(+), 27 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..88ec38f7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,58 @@ +name: CI +on: push + +env: + JRUBY_OPTS: -Xcext.enabled=true + +jobs: + build: + name: "Test / Ruby ${{ matrix.ruby }}" + runs-on: ubuntu-latest + strategy: + matrix: + ruby: + - "2.4" + - "2.5" + - "2.6" + - "2.7" + fail-fast: false + + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 10 + + - uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + bundler-cache: true + + - uses: actions/setup-python@v2 + with: + # This should match lib/github/markups.rb GitHub::Markups::MARKUP_RST + python-version: '3.x' + + - uses: actions/cache@v2 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip + + - name: Install Perl dependencies + run: | + curl -1sLf \ + 'https://dl.cloudsmith.io/public/nxadm-pkgs/rakudo-pkg/setup.deb.sh' \ + | sudo -E bash + sudo apt-get update -qq + sudo apt-get install perl rakudo-pkg + + curl -L http://cpanmin.us | perl - --sudo App::cpanminus + sudo cpanm --installdeps --notest Pod::Simple + + - name: Install Python dependencies + run: python -m pip install docutils + + - name: Run rake + run: | + export PATH=$PATH:/.perl6/bin:/opt/rakudo-pkg/bin + bundle exec rake diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 15942b74..00000000 --- a/.travis.yml +++ /dev/null @@ -1,27 +0,0 @@ -dist: trusty -sudo: required -language: ruby -rvm: - - 2.1.10 - - 2.2.7 - - 2.3.4 - - 2.4.1 -notifications: - email: false -git: - depth: 10 -before_install: - - sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 379CE192D401AB61 - - echo "deb https://dl.bintray.com/nxadm/rakudo-pkg-debs `lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list.d/rakudo-pkg.list - - sudo apt-get update -qq - - sudo apt-get install perl rakudo-pkg - - export PATH=$PATH:/.perl6/bin:/opt/rakudo-pkg/bin - - curl -L http://cpanmin.us | perl - --sudo App::cpanminus - - sudo cpanm --installdeps --notest Pod::Simple - - sudo pip install docutils -cache: - - bundler - - pip -env: - global: - - "JRUBY_OPTS=-Xcext.enabled=true" From bd03c94813125c25c4624112179770ab12f077e1 Mon Sep 17 00:00:00 2001 From: "Terence D. Honles" Date: Thu, 1 Apr 2021 22:05:22 -0700 Subject: [PATCH 53/97] fix github action triggers --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 88ec38f7..52d4db54 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,5 +1,5 @@ name: CI -on: push +on: [push, pull_request] env: JRUBY_OPTS: -Xcext.enabled=true From 7a19485f98af6963f71d2479be1cfd2841266e86 Mon Sep 17 00:00:00 2001 From: "Terence D. Honles" Date: Tue, 9 Mar 2021 14:10:30 -0800 Subject: [PATCH 54/97] fix unknown directive options removing the directive entirely --- lib/github/commands/rest2html | 31 ++++++++++++++++++++++++++++++- test/markups/README.rst | 6 ++++++ test/markups/README.rst.html | 3 +++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/lib/github/commands/rest2html b/lib/github/commands/rest2html index 0efea607..c7c89dce 100755 --- a/lib/github/commands/rest2html +++ b/lib/github/commands/rest2html @@ -47,7 +47,7 @@ except: import codecs import io -from docutils import nodes +from docutils import nodes, utils from docutils.parsers.rst import directives, roles from docutils.parsers.rst.directives.body import CodeBlock, Directive from docutils.core import publish_parts @@ -76,6 +76,35 @@ from docutils import nodes original_behavior = False # Documents original docutils behavior github_display = True +def extract_extension_options(field_list, option_spec): + """ + Overrides `utils.extract_extension_options` and inlines + `utils.assemble_option_dict` to make it ignore unknown options passed to + directives (i.e. ``:caption:`` for ``.. code-block:``). + """ + + dropped = set() + options = {} + for name, value in utils.extract_options(field_list): + convertor = option_spec.get(name) + if name in options or name in dropped: + raise utils.DuplicateOptionError('duplicate option "%s"' % name) + + # silently drop unknown options as long as they are not duplicates + if convertor is None: + dropped.add(name) + continue + + # continue as before + try: + options[name] = convertor(value) + except (ValueError, TypeError) as detail: + raise detail.__class__('(option: "%s"; value: %r)\n%s' + % (name, value, ' '.join(detail.args))) + return options + +utils.extract_extension_options = extract_extension_options + def unknown_directive(self, type_name): lineno = self.state_machine.abs_line_number() indented, indent, offset, blank_finish = \ diff --git a/test/markups/README.rst b/test/markups/README.rst index 54bd71ce..53cba9e0 100644 --- a/test/markups/README.rst +++ b/test/markups/README.rst @@ -39,6 +39,12 @@ The UTF-8 quote character in this table used to cause python to go boom. Now doc python.code('hooray') +.. code:: python + :caption: An ignored Sphinx option + :made-up-option: An ignored made up option + + python.code('hello world') + .. doctest:: ignored >>> some_function() diff --git a/test/markups/README.rst.html b/test/markups/README.rst.html index 031c3c4a..3ddfab76 100644 --- a/test/markups/README.rst.html +++ b/test/markups/README.rst.html @@ -64,6 +64,9 @@

    Header 2

    python.code('hooray')
    +python.code('hello world')
    +
    +
     >>> some_function()
     'result'
     
    From cc1340663fd41c833b08fa0139310ee166bbf1a7 Mon Sep 17 00:00:00 2001 From: Josh Soref Date: Sun, 6 Jun 2021 19:53:25 -0400 Subject: [PATCH 55/97] spelling: exclude Signed-off-by: Josh Soref --- test/markups/README.org | 2 +- test/markups/README.org.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/markups/README.org b/test/markups/README.org index dded60e3..0eca800a 100644 --- a/test/markups/README.org +++ b/test/markups/README.org @@ -58,7 +58,7 @@ end - Skipping text before the first headline (option skip:t) - Skipping tables (option |:nil) - Custom todo keywords - - EXPORT_SELECT_TAGS and EXPORT_EXLUDE_TAGS for controlling parts of + - EXPORT_SELECT_TAGS and EXPORT_EXCLUDE_TAGS for controlling parts of the tree to export - Rewrite "file:(blah).org" links to "http:(blah).html" links. This makes the inter-links to other org-mode files work. diff --git a/test/markups/README.org.html b/test/markups/README.org.html index ddf8b27e..458024af 100644 --- a/test/markups/README.org.html +++ b/test/markups/README.org.html @@ -52,7 +52,7 @@

    2.3 2009-12-30: Version 0.5.0

  • Skipping text before the first headline (option skip:t)
  • Skipping tables (option |:nil)
  • Custom todo keywords
  • -
  • EXPORT_SELECT_TAGS and EXPORT_EXLUDE_TAGS for controlling parts of +
  • EXPORT_SELECT_TAGS and EXPORT_EXCLUDE_TAGS for controlling parts of the tree to export
  • From c806bbfb3f02b0203bc91633b75399eb5e0cf3c4 Mon Sep 17 00:00:00 2001 From: Nick Borromeo Date: Mon, 7 Mar 2022 19:12:02 -0800 Subject: [PATCH 56/97] Bump commonmark version --- Gemfile | 2 +- HISTORY.md | 3 +++ lib/github-markup.rb | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 61920ab8..c38f68e8 100644 --- a/Gemfile +++ b/Gemfile @@ -5,7 +5,7 @@ gem "posix-spawn", :platforms => :ruby gem "redcarpet", :platforms => :ruby gem "kramdown", :platforms => :jruby gem "RedCloth" -gem "commonmarker", "~> 0.18.1" +gem "commonmarker", "~> 0.23.4" gem "rdoc", "~>3.6" gem "org-ruby", "= 0.9.9" gem "creole", "~>0.3.6" diff --git a/HISTORY.md b/HISTORY.md index c296602b..966ef18c 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,6 @@ +## 4.0.1 - 2022-03-07 +* Update to commonmarker 0.23.4; See [Version Changelog](https://github.com/gjtorikian/commonmarker/blob/main/CHANGELOG.md#v0234-2022-03-03) + ## 4.0.0 - 2021-03-31 * Drop support for Python 2 in RST rendering [#1456](https://github.com/github/markup/pull/1456) diff --git a/lib/github-markup.rb b/lib/github-markup.rb index df6aa41d..0244f156 100644 --- a/lib/github-markup.rb +++ b/lib/github-markup.rb @@ -1,6 +1,6 @@ module GitHub module Markup - VERSION = '4.0.0' + VERSION = '4.0.1' Version = VERSION end end From d35c00f367036effadab9cc7b6022b4cecbe1754 Mon Sep 17 00:00:00 2001 From: Nick Borromeo Date: Mon, 7 Mar 2022 19:12:02 -0800 Subject: [PATCH 57/97] Bump commonmark version --- Gemfile | 2 +- HISTORY.md | 3 +++ lib/github-markup.rb | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 61920ab8..7067b704 100644 --- a/Gemfile +++ b/Gemfile @@ -5,7 +5,7 @@ gem "posix-spawn", :platforms => :ruby gem "redcarpet", :platforms => :ruby gem "kramdown", :platforms => :jruby gem "RedCloth" -gem "commonmarker", "~> 0.18.1" +gem "commonmarker", git: "https://github.com/gjtorikian/commonmarker.git", tag: "v0.18.3" gem "rdoc", "~>3.6" gem "org-ruby", "= 0.9.9" gem "creole", "~>0.3.6" diff --git a/HISTORY.md b/HISTORY.md index c296602b..966ef18c 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,6 @@ +## 4.0.1 - 2022-03-07 +* Update to commonmarker 0.23.4; See [Version Changelog](https://github.com/gjtorikian/commonmarker/blob/main/CHANGELOG.md#v0234-2022-03-03) + ## 4.0.0 - 2021-03-31 * Drop support for Python 2 in RST rendering [#1456](https://github.com/github/markup/pull/1456) diff --git a/lib/github-markup.rb b/lib/github-markup.rb index df6aa41d..0244f156 100644 --- a/lib/github-markup.rb +++ b/lib/github-markup.rb @@ -1,6 +1,6 @@ module GitHub module Markup - VERSION = '4.0.0' + VERSION = '4.0.1' Version = VERSION end end From 2de4aa63c419d1cc111e01e1678caf127f0a2356 Mon Sep 17 00:00:00 2001 From: Aaron Harpole Date: Mon, 14 Mar 2022 22:10:11 +0000 Subject: [PATCH 58/97] fix some minor changes in the generated HTML --- test/markups/README.rst.html | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/test/markups/README.rst.html b/test/markups/README.rst.html index 3ddfab76..6accfdf6 100644 --- a/test/markups/README.rst.html +++ b/test/markups/README.rst.html @@ -9,7 +9,7 @@

    Subtitle

    -

    Header 2

    +

    Header 2

    1. Blah blah code blah
    2. More code, hooray
    3. @@ -106,7 +106,7 @@

      Header 2

      Coverity Scan Build Status -

      Field list

      +

      Field list

      @@ -131,9 +131,7 @@

      Field list

      -

      someone@somewhere.org

      -

      Press Ctrl+C to quit

      -

      RAW HTML!

      p {color:blue;} +

      RAW HTML!

      p {color:blue;} \ No newline at end of file From 4dc7c5612759fc9ce63a7af8bac38f72fc7e1de2 Mon Sep 17 00:00:00 2001 From: Aaron Harpole Date: Mon, 21 Mar 2022 15:41:09 -0700 Subject: [PATCH 59/97] Update HISTORY.md Co-authored-by: Nick Borromeo --- HISTORY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index 966ef18c..51f16dfc 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,5 @@ ## 4.0.1 - 2022-03-07 -* Update to commonmarker 0.23.4; See [Version Changelog](https://github.com/gjtorikian/commonmarker/blob/main/CHANGELOG.md#v0234-2022-03-03) +* Update to commonmarker 0.18.3; There isn't a version on RubyGems for this, so this is pointing to a [tag version on GitHub](https://github.com/gjtorikian/commonmarker/blob/v0.18.3/commonmarker.gemspec) ## 4.0.0 - 2021-03-31 From 040f91d9919c51a5ecbe54352a207a3281f07359 Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Tue, 12 Apr 2022 07:20:31 +0200 Subject: [PATCH 60/97] Make sure all anchors are created for RST links. --- lib/github/commands/rest2html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/github/commands/rest2html b/lib/github/commands/rest2html index c7c89dce..c6fc663e 100755 --- a/lib/github/commands/rest2html +++ b/lib/github/commands/rest2html @@ -199,8 +199,8 @@ class GitHubHTMLTranslator(HTMLTranslator): # see also: http://bit.ly/NHtyRx # the a is to support ::contents with ::sectnums: http://git.io/N1yC def visit_section(self, node): - id_attribute = node.attributes['ids'][0] - self.body.append('\n' % id_attribute) + for id_attribute in node.attributes['ids']: + self.body.append('\n' % id_attribute) self.section_level += 1 def depart_section(self, node): From a78c9a718bf64daeb6cf2f996c5844fa7fc3457f Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Tue, 12 Apr 2022 07:28:04 +0200 Subject: [PATCH 61/97] Add test. On my system rest2html generates quite some different markup so I'm not sure whether this actually works. --- test/markups/README.rst | 4 ++++ test/markups/README.rst.html | 2 ++ 2 files changed, 6 insertions(+) diff --git a/test/markups/README.rst b/test/markups/README.rst index 53cba9e0..ad7af380 100644 --- a/test/markups/README.rst +++ b/test/markups/README.rst @@ -8,6 +8,8 @@ Example text. .. contents:: Table of Contents +.. _label_for_header_2: + Header 2 -------- @@ -17,6 +19,8 @@ Header 2 3. Somé UTF-8° +4. `Link to the above header `_ + The UTF-8 quote character in this table used to cause python to go boom. Now docutils just silently ignores it. .. csv-table:: Things that are Awesome (on a scale of 1-11) diff --git a/test/markups/README.rst.html b/test/markups/README.rst.html index 6accfdf6..ca6807f8 100644 --- a/test/markups/README.rst.html +++ b/test/markups/README.rst.html @@ -9,11 +9,13 @@

      Subtitle

      +

      Header 2

      1. Blah blah code blah
      2. More code, hooray
      3. Somé UTF-8°
      4. +
      5. Link to the above header

      The UTF-8 quote character in this table used to cause python to go boom. Now docutils just silently ignores it.

      From e935a8505554aa175e9af89f1670d2dd5d03c469 Mon Sep 17 00:00:00 2001 From: djdefi Date: Thu, 29 Dec 2022 11:30:34 -0800 Subject: [PATCH 62/97] Remove reference to deprecated support email --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f6a81e94..2c83e31e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,7 +11,7 @@ This library's only job is to decide which markup format to use and call out to If you are having an issue with: * **Syntax highlighting** - see [github/linguist](https://github.com/github/linguist/blob/master/CONTRIBUTING.md#fixing-syntax-highlighting) -* **Markdown on GitHub** - contact support@github.com +* **Markdown on GitHub** - contact [GitHub Support](https://support.github.com/) * **Styling issues on GitHub** - see [primer-markdown](https://github.com/primer/primer-css/tree/master/modules/primer-markdown) module in the [primer/primer-css](https://github.com/primer/primer-css) repository Anything else - [search open issues](https://github.com/github/markup/issues) or create an issue and and we'll help point you in the right direction. From 65bfe283658857d7d506c923bd808c369a8cd90d Mon Sep 17 00:00:00 2001 From: TAbdiukov Date: Tue, 4 Jul 2023 06:23:18 +0200 Subject: [PATCH 63/97] Textile language link now leads to something completely different - replace the link with the current official one --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b2bcc809..93eb15ba 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ The following markups are supported. The dependencies listed are required if you wish to run the library. You can also run `script/bootstrap` to fetch them all. * [.markdown, .mdown, .mkdn, .md](http://daringfireball.net/projects/markdown/) -- `gem install commonmarker` (https://github.com/gjtorikian/commonmarker) -* [.textile](https://www.promptworks.com/textile) -- `gem install RedCloth` (https://github.com/jgarber/redcloth) +* [.textile](https://textile-lang.com/) -- `gem install RedCloth` (https://github.com/jgarber/redcloth) * [.rdoc](https://ruby.github.io/rdoc/) -- `gem install rdoc -v 3.6.1` * [.org](http://orgmode.org/) -- `gem install org-ruby` (https://github.com/wallyqs/org-ruby) * [.creole](http://wikicreole.org/) -- `gem install creole` (https://github.com/larsch/creole) From 04873413c9f1df24d3e7d54cfb3fbb830df76076 Mon Sep 17 00:00:00 2001 From: Chris Maynard Date: Tue, 10 Oct 2023 14:58:28 -0700 Subject: [PATCH 64/97] Add markdown support for .mdx files --- HISTORY.md | 3 +++ lib/github-markup.rb | 2 +- lib/github/markup/markdown.rb | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 51f16dfc..57145177 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,6 @@ +## 4.0.2 - 2023-10-10 +* Add support for .mdx files in markdown + ## 4.0.1 - 2022-03-07 * Update to commonmarker 0.18.3; There isn't a version on RubyGems for this, so this is pointing to a [tag version on GitHub](https://github.com/gjtorikian/commonmarker/blob/v0.18.3/commonmarker.gemspec) diff --git a/lib/github-markup.rb b/lib/github-markup.rb index 0244f156..58f9b1c5 100644 --- a/lib/github-markup.rb +++ b/lib/github-markup.rb @@ -1,6 +1,6 @@ module GitHub module Markup - VERSION = '4.0.1' + VERSION = '4.0.2' Version = VERSION end end diff --git a/lib/github/markup/markdown.rb b/lib/github/markup/markdown.rb index 7952bd3b..dcf93229 100644 --- a/lib/github/markup/markdown.rb +++ b/lib/github/markup/markdown.rb @@ -31,8 +31,8 @@ class Markdown < Implementation def initialize super( - /md|mkdn?|mdwn|mdown|markdown|litcoffee/i, - ["Markdown", "Literate CoffeeScript"]) + /md|mkdn?|mdwn|mdown|markdown|mdx|litcoffee/i, + ["Markdown", "MDX", "Literate CoffeeScript"]) end def load From 5488510af8644f45e9caa20ec00b6a0d10955517 Mon Sep 17 00:00:00 2001 From: Justin Kenyon Date: Wed, 12 Jun 2024 15:46:50 -0400 Subject: [PATCH 65/97] Update nokogiri, nokogiri-diff, rdoc This also removes support for Ruby versions < 3 Brings in changes from https://github.com/github/markup/pull/1808 co-authored-by: Tyler Dixon --- .github/workflows/ci.yml | 8 +- .gitignore | 3 +- Gemfile | 4 +- HISTORY.md | 7 + github-markup.gemspec | 7 +- lib/github-markup.rb | 2 +- lib/github/markup/command_implementation.rb | 36 +- test/markup_test.rb | 7 +- test/markups/README.asciidoc.html | 2 +- test/markups/README.hidetitle.asciidoc.html | 2 +- test/markups/README.litcoffee.html | 2 +- test/markups/README.long.rst | 1319 +++++++++++++++++++ test/markups/README.long.rst.html | 1303 ++++++++++++++++++ test/markups/README.mediawiki.html | 14 +- test/markups/README.pod.html | 12 +- test/markups/README.rst.html | 8 +- test/markups/README.toc.asciidoc.html | 2 +- test/markups/README.toc.rst.html | 4 +- 18 files changed, 2683 insertions(+), 59 deletions(-) create mode 100644 test/markups/README.long.rst create mode 100644 test/markups/README.long.rst.html diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 52d4db54..a25fdefc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,10 +11,10 @@ jobs: strategy: matrix: ruby: - - "2.4" - - "2.5" - - "2.6" - - "2.7" + - "3.0" + - "3.1" + - "3.2" + - "3.3" fail-fast: false steps: diff --git a/.gitignore b/.gitignore index 589d00dc..c93c0b18 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ pkg/ Gemfile.lock .project .buildpath -*~ +*~ +vendor/ diff --git a/Gemfile b/Gemfile index c98072f2..fb3c1308 100644 --- a/Gemfile +++ b/Gemfile @@ -1,17 +1,17 @@ source "http://rubygems.org" gemspec -gem "posix-spawn", :platforms => :ruby gem "redcarpet", :platforms => :ruby gem "kramdown", :platforms => :jruby gem "RedCloth" # using a tag version here because 0.18.3 was not published by the author to encourage users to upgrade. # however we want to bump up to this version since this has a security patch gem "commonmarker", git: "https://github.com/gjtorikian/commonmarker.git", tag: "v0.18.3" -gem "rdoc", "~>3.6" +gem "rdoc", "~> 6.7.0" gem "org-ruby", "= 0.9.9" gem "creole", "~>0.3.6" gem "wikicloth", "=0.8.3" gem "twitter-text", "~> 1.14" gem "asciidoctor", "~> 2.0.5" gem "rake" +gem "rexml" diff --git a/HISTORY.md b/HISTORY.md index 57145177..ace518d1 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,10 @@ +## 5.0.0 - 2024-06-12 +* Drop support for Ruby versions < 3 +* Bump nokogiri from 1.8.1 to 1.16.5 +* Bump nokogiri-diff from 0.2.0 to 0.3.0 +* Bump rdoc from 3.6 to 6.7.0 +* Update CommandImplementation to better support large files (affecting RST and POD6 rendering) + ## 4.0.2 - 2023-10-10 * Add support for .mdx files in markdown diff --git a/github-markup.gemspec b/github-markup.gemspec index 594d3507..4818706d 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -13,8 +13,9 @@ Gem::Specification.new do |s| s.homepage = "https://github.com/github/markup" s.license = "MIT" + s.required_ruby_version = '>= 3.0.0' + s.files = `git ls-files`.split($\) - s.files += Dir['vendor/**/*'] s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) } s.test_files = s.files.grep(%r{^(test|spec|features)/}) s.require_paths = %w[lib] @@ -24,7 +25,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'minitest', '~> 5.4', '>= 5.4.3' s.add_development_dependency 'html-pipeline', '~> 1.0' s.add_development_dependency 'sanitize', '>= 4.6.3' - s.add_development_dependency 'nokogiri', '~> 1.8.1' - s.add_development_dependency 'nokogiri-diff', '~> 0.2.0' + s.add_development_dependency 'nokogiri', '~> 1.16.5' + s.add_development_dependency 'nokogiri-diff', '~> 0.3.0' s.add_development_dependency "github-linguist", ">= 7.1.3" end diff --git a/lib/github-markup.rb b/lib/github-markup.rb index 58f9b1c5..646e341c 100644 --- a/lib/github-markup.rb +++ b/lib/github-markup.rb @@ -1,6 +1,6 @@ module GitHub module Markup - VERSION = '4.0.2' + VERSION = '5.0.0' Version = VERSION end end diff --git a/lib/github/markup/command_implementation.rb b/lib/github/markup/command_implementation.rb index 4ecf2ad5..b55f1735 100644 --- a/lib/github/markup/command_implementation.rb +++ b/lib/github/markup/command_implementation.rb @@ -1,9 +1,4 @@ -begin - require "posix-spawn" -rescue LoadError - require "open3" -end - +require "open3" require "github/markup/implementation" @@ -39,28 +34,13 @@ def call_block(rendered, content) end end - if defined?(POSIX::Spawn) - def execute(command, target) - spawn = POSIX::Spawn::Child.new(*command, :input => target) - if spawn.status.success? - sanitize(spawn.out, target.encoding) - else - raise CommandError.new(spawn.err.strip) - end - end - else - def execute(command, target) - output = Open3.popen3(*command) do |stdin, stdout, stderr, wait_thr| - stdin.puts target - stdin.close - if wait_thr.value.success? - stdout.readlines - else - raise CommandError.new(stderr.readlines.join('').strip) - end - end - sanitize(output.join(''), target.encoding) - end + def execute(command, target) + # capture3 blocks until both buffers are written to and the process terminates, but + # it won't allow either buffer to fill up + stdout, stderr, status = Open3.capture3(*command, stdin_data: target) + + raise CommandError.new(stderr) unless status.success? + sanitize(stdout, target.encoding) end def sanitize(input, encoding) diff --git a/test/markup_test.rb b/test/markup_test.rb index 24e78000..ced0b5f8 100644 --- a/test/markup_test.rb +++ b/test/markup_test.rb @@ -66,6 +66,11 @@ def call f.close_write f.read end + + if ENV['UPDATE'] + File.open(expected_file, 'w') { |f| f.write actual } + end + assert_html_equal expected, actual, < e - assert_equal "failure message", e.message + assert_equal "failure message", e.message.strip else fail "an exception was expected but was not raised" end diff --git a/test/markups/README.asciidoc.html b/test/markups/README.asciidoc.html index 6f478cab..8019074b 100644 --- a/test/markups/README.asciidoc.html +++ b/test/markups/README.asciidoc.html @@ -59,4 +59,4 @@

      Another Section

      content

      - + \ No newline at end of file diff --git a/test/markups/README.hidetitle.asciidoc.html b/test/markups/README.hidetitle.asciidoc.html index ae6b258f..02a55fe7 100644 --- a/test/markups/README.hidetitle.asciidoc.html +++ b/test/markups/README.hidetitle.asciidoc.html @@ -1,3 +1,3 @@

      This test verifies the author can disable the document title by adding :!showtitle: to the document header.

      -
      + \ No newline at end of file diff --git a/test/markups/README.litcoffee.html b/test/markups/README.litcoffee.html index 51ffe528..3245a0b5 100644 --- a/test/markups/README.litcoffee.html +++ b/test/markups/README.litcoffee.html @@ -52,4 +52,4 @@

      Literate CoffeeScript Test

      Tabs work too:

      test "tabbed code", -> -ok yes

      +ok yes

      \ No newline at end of file diff --git a/test/markups/README.long.rst b/test/markups/README.long.rst new file mode 100644 index 00000000..b1c007a6 --- /dev/null +++ b/test/markups/README.long.rst @@ -0,0 +1,1319 @@ +=================== +Robot Framework 7.0 +=================== + +.. default-role:: code + +`Robot Framework`_ 7.0 is a new major release with highly enhanced listener interface +(`#3296`_), native `VAR` syntax for creating variables (`#3761`_), support for +mixing embedded and normal arguments with library keywords (`#4710`_), JSON +result format (`#4847`_) and various other enhancements and bug fixes. + +Robot Framework 7.0 was released on Thursday January 11, 2024. Questions and comments +related to the release can be sent to the `#devel` channel on `Robot Framework Slack`_ +and possible bugs submitted to the `issue tracker`_. + +.. _Robot Framework: http://robotframework.org +.. _Robot Framework Foundation: http://robotframework.org/foundation + + +.. _pip: http://pip-installer.org +.. _PyPI: https://pypi.python.org/pypi/robotframework +.. _issue tracker milestone: https://github.com/robotframework/robotframework/milestone/64 +.. _issue tracker: https://github.com/robotframework/robotframework/issues +.. _Slack: http://slack.robotframework.org +.. _Robot Framework Slack: Slack_ +.. _installation instructions: ../../INSTALL.rst + +.. contents:: + :depth: 2 + :local: + +Installation +============ + +If you have pip_ installed, just run + +:: + + pip install --upgrade robotframework + +to install the latest available stable release or use + +:: + + pip install robotframework==7.0 + +to install exactly this version. Alternatively you can download the package +from PyPI_ and install it manually. For more details and other installation +approaches, see the `installation instructions`_. + +Most important enhancements +=========================== + + If you are interested to learn more about the new features in Robot Framework 7.0, + join the `RoboCon conference`__ in February, 2024. `Pekka Klärck`_, Robot Framework + lead developer, will go through the key features briefly in the `onsite conference`__ + in Helsinki and more thoroughly in the `online edition`__. + + The conference has also dozens of other great talks, workshops and a lot of + possibilities to meet other community members as well as developers of various + tools and libraries in the ecosystem. All profits from the conference will be + used for future Robot Framework development. + +.. _Pekka Klärck: https://github.com/pekkaklarck +__ https://robocon.io +__ https://robocon.io/#live-opening-the-conference +__ https://robocon.io/#online-opening-the-conference-live + +Listener enhancements +--------------------- + +Robot Framework's `listener interface`__ is a very powerful mechanism to get +notifications about various events during execution and it also allows modifying +data and results on the fly. It is not typically directly used by normal Robot +Framework users, but they are likely to use tools that use it internally. +The listener API has been significantly enhanced making it possible +to create even more powerful and interesting tools in the future. + +__ http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#listener-interface + +Support keywords and control structures with listener version 3 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The major limitation with the listener API has been that the listener +API version 2 only supports getting notifications, not making modifications, +and that the more powerful listener API version 3 has only supported suites +and tests/tasks. + +The biggest enhancement in the whole Robot Framework 7.0 is that the listener +version 3 has been extended to support also keywords and control structures (`#3296`_). +For example, a listener having the following methods prints information +about started keywords and ended WHILE loops: + +.. code:: python + + from robot import result, running + + + def start_keyword(data: running.Keyword, result: result.Keyword): + print(f"Keyword '{result.full_name}' used on line {data.lineno} started.") + + + def end_while(data: running.While, result: result.While): + print(f"WHILE loop on line {data.lineno} ended with status {result.status} " + f"after {len(result.body)} iterations.") + +With keyword calls it is possible to also get more information about the actually +executed keyword. For example, the following listener prints some information +about the executed keyword and the library it belongs to: + +.. code:: python + + from robot.running import Keyword as KeywordData, LibraryKeyword + from robot.result import Keyword as KeywordResult + + + def start_library_keyword(data: KeywordData, + implementation: LibraryKeyword, + result: KeywordResult): + library = implementation.owner + print(f"Keyword '{implementation.name}' is implemented in library " + f"'{library.name}' at '{implementation.source}' on line " + f"{implementation.lineno}. The library has {library.scope.name} " + f"scope and the current instance is {library.instance}.") + +As the above example already illustrated, it is even possible to get an access to +the actual library instance. This means that listeners can inspect the library +state and also modify it. With user keywords it is even possible to modify +the keyword itself or, via the `owner` resource file, any other keyword in +the resource file. + +Listeners can also modify results if needed. Possible use cases include hiding +sensitive information and adding more details to results based on external sources. + +Notice that although listener can change status of any executed keyword or control +structure, that does not directly affect the status of the executed test. In general +listeners cannot directly fail keywords so that execution would stop or handle +failures so that execution would continue. This kind of functionality may be +added in the future if there are needs. + +The new listener version 3 methods are so powerful and versatile that going them +through thoroughly in these release notes is not possible. For more examples, you +can see the `acceptance tests`__ using the methods in various interesting and even +crazy ways. + +__ https://github.com/robotframework/robotframework/tree/master/atest/testdata/output/listener_interface/body_items_v3 + +Listener version 3 is the default listener version +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Earlier listeners always needed to specify the API version they used with the +`ROBOT_LISTENER_API_VERSION` attribute. Now that the listener version 3 got +the new methods, it is considered so much more powerful than the version 2 +that it was made the default listener version (`#4910`_). + +The listener version 2 continues to work, but using it requires specifying +the listener version as earlier. The are no plans to deprecate the listener +version 2, but we nevertheless highly recommend using the version 3 whenever +possible. + +Libraries can register themselves as listeners by using string `SELF` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Listeners are typically enabled from the command line, but libraries +can register listeners as well. Often libraries themselves want to act +as listeners, and that has earlier required using `self.ROBOT_LIBRARY_LISTENER = self` +in the `__init__` method. Robot Framework 7.0 makes it possible to use string +`SELF` (case-insensitive) for this purpose as well (`#4910`_), which means +that a listener can be specified as a class attribute and not only in `__init__`. +This is especially convenient when using the `@library` decorator: + +.. code:: python + + from robot.api.deco import keyword, library + + + @library(listener='SELF') + class Example: + + def start_suite(self, data, result): + ... + + @keyword + def example(self, arg): + ... + +Nicer API for modifying keyword arguments +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Modifying keyword call arguments programmatically has been made more convenient +(`#5000`_). This enhancement eases modifying arguments using the new listener +version 3 `start/end_keyword` methods. + +Paths are passed to version 3 listeners as `pathlib.Path` objects +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Listeners have methods like `output_file` and `log_file` that are called when +result files are ready so that they get the file path as an argument. Earlier +paths were strings, but nowadays listener version 3 methods get them as +more convenient `pathlib.Path`__ objects. + +__ https://docs.python.org/3/library/pathlib.html + +Native `VAR` syntax +------------------- + +The new `VAR` syntax (`#3761`_) makes it possible to create local variables +as well as global, suite and test/task scoped variables dynamically during +execution. The motivation is to have a more convenient syntax than using +the `Set Variable` keyword for creating local variables and to unify +the syntax for creating variables in different scopes. Except for the mandatory +`VAR` marker, the syntax is also the same as when creating variables in the +Variables section. The syntax is best explained with examples: + +.. code:: robotframework + + *** Test Cases *** + Example + # Create a local variable `${local}` with a value `value`. + VAR ${local} value + + # Create a variable that is available throughout the whole suite. + # Supported scopes are GLOBAL, SUITE, TEST, TASK and LOCAL (default). + VAR ${suite} value scope=SUITE + + # Validate created variables. + Should Be Equal ${local} value + Should Be Equal ${suite} value + + Example continued + # Suite level variables are seen also by subsequent tests. + Should Be Equal ${suite} value + +When creating `${scalar}` variables having long values, it is possible to split +the value to multiple lines. Lines are joined together with a space by default, +but that can be changed with the `separator` configuration option. Similarly as +in the Variables section, it is possible to create also `@{list}` and `&{dict}` +variables. Unlike in the Variables section, variables can be created conditionally +using IF/ELSE structures: + +.. code:: robotframework + + *** Test Cases *** + Long value + VAR ${long} + ... This value is rather long. + ... It has been split to multiple lines. + ... Parts will be joined together with a space. + + Multiline + VAR ${multiline} + ... First line. + ... Second line. + ... Last line. + ... separator=\n + + List + # Creates a list with three items. + VAR @{list} a b c + + Dictionary + # Creates a dictionary with two items. + VAR &{dict} key=value second=item + + Normal IF + IF 1 > 0 + VAR ${x} true value + ELSE + VAR ${x} false value + END + + Inline IF + IF 1 > 0 VAR ${x} true value ELSE VAR ${x} false value + +Mixed argument support with library keywords +-------------------------------------------- + +User keywords got support to use both embedded and normal arguments in Robot +Framework 6.1 (`#4234`__) and now that support has been added also to library keywords +(`#4710`_). The syntax works so, that if a function or method implementing a keyword +accepts more arguments than there are embedded arguments, the remaining arguments +can be passed in as normal arguments. This is illustrated by the following example +keyword: + +.. code:: python + + @keyword('Number of ${animals} should be') + def example(animals, count): + ... + +The above keyword could be used like this: + +.. code:: robotframework + + *** Test Cases *** + Example + Number of horses should be 2 + Number of horses should be count=2 + Number of dogs should be 3 + +__ https://github.com/robotframework/robotframework/issues/4234 + +JSON result format +------------------ + +Robot Framework 6.1 added support to `convert test/task data to JSON and back`__ +and Robot Framework 7.0 extends the JSON serialization support to execution results +(`#4847`_). One of the core use cases for data serialization was making it easy to +transfer data between process and machines, and now it is also easy to pass results +back. + +Also the built-in Rebot tool that is used for post-processing results supports +JSON files both in output and in input. Creating JSON output files is done using +the normal `--output` option so that the specified file has a `.json` extension:: + + rebot --output output.json output.xml + +When reading output files, JSON files are automatically recognized by +the extension:: + + rebot output.json + rebot output1.json output2.json + +When combining or merging results, it is possible to mix JSON and XML files:: + + rebot output1.xml output2.json + rebot --merge original.xml rerun.json + +The JSON output file structure is documented in the `result.json` `schema file`__. + +The plan is to enhance the support for JSON output files in the future so that +they could be created already during execution. For more details see issue `#3423`__. + +__ https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-6.1.rst#json-data-format +__ https://github.com/robotframework/robotframework/tree/master/doc/schema#readme +__ https://github.com/robotframework/robotframework/issues/3423 + +Argument conversion enhancements +-------------------------------- + +Automatic argument conversion is a very powerful feature that library developers +can use to avoid converting arguments manually and to get more useful Libdoc +documentation. There are two important new enhancements to it. + +Support for `Literal` +~~~~~~~~~~~~~~~~~~~~~ + +In Python, the Literal__ type makes it possible to type arguments so that type +checkers accept only certain values. For example, this function only accepts +strings `x`, `y` and `z`: + +.. code:: python + + def example(arg: Literal['x', 'y', 'z']): + ... + +Robot Framework has been enhanced so that it validates that an argument having +a `Literal` type can only be used with the specified values (`#4633`_). For +example, using a keyword with the above implementation with a value `xxx` would +fail. + +In addition to validation, arguments are also converted. For example, if an +argument accepts `Literal[-1, 0, 1]`, used arguments are converted to +integers and then validated. In addition to that, string matching is case, space, +underscore and hyphen insensitive. In all cases exact matches have a precedence +and the argument that is passed to the keyword is guaranteed to be in the exact +format used with `Literal`. + +`Literal` conversion is in many ways similar to Enum__ conversion that Robot +Framework has supported for long time. `Enum` conversion has benefits like +being able to use a custom documentation and it is typically better when using +the same type multiple times. In simple cases being able to just use +`arg: Literal[...]` without defining a new type is very convenient, though. + +__ https://docs.python.org/3/library/typing.html#typing.Literal +__ https://docs.python.org/3/library/enum.html + +Support "stringified" types like `'list[int]'` and `'int | float'` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Python's type hinting syntax has evolved so that generic types can be parameterized +like `list[int]` (new in `Python 3.9`__) and unions written as `int | float` +(new in `Python 3.10`__). Using these constructs with older Python versions causes +errors, but Python type checkers support also "stringified" type hints like +`'list[int]'` and `'int | float'` that work regardless the Python version. + +Support for stringified generics and unions has now been added also to +Robot Framework's argument conversion (`#4711`_). For example, +the following typing now also works with Python 3.8: + +.. code:: python + + def example(a: 'list[int]', b: 'int | float'): + ... + +These stringified types are also compatible with the Remote library API and other +scenarios where using actual types is not possible. + +__ https://peps.python.org/pep-0585 +__ https://peps.python.org/pep-0604 + +Tags set globally can be removed using `-tag` syntax +---------------------------------------------------- + +Individual tests and keywords can nowadays remove tags that have been set in +the Settings section with `Test Tags` or `Keyword Tags` settings by using +the `-tag` syntax with their own `[Tags]` setting (`#4374`_). For example, +tests `T1` and `T3` below get tags `all` and `most`, and test `T2` gets +tags `all` and `one`: + +.. code:: robotframework + + *** Settings *** + Test Tags all most + + *** Test Cases *** + T1 + No Operation + T2 + [Tags] one -most + No Operation + T3 + No Operation + +With tests it is possible to get the same effect by using the `Default Tags` +setting and overriding it where needed. That syntax is, however, considered +deprecated (`#4365`__) and using the new `-tag` syntax is recommended. With +keywords there was no similar functionality earlier. + +__ https://github.com/robotframework/robotframework/issues/4365 + +Dynamic and hybrid library APIs support asynchronous execution +-------------------------------------------------------------- + +Dynamic and hybrid libraries nowadays support asynchronous execution. +In practice the special methods like `get_keyword_names` and `run_keyword` +can be implemented as async methods (`#4803`_). + +Async support was added to the normal static library API in Robot Framework +6.1 (`#4089`_). A bug related to handling asynchronous keywords if execution +is stopped gracefully has also been fixed (`#4808`_). + +.. _#4089: https://github.com/robotframework/robotframework/issues/4089 + +Timestamps in result model and output.xml use standard format +------------------------------------------------------------- + +Timestamps used in the result model and stored to the output.xml file used custom +format like `20231107 19:57:01.123` earlier. Non-standard formats are seldom +a good idea, and in this case parsing the custom format turned out to be slow +as well. + +Nowadays the result model stores timestamps as standard datetime_ objects and +elapsed times as a timedelta_ (`#4258`_). This makes creating timestamps and +operating with them more convenient and considerably faster. The new objects can +be accessed via `start_time`, `end_time` and `elapsed_time` attributes that were +added as forward compatibility already in Robot Framework 6.1 (`#4765`_). +Old information is still available via the old `starttime`, `endtime` and +`elapsedtime` attributes, so this change is fully backwards compatible. + +The timestamp format in output.xml has also been changed from the custom +`YYYYMMDD HH:MM:SS.mmm` format to `ISO 8601`_ compatible +`YYYY-MM-DDTHH:MM:SS.mmmmmm`. Using a standard format makes it +easier to process output.xml files, but this change also has big positive +performance effect. Now that the result model stores timestamps as datetime_ +objects, formatting and parsing them with the available `isoformat()`__ and +`fromisoformat()`__ methods is very fast compared to custom formatting and parsing. + +A related change is that instead of storing start and end times of each executed +item in output.xml, we nowadays store their start and elapsed times. Elapsed times +are represented as floats denoting seconds. Having elapsed times directly available +is a lot more convenient than calculating them based on start and end times. +Storing start and elapsed times also takes less space than storing start and end times. + +As the result of these changes, times are available in the result model and in +output.xml in higher precision than earlier. Earlier times were stored in millisecond +granularity, but nowadays they use microseconds. Logs and reports still use milliseconds, +but that can be changed in the future if there are needs. + +Changes to output.xml are backwards incompatible and affect all external tools +that process timestamps. This is discussed more in `Changes to output.xml`_ +section below along with other output.xml changes. + +.. _datetime: https://docs.python.org/3/library/datetime.html#datetime-objects +.. _timedelta: https://docs.python.org/3/library/datetime.html#timedelta-objects +.. _#4765: https://github.com/robotframework/robotframework/issues/4765 +.. _ISO 8601: https://en.wikipedia.org/wiki/ISO_8601 +__ https://docs.python.org/3/library/datetime.html#datetime.datetime.isoformat +__ https://docs.python.org/3/library/datetime.html#datetime.datetime.fromisoformat + +Dark mode support to report and log +----------------------------------- + +Report and log got a new dark mode (`#3725`_). It is enabled automatically based +on browser and operating system preferences, but there is also a toggle to +switch between the modes. + +Backwards incompatible changes +============================== + +Python 3.6 and 3.7 are no longer supported +------------------------------------------ + +Robot Framework 7.0 requires Python 3.8 or newer (`#4294`_). The last version +that supports Python 3.6 and 3.7 is Robot Framework 6.1.1. + +Changes to output.xml +--------------------- + +The output.xml file has changed in different ways making Robot Framework 7.0 +incompatible with external tools processing output.xml files until these tools +are updated. We try to avoid this kind of breaking changes, but in this case +especially the changes to timestamps were considered so important that we +eventually would have needed to do them anyway. + +Due to the changes being relatively big, it can take some time before external +tools are updated. To allow users to take Robot Framework 7.0 into use also +if they depend on an incompatible tool, it is possible to use the new +`--legacy-output` option both as part of execution and with the Rebot tool +to generate output.xml files that are compatible with older versions. + +Timestamp related changes +~~~~~~~~~~~~~~~~~~~~~~~~~ + +The biggest changes in output.xml are related to timestamps (`#4258`_). +With earlier versions start and end times of executed items, as well as timestamps +of the logged messages, were stored using a custom `YYYYMMDD HH:MM:SS.mmm` format, +but nowadays the format is `ISO 8601`_ compatible `YYYY-MM-DDTHH:MM:SS.mmmmmm`. +In addition to that, instead of saving start and end times to `starttime` and +`endtime` attributes and message times to `timestamp`, start and elapsed times +are now stored to `start` and `elapsed` attributes and message times to `time`. + +Examples: + +.. code:: xml + + + Hello world! + + + + Hello world! + + +The new format is standard compliant, contains more detailed times, makes the elapsed +time directly available and makes the `` elements over 10% shorter. +These are all great benefits, but we are still sorry for all the extra work +this causes for those developing tools that process output.xml files. + +Keyword name related changes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +How keyword names are stored in output.xml has changed slightly (`#4884`_). +With each executed keywords we store both the name of the keyword and the name +of the library or resource file containing it. Earlier the latter was stored to +attribute `library` also with resource files, but nowadays the attribute is generic +`owner`. In addition to `owner` being a better name in general, it also +matches the new `owner` attribute keywords in the result model have. + +Another change is that the original name stored with keywords using embedded +arguments is nowadays in `source_name` attribute when it used to be in `sourcename`. +This change was done to make the attribute consistent with the attribute in +the result model. + +Examples: + +.. code:: xml + + + ... + ... + + + ... + ... + +Other changes +~~~~~~~~~~~~~ + +Nowadays keywords and control structures can have a message. Messages are represented +as the text of the `` element, and they have been present already earlier with +tests and suites. Related to this, control structured cannot anymore have ``. +(`#4883`_) + +These changes should not cause problems for tools processing output.xml files, +but storing messages with each failed keyword and control structure may +increase the output.xml size. + +Schema updates +~~~~~~~~~~~~~~ + +The output.xml schema has been updated and can be found via +https://github.com/robotframework/robotframework/tree/master/doc/schema/. + +Changes to result model +----------------------- + +There have been some changes to the result model that unfortunately affect +external tools using it. The main motivation for these changes has been +cleaning up the model before creating a JSON representation for it (`#4847`_). + +Changes related to keyword names +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The biggest changes are related to keyword names (`#4884`_). Earlier `Keyword` +objects had a `name` attribute that contained the full keyword name like +`BuiltIn.Log`. The actual keyword name and the name of the library or resource +file that the keyword belonged to were in `kwname` and `libname` attributes, +respectively. In addition to these, keywords using embedded arguments also had +a `sourcename` attribute containing the original keyword name. + +Due to reasons explained in `#4884`_, the following changes have been made +in Robot Framework 7.0: + +- Old `kwname` is renamed to `name`. This is consistent with the execution side `Keyword`. +- Old `libname` is renamed to generic `owner`. +- New `full_name` is introduced to replace the old `name`. +- `sourcename` is renamed to `source_name`. +- `kwname`, `libname` and `sourcename` are preserved as properties. They are considered + deprecated, but accessing them does not cause a deprecation warning yet. + +The backwards incompatible part of this change is changing the meaning of the +`name` attribute. It used to be a read-only property yielding the full name +like `BuiltIn.Log`, but now it is a normal attribute that contains just the actual +keyword name like `Log`. All other old attributes have been preserved as properties +and code using them does not need to be updated immediately. + +Deprecated attributes have been removed +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The following attributes that were deprecated already in Robot Framework 4.0 +have been removed (`#4846`_): + +- `TestSuite.keywords`. Use `TestSuite.setup` and `TestSuite.teardown` instead. +- `TestCase.keywords`. Use `TestCase.body`, `TestCase.setup` and `TestCase.teardown` instead. +- `Keyword.keywords`. Use `Keyword.body` and `Keyword.teardown` instead. +- `Keyword.children`. Use `Keyword.body` and `Keyword.teardown` instead. +- `TestCase.critical`. The whole criticality concept has been removed. + +Additionally, `TestSuite.keywords` and `TestCase.keywords` have been removed +from the execution model. + +Changes to parsing model +------------------------ + +There have been some changes also to the parsing model: + +- The node representing the deprecated `[Return]` setting has been renamed from + `Return` to `ReturnSetting`. At the same time, the node representing the + `RETURN` statement has been renamed from `ReturnStatement` to `Return` (`#4939`_). + + To ease transition, `ReturnSetting` has existed as an alias for `Return` starting + from Robot Framework 6.1 (`#4656`_) and `ReturnStatement` is preserved as an alias + now. In addition to that, the `ModelVisitor` base class has special handling for + `visit_ReturnSetting` and `visit_ReturnStatement` visitor methods so that they work + correctly with `ReturnSetting` and `ReturnStatement` with Robot Framework 6.1 and + newer. Issue `#4939`_ explains this in more detail and has a concrete example + how to support also older Robot Framework versions. + +- The node representing the `Test Tags` setting as well as the deprecated + `Force Tags` setting has been renamed from `ForceTags` to `TestTags` (`#4385`_). + `ModelVisitor` has special handling for the `visit_ForceTags` method so + that it will continue to work also after the change. + +- The token type used with `AS` (or `WITH NAME`) in library imports has been changed + to `Token.AS` (`#4375`_). `Token.WITH_NAME` still exists as an alias for `Token.AS`. + +- Statement `type` and `tokens` have been moved from `_fields` to `_attributes` (`#4912`_). + This may affect debugging the model. + +.. _#4656: https://github.com/robotframework/robotframework/issues/4656 + +Changes to Libdoc spec files +---------------------------- + +The following deprecated constructs have been removed from Libdoc spec files (`#4667`_): + +- `datatypes` have been removed from XML or JSON spec files. They were deprecated in + favor of `typedocs` already in Robot Framework 5.0 (`#4160`_). +- Type names are not anymore written to XML specs as content of the `` elements. + The name is available as the `name` attribute of `` elements since + Robot Framework 6.1 (`#4538`_). +- `types` and `typedocs` attributes have been removed from arguments in JSON specs. + The `type` attribute introduced in RF 6.1 (`#4538`_) needs to be used instead. + +Libdoc schema files have been updated and can be found via +https://github.com/robotframework/robotframework/tree/master/doc/schema/. + +.. _#4160: https://github.com/robotframework/robotframework/issues/4160 +.. _#4538: https://github.com/robotframework/robotframework/issues/4538 + +Changes to selecting tests with `--suite`, `--test` and `--include` +------------------------------------------------------------------- + +There are two changes related to selecting tests: + +- When using `--test` and `--include` together, tests matching either of them + are selected (`#4721`_). Earlier tests need to match both options to be selected. + +- When selecting a suite using its parent suite as a prefix like `--suite parent.suite`, + the given name must match the full suite name (`#4720`_). Earlier it was enough if + the prefix matched the closest parent or parents. + +Other backwards incompatible changes +------------------------------------ + +- The default value of the `stdin` argument used with `Process` library keyword + has been changed from `subprocess.PIPE` to `None` (`#4103`_). This change ought + to avoid processes hanging in some cases. Those who depend on the old behavior + need to use `stdin=PIPE` explicitly to enable that. + +- When type hints are specified as strings, they must use format `type`, `type[param]`, + `type[p1, p2]` or `t1 | t2` (`#4711`_). Using other formats will cause errors taking + keywords into use. In practice problems occur if the special characters `[`, `]`, `,` + and `|` occur in unexpected places. For example, `arg: "Hello, world!"` will cause + an error due to the comma. + +- `datetime`, `date` and `timedelta` objects are sent over the Remote interface + differently than earlier (`#4784`_). They all used to be converted to strings, but + nowadays `datetime` is sent as-is, `date` is converted to `datetime` and sent like + that, and `timedelta` is converted to a `float` by using `timedelta.total_seconds()`. + +- Argument conversion support with `collections.abc.ByteString` has been removed (`#4983`_). + The reason is that `ByteString` is deprecated and will be removed in Python 3.14. + It has not been too often needed, but if you happen to use it, you can change + `arg: ByteString` to `arg: bytes | bytearray` and the functionality + stays exactly the same. + +- Paths passed to result file related listener version 3 methods like `output_file` + and `log_file` have been changed from strings to `pathlib.Path` objects (`#4988`_). + Most of the time both kinds of paths work interchangeably, so this change is unlikely + to cause issues. If you need to handle these paths as strings, they can be converted + by using `str(path)`. + +- `robot.utils.normalize` does not anymore support bytes (`#4936`_). + +- Deprecated `accept_plain_values` argument has been removed from the + `timestr_to_secs` utility function (`#4861`_). + +Deprecations +============ + +`[Return]` setting +------------------ + +The `[Return]` setting for specifying the return value from user keywords has +been "loudly" deprecated (`#4876`_). It has been "silently" deprecated since +Robot Framework 5.0 when the much more versatile `RETURN` setting was introduced +(`#4078`_), but now using it will cause a deprecation warning. The plan is to +preserve the `[Return]` setting at least until Robot Framework 8.0. + +If you have lot of data that uses `[Return]`, the easiest way to update it is +using the Robotidy_ tool that can convert `[Return]` to `RETURN` automatically. +If you have data that is executed also with Robot Framework versions that do +not support `RETURN`, you can use the `Return From Keyword` keyword instead. +That keyword will eventually be deprecated and removed as well, though. + +.. _#4078: https://github.com/robotframework/robotframework/issues/4078 +.. _Robotidy: https://robotidy.readthedocs.io + +Singular section headers +------------------------ + +Using singular section headers like `*** Test Case ***` or `*** Setting ***` +nowadays causes a deprecation warning (`#4432`_). They were silently deprecated +in Robot Framework 6.0 for reasons explained in issue `#4431`_. + +.. _#4431: https://github.com/robotframework/robotframework/issues/4431 + +Deprecated attributes in parsing, running and result models +----------------------------------------------------------- + +- In the parsing model, `For.variables`, `ForHeader.variables`, `Try.variable` and + `ExceptHeader.variable` attributes have been deprecated in favor of the new `assign` + attribute (`#4708`_). + +- In running and result models, `For.variables` and `TryBranch.variable` have been + deprecated in favor of the new `assign` attribute (`#4708`_). + +- In the result model, control structures like `FOR` were earlier modeled so that they + looked like keywords. Nowadays they are considered totally different objects and + their keyword specific attributes `name`, `kwnane`, `libname`, `doc`, `args`, + `assign`, `tags` and `timeout` have been deprecated (`#4846`_). + +- `starttime`, `endtime` and `elapsed` time attributes in the result model have been + silently deprecated (`#4258`_). Accessing them does not yet cause a deprecation + warning, but users are recommended to use `start_time`, `end_time` and + `elapsed_time` attributes that are available since Robot Framework 6.1. + +- `kwname`, `libname` and `sourcename` attributes used by the `Keyword` object + in the result model have been silently deprecated (`#4884`_). New code should use + `name`, `owner` and `source_name` instead. + +Other deprecated features +------------------------- + +- Using embedded arguments with a variable that has a value not matching custom + embedded argument patterns nowadays causes a deprecation warning (`#4524`_). + Earlier variables used as embedded arguments were always accepted without + validating values. + +- Using `FOR IN ZIP` loops with lists having different lengths without explicitly + using `mode=SHORTEST` has been deprecated (`#4685`_). The strict mode where lengths + must match will be the default mode in the future. + +- Various utility functions in the `robot.utils` package that are no longer used + by Robot Framework itself, including the whole Python 2/3 compatibility layer, + have been deprecated (`#4501`_). If you need some of these utils, you can copy + their code to your own tool or library. This change may affect existing + libraries and tools in the ecosystem. + +- `case_insensitive` and `whitespace_insensitive` arguments used by some + Collections and String library keywords have been deprecated in favor of + `ignore_case` and `ignore_whitespace`. The new arguments were added for + consistency reasons (`#4954`_) and the old arguments will continue to work + for the time being. + +- Passing time as milliseconds to the `elapsed_time_to_string` utility function + has been deprecated (`#4862`_). + +Acknowledgements +================ + +Robot Framework development is sponsored by the `Robot Framework Foundation`_ +and its over 60 member organizations. If your organization is using Robot Framework +and benefiting from it, consider joining the foundation to support its +development as well. + +Robot Framework 7.0 team funded by the foundation consists of `Pekka Klärck`_ and +`Janne Härkönen `_ (part time). +In addition to work done by them, the community has provided some great contributions: + +- `Ygor Pontelo `__ added async support to the + dynamic and hybrid library APIs (`#4803`_) and fixed a bug with handling async + keywords when execution is stopped gracefully (`#4808`_). + +- `Topi 'top1' Tuulensuu `__ fixed a performance regression + when using `Run Keyword` so that the name of the executed keyword contains a variable + (`#4659`_). + +- `Pasi Saikkonen `__ added dark mode to reports + and logs (`#3725`_). + +- `René `__ added return type information to Libdoc's + HTML output (`#3017`_), fixed `DotDict` equality comparisons (`#4956`_) and + helped finalizing the dark mode support (`#3725`_). + +- `Robin `__ added type hints to modules that + did not yet have them under the public `robot.api` package (`#4841`_). + +- `Mark Moberts `__ added case-insensitive list and + dictionary comparison support to the Collections library (`#4343`_). + +- `Daniel Biehl `__ enhanced performance of traversing + the parsing model using `ModelVisitor` (`#4934`_). + +Big thanks to Robot Framework Foundation, to community members listed above, and to +everyone else who has tested preview releases, submitted bug reports, proposed +enhancements, debugged problems, or otherwise helped with Robot Framework 7.0 +development. + +See you at `RoboCon 2024 `__ either onsite or online! + +| `Pekka Klärck`_ +| Robot Framework lead developer + +Full list of fixes and enhancements +=================================== + +.. list-table:: + :header-rows: 1 + + * - ID + - Type + - Priority + - Summary + * - `#3296`_ + - enhancement + - critical + - Support keywords and control structures with listener version 3 + * - `#3761`_ + - enhancement + - critical + - Native `VAR` syntax to create variables inside tests and keywords + * - `#4294`_ + - enhancement + - critical + - Drop Python 3.6 and 3.7 support + * - `#4710`_ + - enhancement + - critical + - Support library keywords with both embedded and normal arguments + * - `#4847`_ + - enhancement + - critical + - Support JSON serialization with result model + * - `#4659`_ + - bug + - high + - Performance regression when using `Run Keyword` and keyword name contains a variable + * - `#4921`_ + - bug + - high + - Log levels don't work correctly with `robot:flatten` + * - `#3725`_ + - enhancement + - high + - Support dark theme with report and log + * - `#4258`_ + - enhancement + - high + - Change timestamps from custom strings to `datetime` in result model and to ISO 8601 format in output.xml + * - `#4374`_ + - enhancement + - high + - Support removing tags set globally by using `-tag` syntax with `[Tags]` setting + * - `#4633`_ + - enhancement + - high + - Automatic argument conversion and validation for `Literal` + * - `#4711`_ + - enhancement + - high + - Support type aliases in formats `'list[int]'` and `'int | float'` in argument conversion + * - `#4803`_ + - enhancement + - high + - Async support to dynamic and hybrid library APIs + * - `#4808`_ + - bug + - medium + - Async keywords are not stopped when execution is stopped gracefully + * - `#4859`_ + - bug + - medium + - Parsing errors in reStructuredText files have no source + * - `#4880`_ + - bug + - medium + - Initially empty test fails even if pre-run modifier adds content to it + * - `#4886`_ + - bug + - medium + - `Set Variable If` is slow if it has several conditions + * - `#4898`_ + - bug + - medium + - Resolving special variables can fail with confusing message + * - `#4915`_ + - bug + - medium + - `cached_property` attributes are called when importing library + * - `#4924`_ + - bug + - medium + - WHILE `on_limit` missing from listener v2 attributes + * - `#4926`_ + - bug + - medium + - WHILE and TRY content are not removed with `--removekeywords all` + * - `#4945`_ + - bug + - medium + - `TypedDict` with forward references do not work in argument conversion + * - `#4956`_ + - bug + - medium + - DotDict behaves inconsistent on equality checks. `x == y` != `not x != y` and not `x != y` == `not x == y` + * - `#4964`_ + - bug + - medium + - Variables set using `Set Suite Variable` with `children=True` cannot be properly overwritten + * - `#4980`_ + - bug + - medium + - DateTime library uses deprecated `datetime.utcnow()` + * - `#4999`_ + - bug + - medium + - XML Library: Double namespace during Element To String + * - `#5005`_ + - bug + - medium + - `Log Variables` should not consume iterables + * - `#3017`_ + - enhancement + - medium + - Add return type to Libdoc specs and HTML output + * - `#4103`_ + - enhancement + - medium + - Process: Change the default `stdin` behavior from `subprocess.PIPE` to `None` + * - `#4302`_ + - enhancement + - medium + - Remove `Reserved` library + * - `#4343`_ + - enhancement + - medium + - Collections: Support case-insensitive list and dictionary comparisons + * - `#4375`_ + - enhancement + - medium + - Change token type of `AS` (or `WITH NAME`) used with library imports to `Token.AS` + * - `#4385`_ + - enhancement + - medium + - Change the parsing model object produced by `Test Tags` (and `Force Tags`) to `TestTags` + * - `#4432`_ + - enhancement + - medium + - Loudly deprecate singular section headers + * - `#4501`_ + - enhancement + - medium + - Loudly deprecate old Python 2/3 compatibility layer and other deprecated utils + * - `#4524`_ + - enhancement + - medium + - Loudly deprecate variables used as embedded arguments not matching custom patterns + * - `#4545`_ + - enhancement + - medium + - Support creating assigned variable name based on another variable like `${${var}} = Keyword` + * - `#4667`_ + - enhancement + - medium + - Remove deprecated constructs from Libdoc spec files + * - `#4685`_ + - enhancement + - medium + - Deprecate `SHORTEST` mode being default with `FOR IN ZIP` loops + * - `#4708`_ + - enhancement + - medium + - Use `assing`, not `variable`, with FOR and TRY/EXCEPT model objects when referring to assigned variables + * - `#4720`_ + - enhancement + - medium + - Require `--suite parent.suite` to match the full suite name + * - `#4721`_ + - enhancement + - medium + - Change behavior of `--test` and `--include` so that they are cumulative + * - `#4747`_ + - enhancement + - medium + - Support `[Setup]` with user keywords + * - `#4784`_ + - enhancement + - medium + - Remote: Enhance `datetime`, `date` and `timedelta` conversion + * - `#4841`_ + - enhancement + - medium + - Add typing to all modules under `robot.api` + * - `#4846`_ + - enhancement + - medium + - Result model: Loudly deprecate not needed attributes and remove already deprecated ones + * - `#4872`_ + - enhancement + - medium + - Control continue-on-failure mode by using recursive and non-recursive tags together + * - `#4876`_ + - enhancement + - medium + - Loudly deprecate `[Return]` setting + * - `#4877`_ + - enhancement + - medium + - XML: Support ignoring element order with `Elements Should Be Equal` + * - `#4883`_ + - enhancement + - medium + - Result model: Add `message` to keywords and control structures and remove `doc` from controls + * - `#4884`_ + - enhancement + - medium + - Result model: Enhance storing keyword name + * - `#4896`_ + - enhancement + - medium + - Support `separator=` configuration option with scalar variables in Variables section + * - `#4903`_ + - enhancement + - medium + - Support argument conversion and named arguments with dynamic variable files + * - `#4905`_ + - enhancement + - medium + - Support creating variable name based on another variable like `${${VAR}}` in Variables section + * - `#4910`_ + - enhancement + - medium + - Make listener v3 the default listener API + * - `#4912`_ + - enhancement + - medium + - Parsing model: Move `type` and `tokens` from `_fields` to `_attributes` + * - `#4930`_ + - enhancement + - medium + - BuiltIn: New `Reset Log Level` keyword for resetting the log level to the original value + * - `#4939`_ + - enhancement + - medium + - Parsing model: Rename `Return` to `ReturnSetting` and `ReturnStatement` to `Return` + * - `#4942`_ + - enhancement + - medium + - Add public argument conversion API for libraries and other tools + * - `#4952`_ + - enhancement + - medium + - Collections: Make `ignore_order` and `ignore_keys` recursive + * - `#4960`_ + - enhancement + - medium + - Support integer conversion with strings representing whole number floats like `'1.0'` and `'2e10'` + * - `#4976`_ + - enhancement + - medium + - Support string `SELF` (case-insenstive) when library registers itself as listener + * - `#4979`_ + - enhancement + - medium + - Add `robot.result.TestSuite.to/from_xml` methods + * - `#4982`_ + - enhancement + - medium + - DateTime: Support `datetime.date` as an input format with date related keywords + * - `#4983`_ + - enhancement + - medium + - Type conversion: Remove support for deprecated `ByteString` + * - `#5000`_ + - enhancement + - medium + - Nicer API for setting keyword call arguments programmatically + * - `#4934`_ + - --- + - medium + - Enhance performance of visiting parsing model + * - `#4621`_ + - bug + - low + - OperatingSystem library docs have broken link / title + * - `#4798`_ + - bug + - low + - `--removekeywords passed` doesn't remove test setup and teardown + * - `#4867`_ + - bug + - low + - Original order of dictionaries is not preserved when they are pretty printed in log messages + * - `#4870`_ + - bug + - low + - User keyword teardown missing from running model JSON schema + * - `#4904`_ + - bug + - low + - Importing static variable file with arguments does not fail + * - `#4913`_ + - bug + - low + - Trace log level logs arguments twice for embedded arguments + * - `#4927`_ + - bug + - low + - WARN level missing from the log level selector in log.html + * - `#4967`_ + - bug + - low + - Variables are not resolved in keyword name in WUKS error message + * - `#4861`_ + - enhancement + - low + - Remove deprecated `accept_plain_values` from `timestr_to_secs` utility function + * - `#4862`_ + - enhancement + - low + - Deprecate `elapsed_time_to_string` accepting time as milliseconds + * - `#4864`_ + - enhancement + - low + - Process: Make warning about processes hanging if output buffers get full more visible + * - `#4885`_ + - enhancement + - low + - Add `full_name` to replace `longname` to suite and test objects + * - `#4900`_ + - enhancement + - low + - Make keywords and control structures in log look more like original data + * - `#4922`_ + - enhancement + - low + - Change the log level of `Set Log Level` message from INFO to DEBUG + * - `#4933`_ + - enhancement + - low + - Type conversion: Ignore hyphens when matching enum members + * - `#4935`_ + - enhancement + - low + - Use `casefold`, not `lower`, when comparing strings case-insensitively + * - `#4936`_ + - enhancement + - low + - Remove bytes support from `robot.utils.normalize` function + * - `#4954`_ + - enhancement + - low + - Collections and String: Add `ignore_case` as alias for `case_insensitive` + * - `#4958`_ + - enhancement + - low + - Document `robot_running` and `dry_run_active` properties of the BuiltIn library in the User Guide + * - `#4975`_ + - enhancement + - low + - Support `times` and `x` suffixes with `WHILE` limit to make it more compatible with `Wait Until Keyword Succeeds` + * - `#4988`_ + - enhancement + - low + - Change paths passed to listener v3 methods to `pathlib.Path` instances + +Altogether 88 issues. View on the `issue tracker `__. + +.. _#3296: https://github.com/robotframework/robotframework/issues/3296 +.. _#3761: https://github.com/robotframework/robotframework/issues/3761 +.. _#4294: https://github.com/robotframework/robotframework/issues/4294 +.. _#4710: https://github.com/robotframework/robotframework/issues/4710 +.. _#4847: https://github.com/robotframework/robotframework/issues/4847 +.. _#4659: https://github.com/robotframework/robotframework/issues/4659 +.. _#4921: https://github.com/robotframework/robotframework/issues/4921 +.. _#3725: https://github.com/robotframework/robotframework/issues/3725 +.. _#4258: https://github.com/robotframework/robotframework/issues/4258 +.. _#4374: https://github.com/robotframework/robotframework/issues/4374 +.. _#4633: https://github.com/robotframework/robotframework/issues/4633 +.. _#4711: https://github.com/robotframework/robotframework/issues/4711 +.. _#4803: https://github.com/robotframework/robotframework/issues/4803 +.. _#4808: https://github.com/robotframework/robotframework/issues/4808 +.. _#4859: https://github.com/robotframework/robotframework/issues/4859 +.. _#4880: https://github.com/robotframework/robotframework/issues/4880 +.. _#4886: https://github.com/robotframework/robotframework/issues/4886 +.. _#4898: https://github.com/robotframework/robotframework/issues/4898 +.. _#4915: https://github.com/robotframework/robotframework/issues/4915 +.. _#4924: https://github.com/robotframework/robotframework/issues/4924 +.. _#4926: https://github.com/robotframework/robotframework/issues/4926 +.. _#4945: https://github.com/robotframework/robotframework/issues/4945 +.. _#4956: https://github.com/robotframework/robotframework/issues/4956 +.. _#4964: https://github.com/robotframework/robotframework/issues/4964 +.. _#4980: https://github.com/robotframework/robotframework/issues/4980 +.. _#4999: https://github.com/robotframework/robotframework/issues/4999 +.. _#5005: https://github.com/robotframework/robotframework/issues/5005 +.. _#3017: https://github.com/robotframework/robotframework/issues/3017 +.. _#4103: https://github.com/robotframework/robotframework/issues/4103 +.. _#4302: https://github.com/robotframework/robotframework/issues/4302 +.. _#4343: https://github.com/robotframework/robotframework/issues/4343 +.. _#4375: https://github.com/robotframework/robotframework/issues/4375 +.. _#4385: https://github.com/robotframework/robotframework/issues/4385 +.. _#4432: https://github.com/robotframework/robotframework/issues/4432 +.. _#4501: https://github.com/robotframework/robotframework/issues/4501 +.. _#4524: https://github.com/robotframework/robotframework/issues/4524 +.. _#4545: https://github.com/robotframework/robotframework/issues/4545 +.. _#4667: https://github.com/robotframework/robotframework/issues/4667 +.. _#4685: https://github.com/robotframework/robotframework/issues/4685 +.. _#4708: https://github.com/robotframework/robotframework/issues/4708 +.. _#4720: https://github.com/robotframework/robotframework/issues/4720 +.. _#4721: https://github.com/robotframework/robotframework/issues/4721 +.. _#4747: https://github.com/robotframework/robotframework/issues/4747 +.. _#4784: https://github.com/robotframework/robotframework/issues/4784 +.. _#4841: https://github.com/robotframework/robotframework/issues/4841 +.. _#4846: https://github.com/robotframework/robotframework/issues/4846 +.. _#4872: https://github.com/robotframework/robotframework/issues/4872 +.. _#4876: https://github.com/robotframework/robotframework/issues/4876 +.. _#4877: https://github.com/robotframework/robotframework/issues/4877 +.. _#4883: https://github.com/robotframework/robotframework/issues/4883 +.. _#4884: https://github.com/robotframework/robotframework/issues/4884 +.. _#4896: https://github.com/robotframework/robotframework/issues/4896 +.. _#4903: https://github.com/robotframework/robotframework/issues/4903 +.. _#4905: https://github.com/robotframework/robotframework/issues/4905 +.. _#4910: https://github.com/robotframework/robotframework/issues/4910 +.. _#4912: https://github.com/robotframework/robotframework/issues/4912 +.. _#4930: https://github.com/robotframework/robotframework/issues/4930 +.. _#4939: https://github.com/robotframework/robotframework/issues/4939 +.. _#4942: https://github.com/robotframework/robotframework/issues/4942 +.. _#4952: https://github.com/robotframework/robotframework/issues/4952 +.. _#4960: https://github.com/robotframework/robotframework/issues/4960 +.. _#4976: https://github.com/robotframework/robotframework/issues/4976 +.. _#4979: https://github.com/robotframework/robotframework/issues/4979 +.. _#4982: https://github.com/robotframework/robotframework/issues/4982 +.. _#4983: https://github.com/robotframework/robotframework/issues/4983 +.. _#5000: https://github.com/robotframework/robotframework/issues/5000 +.. _#4934: https://github.com/robotframework/robotframework/issues/4934 +.. _#4621: https://github.com/robotframework/robotframework/issues/4621 +.. _#4798: https://github.com/robotframework/robotframework/issues/4798 +.. _#4867: https://github.com/robotframework/robotframework/issues/4867 +.. _#4870: https://github.com/robotframework/robotframework/issues/4870 +.. _#4904: https://github.com/robotframework/robotframework/issues/4904 +.. _#4913: https://github.com/robotframework/robotframework/issues/4913 +.. _#4927: https://github.com/robotframework/robotframework/issues/4927 +.. _#4967: https://github.com/robotframework/robotframework/issues/4967 +.. _#4861: https://github.com/robotframework/robotframework/issues/4861 +.. _#4862: https://github.com/robotframework/robotframework/issues/4862 +.. _#4864: https://github.com/robotframework/robotframework/issues/4864 +.. _#4885: https://github.com/robotframework/robotframework/issues/4885 +.. _#4900: https://github.com/robotframework/robotframework/issues/4900 +.. _#4922: https://github.com/robotframework/robotframework/issues/4922 +.. _#4933: https://github.com/robotframework/robotframework/issues/4933 +.. _#4935: https://github.com/robotframework/robotframework/issues/4935 +.. _#4936: https://github.com/robotframework/robotframework/issues/4936 +.. _#4954: https://github.com/robotframework/robotframework/issues/4954 +.. _#4958: https://github.com/robotframework/robotframework/issues/4958 +.. _#4975: https://github.com/robotframework/robotframework/issues/4975 +.. _#4988: https://github.com/robotframework/robotframework/issues/4988 diff --git a/test/markups/README.long.rst.html b/test/markups/README.long.rst.html new file mode 100644 index 00000000..7f9e1ac3 --- /dev/null +++ b/test/markups/README.long.rst.html @@ -0,0 +1,1303 @@ +

      Robot Framework 7.0

      +

      Robot Framework 7.0 is a new major release with highly enhanced listener interface +(#3296), native VAR syntax for creating variables (#3761), support for +mixing embedded and normal arguments with library keywords (#4710), JSON +result format (#4847) and various other enhancements and bug fixes.

      +

      Robot Framework 7.0 was released on Thursday January 11, 2024. Questions and comments +related to the release can be sent to the #devel channel on Robot Framework Slack +and possible bugs submitted to the issue tracker.

      +
      + +
      + +

      Installation

      +

      If you have pip installed, just run

      +
      +pip install --upgrade robotframework
      +
      +

      to install the latest available stable release or use

      +
      +pip install robotframework==7.0
      +
      +

      to install exactly this version. Alternatively you can download the package +from PyPI and install it manually. For more details and other installation +approaches, see the installation instructions.

      + +

      Most important enhancements

      +
      +

      If you are interested to learn more about the new features in Robot Framework 7.0, +join the RoboCon conference in February, 2024. Pekka Klärck, Robot Framework +lead developer, will go through the key features briefly in the onsite conference +in Helsinki and more thoroughly in the online edition.

      +

      The conference has also dozens of other great talks, workshops and a lot of +possibilities to meet other community members as well as developers of various +tools and libraries in the ecosystem. All profits from the conference will be +used for future Robot Framework development.

      +
      + +

      Listener enhancements

      +

      Robot Framework's listener interface is a very powerful mechanism to get +notifications about various events during execution and it also allows modifying +data and results on the fly. It is not typically directly used by normal Robot +Framework users, but they are likely to use tools that use it internally. +The listener API has been significantly enhanced making it possible +to create even more powerful and interesting tools in the future.

      + +

      Support keywords and control structures with listener version 3

      +

      The major limitation with the listener API has been that the listener +API version 2 only supports getting notifications, not making modifications, +and that the more powerful listener API version 3 has only supported suites +and tests/tasks.

      +

      The biggest enhancement in the whole Robot Framework 7.0 is that the listener +version 3 has been extended to support also keywords and control structures (#3296). +For example, a listener having the following methods prints information +about started keywords and ended WHILE loops:

      +
      +from robot import result, running
      +
      +
      +def start_keyword(data: running.Keyword, result: result.Keyword):
      +    print(f"Keyword '{result.full_name}' used on line {data.lineno} started.")
      +
      +
      +def end_while(data: running.While, result: result.While):
      +    print(f"WHILE loop on line {data.lineno} ended with status {result.status} "
      +          f"after {len(result.body)} iterations.")
      +
      +

      With keyword calls it is possible to also get more information about the actually +executed keyword. For example, the following listener prints some information +about the executed keyword and the library it belongs to:

      +
      +from robot.running import Keyword as KeywordData, LibraryKeyword
      +from robot.result import Keyword as KeywordResult
      +
      +
      +def start_library_keyword(data: KeywordData,
      +                          implementation: LibraryKeyword,
      +                          result: KeywordResult):
      +    library = implementation.owner
      +    print(f"Keyword '{implementation.name}' is implemented in library "
      +          f"'{library.name}' at '{implementation.source}' on line "
      +          f"{implementation.lineno}. The library has {library.scope.name} "
      +          f"scope and the current instance is {library.instance}.")
      +
      +

      As the above example already illustrated, it is even possible to get an access to +the actual library instance. This means that listeners can inspect the library +state and also modify it. With user keywords it is even possible to modify +the keyword itself or, via the owner resource file, any other keyword in +the resource file.

      +

      Listeners can also modify results if needed. Possible use cases include hiding +sensitive information and adding more details to results based on external sources.

      +

      Notice that although listener can change status of any executed keyword or control +structure, that does not directly affect the status of the executed test. In general +listeners cannot directly fail keywords so that execution would stop or handle +failures so that execution would continue. This kind of functionality may be +added in the future if there are needs.

      +

      The new listener version 3 methods are so powerful and versatile that going them +through thoroughly in these release notes is not possible. For more examples, you +can see the acceptance tests using the methods in various interesting and even +crazy ways.

      + +

      Listener version 3 is the default listener version

      +

      Earlier listeners always needed to specify the API version they used with the +ROBOT_LISTENER_API_VERSION attribute. Now that the listener version 3 got +the new methods, it is considered so much more powerful than the version 2 +that it was made the default listener version (#4910).

      +

      The listener version 2 continues to work, but using it requires specifying +the listener version as earlier. The are no plans to deprecate the listener +version 2, but we nevertheless highly recommend using the version 3 whenever +possible.

      + +

      Libraries can register themselves as listeners by using string SELF +

      +

      Listeners are typically enabled from the command line, but libraries +can register listeners as well. Often libraries themselves want to act +as listeners, and that has earlier required using self.ROBOT_LIBRARY_LISTENER = self +in the __init__ method. Robot Framework 7.0 makes it possible to use string +SELF (case-insensitive) for this purpose as well (#4910), which means +that a listener can be specified as a class attribute and not only in __init__. +This is especially convenient when using the @library decorator:

      +
      +from robot.api.deco import keyword, library
      +
      +
      +@library(listener='SELF')
      +class Example:
      +
      +    def start_suite(self, data, result):
      +        ...
      +
      +    @keyword
      +    def example(self, arg):
      +        ...
      +
      + +

      Nicer API for modifying keyword arguments

      +

      Modifying keyword call arguments programmatically has been made more convenient +(#5000). This enhancement eases modifying arguments using the new listener +version 3 start/end_keyword methods.

      + +

      Paths are passed to version 3 listeners as pathlib.Path objects

      +

      Listeners have methods like output_file and log_file that are called when +result files are ready so that they get the file path as an argument. Earlier +paths were strings, but nowadays listener version 3 methods get them as +more convenient pathlib.Path objects.

      + +

      Native VAR syntax

      +

      The new VAR syntax (#3761) makes it possible to create local variables +as well as global, suite and test/task scoped variables dynamically during +execution. The motivation is to have a more convenient syntax than using +the Set Variable keyword for creating local variables and to unify +the syntax for creating variables in different scopes. Except for the mandatory +VAR marker, the syntax is also the same as when creating variables in the +Variables section. The syntax is best explained with examples:

      +
      +*** Test Cases ***
      +Example
      +    # Create a local variable `${local}` with a value `value`.
      +    VAR    ${local}    value
      +
      +    # Create a variable that is available throughout the whole suite.
      +    # Supported scopes are GLOBAL, SUITE, TEST, TASK and LOCAL (default).
      +    VAR    ${suite}    value    scope=SUITE
      +
      +    # Validate created variables.
      +    Should Be Equal    ${local}    value
      +    Should Be Equal    ${suite}    value
      +
      +Example continued
      +    # Suite level variables are seen also by subsequent tests.
      +    Should Be Equal    ${suite}    value
      +
      +

      When creating ${scalar} variables having long values, it is possible to split +the value to multiple lines. Lines are joined together with a space by default, +but that can be changed with the separator configuration option. Similarly as +in the Variables section, it is possible to create also @{list} and &{dict} +variables. Unlike in the Variables section, variables can be created conditionally +using IF/ELSE structures:

      +
      +*** Test Cases ***
      +Long value
      +    VAR    ${long}
      +    ...    This value is rather long.
      +    ...    It has been split to multiple lines.
      +    ...    Parts will be joined together with a space.
      +
      +Multiline
      +    VAR    ${multiline}
      +    ...    First line.
      +    ...    Second line.
      +    ...    Last line.
      +    ...    separator=\n
      +
      +List
      +    # Creates a list with three items.
      +    VAR    @{list}    a    b    c
      +
      +Dictionary
      +    # Creates a dictionary with two items.
      +    VAR    &{dict}    key=value    second=item
      +
      +Normal IF
      +    IF    1 > 0
      +        VAR    ${x}    true value
      +    ELSE
      +        VAR    ${x}    false value
      +    END
      +
      +Inline IF
      +    IF    1 > 0    VAR    ${x}    true value    ELSE    VAR    ${x}    false value
      +
      + +

      Mixed argument support with library keywords

      +

      User keywords got support to use both embedded and normal arguments in Robot +Framework 6.1 (#4234) and now that support has been added also to library keywords +(#4710). The syntax works so, that if a function or method implementing a keyword +accepts more arguments than there are embedded arguments, the remaining arguments +can be passed in as normal arguments. This is illustrated by the following example +keyword:

      +
      +@keyword('Number of ${animals} should be')
      +def example(animals, count):
      +    ...
      +
      +

      The above keyword could be used like this:

      +
      +*** Test Cases ***
      +Example
      +    Number of horses should be    2
      +    Number of horses should be    count=2
      +    Number of dogs should be    3
      +
      + +

      JSON result format

      +

      Robot Framework 6.1 added support to convert test/task data to JSON and back +and Robot Framework 7.0 extends the JSON serialization support to execution results +(#4847). One of the core use cases for data serialization was making it easy to +transfer data between process and machines, and now it is also easy to pass results +back.

      +

      Also the built-in Rebot tool that is used for post-processing results supports +JSON files both in output and in input. Creating JSON output files is done using +the normal --output option so that the specified file has a .json extension:

      +
      +rebot --output output.json output.xml
      +
      +

      When reading output files, JSON files are automatically recognized by +the extension:

      +
      +rebot output.json
      +rebot output1.json output2.json
      +
      +

      When combining or merging results, it is possible to mix JSON and XML files:

      +
      +rebot output1.xml output2.json
      +rebot --merge original.xml rerun.json
      +
      +

      The JSON output file structure is documented in the result.json schema file.

      +

      The plan is to enhance the support for JSON output files in the future so that +they could be created already during execution. For more details see issue #3423.

      + +

      Argument conversion enhancements

      +

      Automatic argument conversion is a very powerful feature that library developers +can use to avoid converting arguments manually and to get more useful Libdoc +documentation. There are two important new enhancements to it.

      + +

      Support for Literal +

      +

      In Python, the Literal type makes it possible to type arguments so that type +checkers accept only certain values. For example, this function only accepts +strings x, y and z:

      +
      +def example(arg: Literal['x', 'y', 'z']):
      +    ...
      +
      +

      Robot Framework has been enhanced so that it validates that an argument having +a Literal type can only be used with the specified values (#4633). For +example, using a keyword with the above implementation with a value xxx would +fail.

      +

      In addition to validation, arguments are also converted. For example, if an +argument accepts Literal[-1, 0, 1], used arguments are converted to +integers and then validated. In addition to that, string matching is case, space, +underscore and hyphen insensitive. In all cases exact matches have a precedence +and the argument that is passed to the keyword is guaranteed to be in the exact +format used with Literal.

      +

      Literal conversion is in many ways similar to Enum conversion that Robot +Framework has supported for long time. Enum conversion has benefits like +being able to use a custom documentation and it is typically better when using +the same type multiple times. In simple cases being able to just use +arg: Literal[...] without defining a new type is very convenient, though.

      + +

      Support "stringified" types like 'list[int]' and 'int | float' +

      +

      Python's type hinting syntax has evolved so that generic types can be parameterized +like list[int] (new in Python 3.9) and unions written as int | float +(new in Python 3.10). Using these constructs with older Python versions causes +errors, but Python type checkers support also "stringified" type hints like +'list[int]' and 'int | float' that work regardless the Python version.

      +

      Support for stringified generics and unions has now been added also to +Robot Framework's argument conversion (#4711). For example, +the following typing now also works with Python 3.8:

      +
      +def example(a: 'list[int]', b: 'int | float'):
      +    ...
      +
      +

      These stringified types are also compatible with the Remote library API and other +scenarios where using actual types is not possible.

      + +

      Tags set globally can be removed using -tag syntax

      +

      Individual tests and keywords can nowadays remove tags that have been set in +the Settings section with Test Tags or Keyword Tags settings by using +the -tag syntax with their own [Tags] setting (#4374). For example, +tests T1 and T3 below get tags all and most, and test T2 gets +tags all and one:

      +
      +*** Settings ***
      +Test Tags      all    most
      +
      +*** Test Cases ***
      +T1
      +    No Operation
      +T2
      +    [Tags]    one    -most
      +    No Operation
      +T3
      +    No Operation
      +
      +

      With tests it is possible to get the same effect by using the Default Tags +setting and overriding it where needed. That syntax is, however, considered +deprecated (#4365) and using the new -tag syntax is recommended. With +keywords there was no similar functionality earlier.

      + +

      Dynamic and hybrid library APIs support asynchronous execution

      +

      Dynamic and hybrid libraries nowadays support asynchronous execution. +In practice the special methods like get_keyword_names and run_keyword +can be implemented as async methods (#4803).

      +

      Async support was added to the normal static library API in Robot Framework +6.1 (#4089). A bug related to handling asynchronous keywords if execution +is stopped gracefully has also been fixed (#4808).

      + +

      Timestamps in result model and output.xml use standard format

      +

      Timestamps used in the result model and stored to the output.xml file used custom +format like 20231107 19:57:01.123 earlier. Non-standard formats are seldom +a good idea, and in this case parsing the custom format turned out to be slow +as well.

      +

      Nowadays the result model stores timestamps as standard datetime objects and +elapsed times as a timedelta (#4258). This makes creating timestamps and +operating with them more convenient and considerably faster. The new objects can +be accessed via start_time, end_time and elapsed_time attributes that were +added as forward compatibility already in Robot Framework 6.1 (#4765). +Old information is still available via the old starttime, endtime and +elapsedtime attributes, so this change is fully backwards compatible.

      +

      The timestamp format in output.xml has also been changed from the custom +YYYYMMDD HH:MM:SS.mmm format to ISO 8601 compatible +YYYY-MM-DDTHH:MM:SS.mmmmmm. Using a standard format makes it +easier to process output.xml files, but this change also has big positive +performance effect. Now that the result model stores timestamps as datetime +objects, formatting and parsing them with the available isoformat() and +fromisoformat() methods is very fast compared to custom formatting and parsing.

      +

      A related change is that instead of storing start and end times of each executed +item in output.xml, we nowadays store their start and elapsed times. Elapsed times +are represented as floats denoting seconds. Having elapsed times directly available +is a lot more convenient than calculating them based on start and end times. +Storing start and elapsed times also takes less space than storing start and end times.

      +

      As the result of these changes, times are available in the result model and in +output.xml in higher precision than earlier. Earlier times were stored in millisecond +granularity, but nowadays they use microseconds. Logs and reports still use milliseconds, +but that can be changed in the future if there are needs.

      +

      Changes to output.xml are backwards incompatible and affect all external tools +that process timestamps. This is discussed more in Changes to output.xml +section below along with other output.xml changes.

      + +

      Dark mode support to report and log

      +

      Report and log got a new dark mode (#3725). It is enabled automatically based +on browser and operating system preferences, but there is also a toggle to +switch between the modes.

      + +

      Backwards incompatible changes

      + +

      Python 3.6 and 3.7 are no longer supported

      +

      Robot Framework 7.0 requires Python 3.8 or newer (#4294). The last version +that supports Python 3.6 and 3.7 is Robot Framework 6.1.1.

      + +

      Changes to output.xml

      +

      The output.xml file has changed in different ways making Robot Framework 7.0 +incompatible with external tools processing output.xml files until these tools +are updated. We try to avoid this kind of breaking changes, but in this case +especially the changes to timestamps were considered so important that we +eventually would have needed to do them anyway.

      +

      Due to the changes being relatively big, it can take some time before external +tools are updated. To allow users to take Robot Framework 7.0 into use also +if they depend on an incompatible tool, it is possible to use the new +--legacy-output option both as part of execution and with the Rebot tool +to generate output.xml files that are compatible with older versions.

      + +

      Timestamp related changes

      +

      The biggest changes in output.xml are related to timestamps (#4258). +With earlier versions start and end times of executed items, as well as timestamps +of the logged messages, were stored using a custom YYYYMMDD HH:MM:SS.mmm format, +but nowadays the format is ISO 8601 compatible YYYY-MM-DDTHH:MM:SS.mmmmmm. +In addition to that, instead of saving start and end times to starttime and +endtime attributes and message times to timestamp, start and elapsed times +are now stored to start and elapsed attributes and message times to time.

      +

      Examples:

      +
      +<!-- Old format -->
      +<msg timestamp="20231108 15:36:34.278" level="INFO">Hello world!</msg>
      +<status status="PASS" starttime="20231108 15:37:35.046" endtime="20231108 15:37:35.046"/>
      +
      +<!-- New format -->
      +<msg time="2023-11-08T15:36:34.278343" level="INFO">Hello world!</msg>
      +<status status="PASS" start="2023-11-08T15:37:35.046153" elapsed="0.000161"/>
      +
      +

      The new format is standard compliant, contains more detailed times, makes the elapsed +time directly available and makes the <status> elements over 10% shorter. +These are all great benefits, but we are still sorry for all the extra work +this causes for those developing tools that process output.xml files.

      + +

      Keyword name related changes

      +

      How keyword names are stored in output.xml has changed slightly (#4884). +With each executed keywords we store both the name of the keyword and the name +of the library or resource file containing it. Earlier the latter was stored to +attribute library also with resource files, but nowadays the attribute is generic +owner. In addition to owner being a better name in general, it also +matches the new owner attribute keywords in the result model have.

      +

      Another change is that the original name stored with keywords using embedded +arguments is nowadays in source_name attribute when it used to be in sourcename. +This change was done to make the attribute consistent with the attribute in +the result model.

      +

      Examples:

      +
      +<!-- Old format -->
      +<kw name="Log" library="BuiltIn">...</kw>
      +<kw name="Number of horses should be" sourcename="Number of ${animals} should be" library="my_resource">...</kw>
      +
      +<!-- New format -->
      +<kw name="Log" owner="BuiltIn">...</kw>
      +<kw name="Number of horses should be" source_name="Number of ${animals} should be" owner="my_resource">...</kw>
      +
      + +

      Other changes

      +

      Nowadays keywords and control structures can have a message. Messages are represented +as the text of the <status> element, and they have been present already earlier with +tests and suites. Related to this, control structured cannot anymore have <doc>. +(#4883)

      +

      These changes should not cause problems for tools processing output.xml files, +but storing messages with each failed keyword and control structure may +increase the output.xml size.

      + +

      Schema updates

      +

      The output.xml schema has been updated and can be found via +https://github.com/robotframework/robotframework/tree/master/doc/schema/.

      + +

      Changes to result model

      +

      There have been some changes to the result model that unfortunately affect +external tools using it. The main motivation for these changes has been +cleaning up the model before creating a JSON representation for it (#4847).

      + +

      Changes related to keyword names

      +

      The biggest changes are related to keyword names (#4884). Earlier Keyword +objects had a name attribute that contained the full keyword name like +BuiltIn.Log. The actual keyword name and the name of the library or resource +file that the keyword belonged to were in kwname and libname attributes, +respectively. In addition to these, keywords using embedded arguments also had +a sourcename attribute containing the original keyword name.

      +

      Due to reasons explained in #4884, the following changes have been made +in Robot Framework 7.0:

      +
        +
      • Old kwname is renamed to name. This is consistent with the execution side Keyword.
      • +
      • Old libname is renamed to generic owner.
      • +
      • New full_name is introduced to replace the old name.
      • +
      • +sourcename is renamed to source_name.
      • +
      • +kwname, libname and sourcename are preserved as properties. They are considered +deprecated, but accessing them does not cause a deprecation warning yet.
      • +
      +

      The backwards incompatible part of this change is changing the meaning of the +name attribute. It used to be a read-only property yielding the full name +like BuiltIn.Log, but now it is a normal attribute that contains just the actual +keyword name like Log. All other old attributes have been preserved as properties +and code using them does not need to be updated immediately.

      + +

      Deprecated attributes have been removed

      +

      The following attributes that were deprecated already in Robot Framework 4.0 +have been removed (#4846):

      +
        +
      • +TestSuite.keywords. Use TestSuite.setup and TestSuite.teardown instead.
      • +
      • +TestCase.keywords. Use TestCase.body, TestCase.setup and TestCase.teardown instead.
      • +
      • +Keyword.keywords. Use Keyword.body and Keyword.teardown instead.
      • +
      • +Keyword.children. Use Keyword.body and Keyword.teardown instead.
      • +
      • +TestCase.critical. The whole criticality concept has been removed.
      • +
      +

      Additionally, TestSuite.keywords and TestCase.keywords have been removed +from the execution model.

      + +

      Changes to parsing model

      +

      There have been some changes also to the parsing model:

      +
        +
      • +

        The node representing the deprecated [Return] setting has been renamed from +Return to ReturnSetting. At the same time, the node representing the +RETURN statement has been renamed from ReturnStatement to Return (#4939).

        +

        To ease transition, ReturnSetting has existed as an alias for Return starting +from Robot Framework 6.1 (#4656) and ReturnStatement is preserved as an alias +now. In addition to that, the ModelVisitor base class has special handling for +visit_ReturnSetting and visit_ReturnStatement visitor methods so that they work +correctly with ReturnSetting and ReturnStatement with Robot Framework 6.1 and +newer. Issue #4939 explains this in more detail and has a concrete example +how to support also older Robot Framework versions.

        +
      • +
      • +

        The node representing the Test Tags setting as well as the deprecated +Force Tags setting has been renamed from ForceTags to TestTags (#4385). +ModelVisitor has special handling for the visit_ForceTags method so +that it will continue to work also after the change.

        +
      • +
      • +

        The token type used with AS (or WITH NAME) in library imports has been changed +to Token.AS (#4375). Token.WITH_NAME still exists as an alias for Token.AS.

        +
      • +
      • +

        Statement type and tokens have been moved from _fields to _attributes (#4912). +This may affect debugging the model.

        +
      • +
      + +

      Changes to Libdoc spec files

      +

      The following deprecated constructs have been removed from Libdoc spec files (#4667):

      +
        +
      • +datatypes have been removed from XML or JSON spec files. They were deprecated in +favor of typedocs already in Robot Framework 5.0 (#4160).
      • +
      • Type names are not anymore written to XML specs as content of the <type> elements. +The name is available as the name attribute of <type> elements since +Robot Framework 6.1 (#4538).
      • +
      • +types and typedocs attributes have been removed from arguments in JSON specs. +The type attribute introduced in RF 6.1 (#4538) needs to be used instead.
      • +
      +

      Libdoc schema files have been updated and can be found via +https://github.com/robotframework/robotframework/tree/master/doc/schema/.

      + +

      Changes to selecting tests with --suite, --test and --include

      +

      There are two changes related to selecting tests:

      +
        +
      • When using --test and --include together, tests matching either of them +are selected (#4721). Earlier tests need to match both options to be selected.
      • +
      • When selecting a suite using its parent suite as a prefix like --suite parent.suite, +the given name must match the full suite name (#4720). Earlier it was enough if +the prefix matched the closest parent or parents.
      • +
      + +

      Other backwards incompatible changes

      +
        +
      • The default value of the stdin argument used with Process library keyword +has been changed from subprocess.PIPE to None (#4103). This change ought +to avoid processes hanging in some cases. Those who depend on the old behavior +need to use stdin=PIPE explicitly to enable that.
      • +
      • When type hints are specified as strings, they must use format type, type[param], +type[p1, p2] or t1 | t2 (#4711). Using other formats will cause errors taking +keywords into use. In practice problems occur if the special characters [, ], , +and | occur in unexpected places. For example, arg: "Hello, world!" will cause +an error due to the comma.
      • +
      • +datetime, date and timedelta objects are sent over the Remote interface +differently than earlier (#4784). They all used to be converted to strings, but +nowadays datetime is sent as-is, date is converted to datetime and sent like +that, and timedelta is converted to a float by using timedelta.total_seconds().
      • +
      • Argument conversion support with collections.abc.ByteString has been removed (#4983). +The reason is that ByteString is deprecated and will be removed in Python 3.14. +It has not been too often needed, but if you happen to use it, you can change +arg: ByteString to arg: bytes | bytearray and the functionality +stays exactly the same.
      • +
      • Paths passed to result file related listener version 3 methods like output_file +and log_file have been changed from strings to pathlib.Path objects (#4988). +Most of the time both kinds of paths work interchangeably, so this change is unlikely +to cause issues. If you need to handle these paths as strings, they can be converted +by using str(path).
      • +
      • +robot.utils.normalize does not anymore support bytes (#4936).
      • +
      • Deprecated accept_plain_values argument has been removed from the +timestr_to_secs utility function (#4861).
      • +
      + +

      Deprecations

      + +

      [Return] setting

      +

      The [Return] setting for specifying the return value from user keywords has +been "loudly" deprecated (#4876). It has been "silently" deprecated since +Robot Framework 5.0 when the much more versatile RETURN setting was introduced +(#4078), but now using it will cause a deprecation warning. The plan is to +preserve the [Return] setting at least until Robot Framework 8.0.

      +

      If you have lot of data that uses [Return], the easiest way to update it is +using the Robotidy tool that can convert [Return] to RETURN automatically. +If you have data that is executed also with Robot Framework versions that do +not support RETURN, you can use the Return From Keyword keyword instead. +That keyword will eventually be deprecated and removed as well, though.

      + +

      Singular section headers

      +

      Using singular section headers like *** Test Case *** or *** Setting *** +nowadays causes a deprecation warning (#4432). They were silently deprecated +in Robot Framework 6.0 for reasons explained in issue #4431.

      + +

      Deprecated attributes in parsing, running and result models

      +
        +
      • In the parsing model, For.variables, ForHeader.variables, Try.variable and +ExceptHeader.variable attributes have been deprecated in favor of the new assign +attribute (#4708).
      • +
      • In running and result models, For.variables and TryBranch.variable have been +deprecated in favor of the new assign attribute (#4708).
      • +
      • In the result model, control structures like FOR were earlier modeled so that they +looked like keywords. Nowadays they are considered totally different objects and +their keyword specific attributes name, kwnane, libname, doc, args, +assign, tags and timeout have been deprecated (#4846).
      • +
      • +starttime, endtime and elapsed time attributes in the result model have been +silently deprecated (#4258). Accessing them does not yet cause a deprecation +warning, but users are recommended to use start_time, end_time and +elapsed_time attributes that are available since Robot Framework 6.1.
      • +
      • +kwname, libname and sourcename attributes used by the Keyword object +in the result model have been silently deprecated (#4884). New code should use +name, owner and source_name instead.
      • +
      + +

      Other deprecated features

      +
        +
      • Using embedded arguments with a variable that has a value not matching custom +embedded argument patterns nowadays causes a deprecation warning (#4524). +Earlier variables used as embedded arguments were always accepted without +validating values.
      • +
      • Using FOR IN ZIP loops with lists having different lengths without explicitly +using mode=SHORTEST has been deprecated (#4685). The strict mode where lengths +must match will be the default mode in the future.
      • +
      • Various utility functions in the robot.utils package that are no longer used +by Robot Framework itself, including the whole Python 2/3 compatibility layer, +have been deprecated (#4501). If you need some of these utils, you can copy +their code to your own tool or library. This change may affect existing +libraries and tools in the ecosystem.
      • +
      • +case_insensitive and whitespace_insensitive arguments used by some +Collections and String library keywords have been deprecated in favor of +ignore_case and ignore_whitespace. The new arguments were added for +consistency reasons (#4954) and the old arguments will continue to work +for the time being.
      • +
      • Passing time as milliseconds to the elapsed_time_to_string utility function +has been deprecated (#4862).
      • +
      + +

      Acknowledgements

      +

      Robot Framework development is sponsored by the Robot Framework Foundation +and its over 60 member organizations. If your organization is using Robot Framework +and benefiting from it, consider joining the foundation to support its +development as well.

      +

      Robot Framework 7.0 team funded by the foundation consists of Pekka Klärck and +Janne Härkönen (part time). +In addition to work done by them, the community has provided some great contributions:

      +
        +
      • +Ygor Pontelo added async support to the +dynamic and hybrid library APIs (#4803) and fixed a bug with handling async +keywords when execution is stopped gracefully (#4808).
      • +
      • +Topi 'top1' Tuulensuu fixed a performance regression +when using Run Keyword so that the name of the executed keyword contains a variable +(#4659).
      • +
      • +Pasi Saikkonen added dark mode to reports +and logs (#3725).
      • +
      • +René added return type information to Libdoc's +HTML output (#3017), fixed DotDict equality comparisons (#4956) and +helped finalizing the dark mode support (#3725).
      • +
      • +Robin added type hints to modules that +did not yet have them under the public robot.api package (#4841).
      • +
      • +Mark Moberts added case-insensitive list and +dictionary comparison support to the Collections library (#4343).
      • +
      • +Daniel Biehl enhanced performance of traversing +the parsing model using ModelVisitor (#4934).
      • +
      +

      Big thanks to Robot Framework Foundation, to community members listed above, and to +everyone else who has tested preview releases, submitted bug reports, proposed +enhancements, debugged problems, or otherwise helped with Robot Framework 7.0 +development.

      +

      See you at RoboCon 2024 either onsite or online!

      +
      + +
      Robot Framework lead developer
      +
      + +

      Full list of fixes and enhancements

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IDTypePrioritySummary
      #3296enhancementcriticalSupport keywords and control structures with listener version 3
      #3761enhancementcriticalNative VAR syntax to create variables inside tests and keywords
      #4294enhancementcriticalDrop Python 3.6 and 3.7 support
      #4710enhancementcriticalSupport library keywords with both embedded and normal arguments
      #4847enhancementcriticalSupport JSON serialization with result model
      #4659bughighPerformance regression when using Run Keyword and keyword name contains a variable
      #4921bughighLog levels don't work correctly with robot:flatten +
      #3725enhancementhighSupport dark theme with report and log
      #4258enhancementhighChange timestamps from custom strings to datetime in result model and to ISO 8601 format in output.xml
      #4374enhancementhighSupport removing tags set globally by using -tag syntax with [Tags] setting
      #4633enhancementhighAutomatic argument conversion and validation for Literal +
      #4711enhancementhighSupport type aliases in formats 'list[int]' and 'int | float' in argument conversion
      #4803enhancementhighAsync support to dynamic and hybrid library APIs
      #4808bugmediumAsync keywords are not stopped when execution is stopped gracefully
      #4859bugmediumParsing errors in reStructuredText files have no source
      #4880bugmediumInitially empty test fails even if pre-run modifier adds content to it
      #4886bugmedium +Set Variable If is slow if it has several conditions
      #4898bugmediumResolving special variables can fail with confusing message
      #4915bugmedium +cached_property attributes are called when importing library
      #4924bugmediumWHILE on_limit missing from listener v2 attributes
      #4926bugmediumWHILE and TRY content are not removed with --removekeywords all +
      #4945bugmedium +TypedDict with forward references do not work in argument conversion
      #4956bugmediumDotDict behaves inconsistent on equality checks. x == y != not x != y and not x != y == not x == y +
      #4964bugmediumVariables set using Set Suite Variable with children=True cannot be properly overwritten
      #4980bugmediumDateTime library uses deprecated datetime.utcnow() +
      #4999bugmediumXML Library: Double namespace during Element To String
      #5005bugmedium +Log Variables should not consume iterables
      #3017enhancementmediumAdd return type to Libdoc specs and HTML output
      #4103enhancementmediumProcess: Change the default stdin behavior from subprocess.PIPE to None +
      #4302enhancementmediumRemove Reserved library
      #4343enhancementmediumCollections: Support case-insensitive list and dictionary comparisons
      #4375enhancementmediumChange token type of AS (or WITH NAME) used with library imports to Token.AS +
      #4385enhancementmediumChange the parsing model object produced by Test Tags (and Force Tags) to TestTags +
      #4432enhancementmediumLoudly deprecate singular section headers
      #4501enhancementmediumLoudly deprecate old Python 2/3 compatibility layer and other deprecated utils
      #4524enhancementmediumLoudly deprecate variables used as embedded arguments not matching custom patterns
      #4545enhancementmediumSupport creating assigned variable name based on another variable like ${${var}} = Keyword +
      #4667enhancementmediumRemove deprecated constructs from Libdoc spec files
      #4685enhancementmediumDeprecate SHORTEST mode being default with FOR IN ZIP loops
      #4708enhancementmediumUse assing, not variable, with FOR and TRY/EXCEPT model objects when referring to assigned variables
      #4720enhancementmediumRequire --suite parent.suite to match the full suite name
      #4721enhancementmediumChange behavior of --test and --include so that they are cumulative
      #4747enhancementmediumSupport [Setup] with user keywords
      #4784enhancementmediumRemote: Enhance datetime, date and timedelta conversion
      #4841enhancementmediumAdd typing to all modules under robot.api +
      #4846enhancementmediumResult model: Loudly deprecate not needed attributes and remove already deprecated ones
      #4872enhancementmediumControl continue-on-failure mode by using recursive and non-recursive tags together
      #4876enhancementmediumLoudly deprecate [Return] setting
      #4877enhancementmediumXML: Support ignoring element order with Elements Should Be Equal +
      #4883enhancementmediumResult model: Add message to keywords and control structures and remove doc from controls
      #4884enhancementmediumResult model: Enhance storing keyword name
      #4896enhancementmediumSupport separator=<value> configuration option with scalar variables in Variables section
      #4903enhancementmediumSupport argument conversion and named arguments with dynamic variable files
      #4905enhancementmediumSupport creating variable name based on another variable like ${${VAR}} in Variables section
      #4910enhancementmediumMake listener v3 the default listener API
      #4912enhancementmediumParsing model: Move type and tokens from _fields to _attributes +
      #4930enhancementmediumBuiltIn: New Reset Log Level keyword for resetting the log level to the original value
      #4939enhancementmediumParsing model: Rename Return to ReturnSetting and ReturnStatement to Return +
      #4942enhancementmediumAdd public argument conversion API for libraries and other tools
      #4952enhancementmediumCollections: Make ignore_order and ignore_keys recursive
      #4960enhancementmediumSupport integer conversion with strings representing whole number floats like '1.0' and '2e10' +
      #4976enhancementmediumSupport string SELF (case-insenstive) when library registers itself as listener
      #4979enhancementmediumAdd robot.result.TestSuite.to/from_xml methods
      #4982enhancementmediumDateTime: Support datetime.date as an input format with date related keywords
      #4983enhancementmediumType conversion: Remove support for deprecated ByteString +
      #5000enhancementmediumNicer API for setting keyword call arguments programmatically
      #4934---mediumEnhance performance of visiting parsing model
      #4621buglowOperatingSystem library docs have broken link / title
      #4798buglow +--removekeywords passed doesn't remove test setup and teardown
      #4867buglowOriginal order of dictionaries is not preserved when they are pretty printed in log messages
      #4870buglowUser keyword teardown missing from running model JSON schema
      #4904buglowImporting static variable file with arguments does not fail
      #4913buglowTrace log level logs arguments twice for embedded arguments
      #4927buglowWARN level missing from the log level selector in log.html
      #4967buglowVariables are not resolved in keyword name in WUKS error message
      #4861enhancementlowRemove deprecated accept_plain_values from timestr_to_secs utility function
      #4862enhancementlowDeprecate elapsed_time_to_string accepting time as milliseconds
      #4864enhancementlowProcess: Make warning about processes hanging if output buffers get full more visible
      #4885enhancementlowAdd full_name to replace longname to suite and test objects
      #4900enhancementlowMake keywords and control structures in log look more like original data
      #4922enhancementlowChange the log level of Set Log Level message from INFO to DEBUG
      #4933enhancementlowType conversion: Ignore hyphens when matching enum members
      #4935enhancementlowUse casefold, not lower, when comparing strings case-insensitively
      #4936enhancementlowRemove bytes support from robot.utils.normalize function
      #4954enhancementlowCollections and String: Add ignore_case as alias for case_insensitive +
      #4958enhancementlowDocument robot_running and dry_run_active properties of the BuiltIn library in the User Guide
      #4975enhancementlowSupport times and x suffixes with WHILE limit to make it more compatible with Wait Until Keyword Succeeds +
      #4988enhancementlowChange paths passed to listener v3 methods to pathlib.Path instances
      +

      Altogether 88 issues. View on the issue tracker.

      \ No newline at end of file diff --git a/test/markups/README.mediawiki.html b/test/markups/README.mediawiki.html index fcc56bfe..e92accfd 100644 --- a/test/markups/README.mediawiki.html +++ b/test/markups/README.mediawiki.html @@ -15,18 +15,20 @@

      -Red Bridge (JRuby Embed)

      +Red Bridge (JRuby Embed) + +

      one-<two

      a-b
      -

      JRuby has long had a private embedding API, which was closely tied to the runtime's internals and therefore changed frequently as JRuby evolved. Since version 1.4, however, we have also provided a more stable public API, known as Red Bridge or JRuby Embed. Existing Java programs written to the legacy API should still work, but we strongly recommend Red Bridge for all new projects.

      -Features of Red Bridge

      +Features of Red Bridge +

      Red Bridge consists of two layers: Embed Core on the bottom, and implementations of JSR223 and BSF on top. Embed Core is JRuby-specific, and can take advantage of much of JRuby's power. JSR223 and BSF are more general interfaces that provide a common ground across scripting languages. @@ -46,14 +48,16 @@

      -Previous Embedding JRuby Page

      +Previous Embedding JRuby Page +

      We recommend using Embed Core; however, if you're maintaining code that uses the old API, you can find its documentation on the legacy embedding[1] page.

      -References

      +References +

      1. diff --git a/test/markups/README.pod.html b/test/markups/README.pod.html index a62c65db..63caf6bc 100644 --- a/test/markups/README.pod.html +++ b/test/markups/README.pod.html @@ -10,7 +10,8 @@

        ABOUT

          -
        • Create a working compiler that understands the majority of the MATLAB/Octave programming language.

          +
        • +

          Create a working compiler that understands the majority of the MATLAB/Octave programming language.

        @@ -21,13 +22,16 @@

        IMPLEMENTATION

          -
        • The first is the parser, located in the src/parser/ directory. The parser proper is composed of three source files, grammar.pg which is a Perl6Grammar file, and actions.pm which is the associated actions file written in NQP, and grammar-oper.pm which is the operator precedence parser. In addition, several helper functions used by the parser are located in src/internals.

          +
        • +

          The first is the parser, located in the src/parser/ directory. The parser proper is composed of three source files, grammar.pg which is a Perl6Grammar file, and actions.pm which is the associated actions file written in NQP, and grammar-oper.pm which is the operator precedence parser. In addition, several helper functions used by the parser are located in src/internals.

        • -
        • The second component is the library of builtin functions in the src/builtins/ directory. These functions are, currently, written primarily in PIR. Function names prefixed with an underscore are "private" functions for use with the parser. Other functions should have names which are the same as names for regular MATLAB or Octave functions, since they will be available to the HLL. These are also separated into different namespaces depending on visibility and utility.

          +
        • +

          The second component is the library of builtin functions in the src/builtins/ directory. These functions are, currently, written primarily in PIR. Function names prefixed with an underscore are "private" functions for use with the parser. Other functions should have names which are the same as names for regular MATLAB or Octave functions, since they will be available to the HLL. These are also separated into different namespaces depending on visibility and utility.

        • -
        • A number of library functions are written in M, or mostly M with some inline PIR code in toolbox/.

          +
        • +

          A number of library functions are written in M, or mostly M with some inline PIR code in toolbox/.

        diff --git a/test/markups/README.rst.html b/test/markups/README.rst.html index 6accfdf6..f87a8065 100644 --- a/test/markups/README.rst.html +++ b/test/markups/README.rst.html @@ -2,7 +2,7 @@

        Header 1

        Subtitle

        Example text.

        -

        Table of Contents

        +

        Table of Contents

        • Header 2
        • Field list
        • @@ -102,7 +102,8 @@

          Header 2

          -Coverity Scan Build Status + +Coverity Scan Build Status Coverity Scan Build Status @@ -133,5 +134,4 @@

          Field list

          someone@somewhere.org

          Press Ctrl+C to quit

          - -

          RAW HTML!

          p {color:blue;} \ No newline at end of file +

          RAW HTML!

          p {color:blue;} \ No newline at end of file diff --git a/test/markups/README.toc.asciidoc.html b/test/markups/README.toc.asciidoc.html index e6f598cf..4e32869a 100644 --- a/test/markups/README.toc.asciidoc.html +++ b/test/markups/README.toc.asciidoc.html @@ -43,4 +43,4 @@

          Subsection B-2

        - + \ No newline at end of file diff --git a/test/markups/README.toc.rst.html b/test/markups/README.toc.rst.html index 4890e99b..c5b3ecbb 100644 --- a/test/markups/README.toc.rst.html +++ b/test/markups/README.toc.rst.html @@ -1,5 +1,5 @@
        -

        Contents

        +

        Contents

        • 1   Introduction
            @@ -29,4 +29,4 @@

            1.2   What is it good for?

          pycparser is unique in the sense that it's written in pure Python - a very high level language that's easy to experiment with and tweak. To people familiar -with Lex and Yacc, pycparser's code will be simple to understand.

          +with Lex and Yacc, pycparser's code will be simple to understand.

          \ No newline at end of file From 2e6d49d58f2bc9397dc2ebe7d2aa474353357402 Mon Sep 17 00:00:00 2001 From: Justin Kenyon Date: Mon, 17 Jun 2024 11:07:35 -0400 Subject: [PATCH 66/97] Update HISTORY.md --- HISTORY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index ace518d1..0e01f49c 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,4 +1,4 @@ -## 5.0.0 - 2024-06-12 +## 5.0.0 - 2024-06-17 * Drop support for Ruby versions < 3 * Bump nokogiri from 1.8.1 to 1.16.5 * Bump nokogiri-diff from 0.2.0 to 0.3.0 From aa09a8a8d4d8fa7752500fa063802e4aba89cda3 Mon Sep 17 00:00:00 2001 From: Justin Kenyon Date: Mon, 17 Jun 2024 11:18:26 -0400 Subject: [PATCH 67/97] Update activesupport to 7.1.3.4 --- .gitignore | 1 + github-markup.gemspec | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c93c0b18..5e84e6f2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ Gemfile.lock .buildpath *~ vendor/ +.DS_Store diff --git a/github-markup.gemspec b/github-markup.gemspec index 4818706d..260df18c 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -21,7 +21,7 @@ Gem::Specification.new do |s| s.require_paths = %w[lib] s.add_development_dependency 'rake', '~> 12' - s.add_development_dependency 'activesupport', '~> 4.0' + s.add_development_dependency 'activesupport', '~> 7.1.3.4' s.add_development_dependency 'minitest', '~> 5.4', '>= 5.4.3' s.add_development_dependency 'html-pipeline', '~> 1.0' s.add_development_dependency 'sanitize', '>= 4.6.3' From 26b77f5d7c86c2f6f307491e946035424ae62e9e Mon Sep 17 00:00:00 2001 From: Justin Kenyon Date: Mon, 17 Jun 2024 11:20:56 -0400 Subject: [PATCH 68/97] update version and history --- HISTORY.md | 3 +++ lib/github-markup.rb | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index 0e01f49c..745a9c1b 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,6 @@ +## 5.0.1 - 2024-06-17 +* Bump activesupport from 4.0 to 7.1.3.4 + ## 5.0.0 - 2024-06-17 * Drop support for Ruby versions < 3 * Bump nokogiri from 1.8.1 to 1.16.5 diff --git a/lib/github-markup.rb b/lib/github-markup.rb index 646e341c..7c36ad17 100644 --- a/lib/github-markup.rb +++ b/lib/github-markup.rb @@ -1,6 +1,6 @@ module GitHub module Markup - VERSION = '5.0.0' + VERSION = '5.0.1' Version = VERSION end end From e6973dfdacfb5d124fc45fdef2a6467d91ac3aa8 Mon Sep 17 00:00:00 2001 From: jmeridth Date: Mon, 17 Jun 2024 10:44:53 -0500 Subject: [PATCH 69/97] chore: add dependabot and update github actions Closes #1756 - [x] update github actions to latest versions - [x] use SHAs instead of tags for github actions, more secure supply chain - [x] add dependabot file grouping minor/patch dependency updates to reduce PRs - [x] remove Gemfile.lock from .gitignore and add it back to source control - this will allow dependabot to detect dependency updates Signed-off-by: jmeridth Co-authored-by: Zack Koppert --- .github/dependabot.yaml | 39 +++++++++++ .github/workflows/ci.yml | 8 +-- .gitignore | 1 - Gemfile.lock | 135 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 178 insertions(+), 5 deletions(-) create mode 100644 .github/dependabot.yaml create mode 100644 Gemfile.lock diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 00000000..802b7513 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,39 @@ +--- +version: 2 +updates: + - package-ecosystem: 'bundler' + directory: '/' + schedule: + interval: 'weekly' + commit-message: + prefix: 'chore(deps)' + groups: + dependencies: + applies-to: version-updates + update-types: + - 'minor' + - 'patch' + - package-ecosystem: 'github-actions' + directory: '/' + schedule: + interval: 'weekly' + commit-message: + prefix: 'chore(deps)' + groups: + dependencies: + applies-to: version-updates + update-types: + - 'minor' + - 'patch' + - package-ecosystem: 'docker' + directory: '/' + schedule: + interval: 'weekly' + commit-message: + prefix: 'chore(deps)' + groups: + dependencies: + applies-to: version-updates + update-types: + - 'minor' + - 'patch' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a25fdefc..e0feed3c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,21 +19,21 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 with: fetch-depth: 10 - - uses: ruby/setup-ruby@v1 + - uses: ruby/setup-ruby@ff740bc00a01b3a50fffc55a1071b1060eeae9dc # v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - - uses: actions/setup-python@v2 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 with: # This should match lib/github/markups.rb GitHub::Markups::MARKUP_RST python-version: '3.x' - - uses: actions/cache@v2 + - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip diff --git a/.gitignore b/.gitignore index 5e84e6f2..eac4d715 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ *.pyc pkg/ .bundle -Gemfile.lock .project .buildpath *~ diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 00000000..225b59a6 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,135 @@ +GIT + remote: https://github.com/gjtorikian/commonmarker.git + revision: 2838ebaa83ee0081d481c21f3bc0e4cb3e8de9da + tag: v0.18.3 + specs: + commonmarker (0.18.3) + ruby-enum (~> 0.5) + +PATH + remote: . + specs: + github-markup (5.0.1) + +GEM + remote: http://rubygems.org/ + specs: + RedCloth (4.3.4) + activesupport (7.1.3.4) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + asciidoctor (2.0.23) + base64 (0.2.0) + bigdecimal (3.1.8) + builder (3.3.0) + cgi (0.4.1) + charlock_holmes (0.7.7) + concurrent-ruby (1.3.3) + connection_pool (2.4.1) + crass (1.0.6) + creole (0.3.8) + drb (2.2.1) + expression_parser (0.9.0) + github-linguist (7.30.0) + cgi + charlock_holmes (~> 0.7.7) + mini_mime (~> 1.0) + rugged (~> 1.0) + html-pipeline (1.11.0) + activesupport (>= 2) + nokogiri (~> 1.4) + htmlentities (4.3.4) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + mini_mime (1.1.5) + minitest (5.23.1) + mutex_m (0.2.0) + nokogiri (1.16.6-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.6-arm-linux) + racc (~> 1.4) + nokogiri (1.16.6-arm64-darwin) + racc (~> 1.4) + nokogiri (1.16.6-x86-linux) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.16.6-x86_64-linux) + racc (~> 1.4) + nokogiri-diff (0.3.0) + nokogiri (~> 1.5) + tdiff (~> 0.4) + org-ruby (0.9.9) + rubypants (~> 0.2) + psych (5.1.2) + stringio + racc (1.8.0) + rake (13.2.1) + rdoc (6.7.0) + psych (>= 4.0.0) + redcarpet (3.6.0) + rexml (3.3.0) + strscan + ruby-enum (0.9.0) + i18n + rubypants (0.7.1) + rugged (1.7.2) + sanitize (6.1.1) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + stringio (3.1.1) + strscan (3.1.0) + tdiff (0.4.0) + twitter-text (1.14.7) + unf (~> 0.1.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.9.1) + wikicloth (0.8.3) + builder + expression_parser + htmlentities + nokogiri + twitter-text + +PLATFORMS + aarch64-linux + arm-linux + arm64-darwin + x86-linux + x86_64-darwin + x86_64-linux + +DEPENDENCIES + RedCloth + activesupport (~> 7.1.3.4) + asciidoctor (~> 2.0.5) + commonmarker! + creole (~> 0.3.6) + github-linguist (>= 7.1.3) + github-markup! + html-pipeline (~> 1.0) + kramdown + minitest (~> 5.4, >= 5.4.3) + nokogiri (~> 1.16.5) + nokogiri-diff (~> 0.3.0) + org-ruby (= 0.9.9) + rake + rdoc (~> 6.7.0) + redcarpet + rexml + sanitize (>= 4.6.3) + twitter-text (~> 1.14) + wikicloth (= 0.8.3) + +BUNDLED WITH + 2.5.9 From 06e35c7cd36c297d220a07118b6b89cc925d0843 Mon Sep 17 00:00:00 2001 From: Justin Kenyon Date: Wed, 19 Jun 2024 15:36:52 -0400 Subject: [PATCH 70/97] Create stale.yml --- .github/workflows/stale.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 00000000..6bf0d0b6 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,27 @@ +# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/actions/stale +name: Mark stale issues and pull requests + +on: + schedule: + - cron: '0 12 * * *' + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + + steps: + - uses: actions/stale@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'Stale issue message' + stale-pr-message: 'Stale pull request message' + stale-issue-label: 'no-issue-activity' + stale-pr-label: 'no-pr-activity' From 2a0c8ddb79d66be5d03e8618896b2f1db89e82a9 Mon Sep 17 00:00:00 2001 From: jmeridth Date: Wed, 19 Jun 2024 15:33:14 -0500 Subject: [PATCH 71/97] chore: use sha instead of tag on stale workflow didn't catch this in #1821 Using SHA instead of tag ensures secure supply chain. Tags are mutable, SHAs are not Signed-off-by: jmeridth --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 6bf0d0b6..6f52b5d0 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -18,7 +18,7 @@ jobs: pull-requests: write steps: - - uses: actions/stale@v5 + - uses: actions/stale@f7176fd3007623b69d27091f9b9d4ab7995f0a06 # v5 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'Stale issue message' From 7e6c70341e46d0212a811a259f4706d88e9629fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jul 2024 00:03:10 +0000 Subject: [PATCH 72/97] chore(deps): bump rexml from 3.3.0 to 3.3.2 in the bundler group Bumps the bundler group with 1 update: [rexml](https://github.com/ruby/rexml). Updates `rexml` from 3.3.0 to 3.3.2 - [Release notes](https://github.com/ruby/rexml/releases) - [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md) - [Commits](https://github.com/ruby/rexml/compare/v3.3.0...v3.3.2) --- updated-dependencies: - dependency-name: rexml dependency-type: direct:production dependency-group: bundler ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 225b59a6..30c4454c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -75,7 +75,7 @@ GEM rdoc (6.7.0) psych (>= 4.0.0) redcarpet (3.6.0) - rexml (3.3.0) + rexml (3.3.2) strscan ruby-enum (0.9.0) i18n From 2b0455a36cda769a2da7df1e29cb77143d1bd3f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Aug 2024 16:46:51 +0000 Subject: [PATCH 73/97] chore(deps): bump rexml from 3.3.2 to 3.3.3 in the bundler group Bumps the bundler group with 1 update: [rexml](https://github.com/ruby/rexml). Updates `rexml` from 3.3.2 to 3.3.3 - [Release notes](https://github.com/ruby/rexml/releases) - [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md) - [Commits](https://github.com/ruby/rexml/compare/v3.3.2...v3.3.3) --- updated-dependencies: - dependency-name: rexml dependency-type: direct:production dependency-group: bundler ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 30c4454c..9a4cdb41 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -75,7 +75,7 @@ GEM rdoc (6.7.0) psych (>= 4.0.0) redcarpet (3.6.0) - rexml (3.3.2) + rexml (3.3.3) strscan ruby-enum (0.9.0) i18n From 83b09f8186a3f364c537726c3cfaa3a62924f8bc Mon Sep 17 00:00:00 2001 From: jmeridth Date: Tue, 6 Aug 2024 15:05:30 -0500 Subject: [PATCH 74/97] fix: ensure rubygems url is using https Fixes https://github.com/github/markup/security/code-scanning/1 `Dependency source URL uses the unencrypted protocol HTTP. Use HTTPS instead.` Signed-off-by: jmeridth --- Gemfile | 2 +- Gemfile.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index fb3c1308..9b317555 100644 --- a/Gemfile +++ b/Gemfile @@ -1,4 +1,4 @@ -source "http://rubygems.org" +source "https://rubygems.org" gemspec gem "redcarpet", :platforms => :ruby diff --git a/Gemfile.lock b/Gemfile.lock index 30c4454c..b6d184d4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -12,7 +12,7 @@ PATH github-markup (5.0.1) GEM - remote: http://rubygems.org/ + remote: https://rubygems.org/ specs: RedCloth (4.3.4) activesupport (7.1.3.4) From 1e2c03935912e5cf4bfb81726f5a9bfe18a86c43 Mon Sep 17 00:00:00 2001 From: jmeridth Date: Tue, 6 Aug 2024 15:24:51 -0500 Subject: [PATCH 75/97] fix: add explicit permissions to ci github action Fixing a code scanning alert Signed-off-by: jmeridth --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e0feed3c..9e8e31dc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,6 +4,9 @@ on: [push, pull_request] env: JRUBY_OPTS: -Xcext.enabled=true +permissions: + contents: read + jobs: build: name: "Test / Ruby ${{ matrix.ruby }}" From 6d287a98bb5a400b780bc9db191899ba442dd6ec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Aug 2024 20:51:15 +0000 Subject: [PATCH 76/97] chore(deps): bump rexml from 3.3.3 to 3.3.6 in the bundler group Bumps the bundler group with 1 update: [rexml](https://github.com/ruby/rexml). Updates `rexml` from 3.3.3 to 3.3.6 - [Release notes](https://github.com/ruby/rexml/releases) - [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md) - [Commits](https://github.com/ruby/rexml/compare/v3.3.3...v3.3.6) --- updated-dependencies: - dependency-name: rexml dependency-type: direct:production dependency-group: bundler ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 6dc75c96..d2c84309 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -75,7 +75,7 @@ GEM rdoc (6.7.0) psych (>= 4.0.0) redcarpet (3.6.0) - rexml (3.3.3) + rexml (3.3.6) strscan ruby-enum (0.9.0) i18n From 2880c2c6d108531a8eed179b369762e0aeaec9ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 11:01:09 +0000 Subject: [PATCH 77/97] chore(deps): bump the dependencies group across 1 directory with 2 updates Bumps the dependencies group with 2 updates in the / directory: [ruby/setup-ruby](https://github.com/ruby/setup-ruby) and [actions/setup-python](https://github.com/actions/setup-python). Updates `ruby/setup-ruby` from 1.180.0 to 1.190.0 - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](https://github.com/ruby/setup-ruby/compare/ff740bc00a01b3a50fffc55a1071b1060eeae9dc...a6e6f86333f0a2523ece813039b8b4be04560854) Updates `actions/setup-python` from 5.1.0 to 5.2.0 - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/82c7e631bb3cdc910f68e0081d67478d79c6982d...f677139bbe7f9c59b41e40162b753c062f5d49a3) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9e8e31dc..3640b8b4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,12 +26,12 @@ jobs: with: fetch-depth: 10 - - uses: ruby/setup-ruby@ff740bc00a01b3a50fffc55a1071b1060eeae9dc # v1 + - uses: ruby/setup-ruby@a6e6f86333f0a2523ece813039b8b4be04560854 # v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 + - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5 with: # This should match lib/github/markups.rb GitHub::Markups::MARKUP_RST python-version: '3.x' From b4f9c54a4b4c117cb315cd0f4df09ffd5a1484b7 Mon Sep 17 00:00:00 2001 From: jmeridth Date: Wed, 4 Sep 2024 15:06:15 -0500 Subject: [PATCH 78/97] chore: add .venv/venv to .gitignore best practices with local python development is to create a virtual environment. The most common are either .venv or venv folders in the root of the repo. We currently install [docutils](https://github.com/github/markup/blob/914839fd31c93b93a8054a3c91fce0906b2d1375/script/bootstrap#L8) via pip (python). - [x] add .venv/venv folders to .gitignore - [x] update README with how to setup locally environment Signed-off-by: jmeridth --- .gitignore | 2 ++ README.md | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/.gitignore b/.gitignore index eac4d715..b0f0821c 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ pkg/ *~ vendor/ .DS_Store +.venv +venv diff --git a/README.md b/README.md index b2bcc809..3aeb7110 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,15 @@ require 'github/markup' GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, "* One\n* Two") ``` +Local Development +----------------- + +```sh +python3 -m venv .venv +source .venv/bin/activate +cd script +./bootstrap +``` Contributing ------------ From bc6e6e36a6cdf5e4cd73f4d3bcfafd05c3e4cb67 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 10:25:23 +0000 Subject: [PATCH 79/97] chore(deps): bump ruby/setup-ruby in the dependencies group Bumps the dependencies group with 1 update: [ruby/setup-ruby](https://github.com/ruby/setup-ruby). Updates `ruby/setup-ruby` from 1.190.0 to 1.191.0 - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](https://github.com/ruby/setup-ruby/compare/a6e6f86333f0a2523ece813039b8b4be04560854...52753b7da854d5c07df37391a986c76ab4615999) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3640b8b4..dd8812d5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: with: fetch-depth: 10 - - uses: ruby/setup-ruby@a6e6f86333f0a2523ece813039b8b4be04560854 # v1 + - uses: ruby/setup-ruby@52753b7da854d5c07df37391a986c76ab4615999 # v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true From 459fb1b32f42e005140979f007ad84ca75e0b7d2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 10:32:15 +0000 Subject: [PATCH 80/97] chore(deps): bump ruby/setup-ruby in the dependencies group Bumps the dependencies group with 1 update: [ruby/setup-ruby](https://github.com/ruby/setup-ruby). Updates `ruby/setup-ruby` from 1.191.0 to 1.193.0 - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](https://github.com/ruby/setup-ruby/compare/52753b7da854d5c07df37391a986c76ab4615999...f321cf5a4d1533575411f8752cf25b86478b0442) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dd8812d5..3ed2585a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: with: fetch-depth: 10 - - uses: ruby/setup-ruby@52753b7da854d5c07df37391a986c76ab4615999 # v1 + - uses: ruby/setup-ruby@f321cf5a4d1533575411f8752cf25b86478b0442 # v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true From af6b5419e67273b90a3db2cdfaeab46f40c2d80c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 10:32:39 +0000 Subject: [PATCH 81/97] chore(deps): bump the dependencies group with 2 updates Bumps the dependencies group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [ruby/setup-ruby](https://github.com/ruby/setup-ruby). Updates `actions/checkout` from 4.1.7 to 4.2.0 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/692973e3d937129bcbf40652eb9f2f61becf3332...d632683dd7b4114ad314bca15554477dd762a938) Updates `ruby/setup-ruby` from 1.193.0 to 1.194.0 - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](https://github.com/ruby/setup-ruby/compare/f321cf5a4d1533575411f8752cf25b86478b0442...c04af2bb7258bb6a03df1d3c1865998ac9390972) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: ruby/setup-ruby dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3ed2585a..effc3f2a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,11 +22,11 @@ jobs: steps: - name: Checkout - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4 with: fetch-depth: 10 - - uses: ruby/setup-ruby@f321cf5a4d1533575411f8752cf25b86478b0442 # v1 + - uses: ruby/setup-ruby@c04af2bb7258bb6a03df1d3c1865998ac9390972 # v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true From 0a930b28d65d8d3bffec77ee3dbaafcb11032d32 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:49:07 +0000 Subject: [PATCH 82/97] chore(deps): bump rexml from 3.3.6 to 3.3.9 in the bundler group Bumps the bundler group with 1 update: [rexml](https://github.com/ruby/rexml). Updates `rexml` from 3.3.6 to 3.3.9 - [Release notes](https://github.com/ruby/rexml/releases) - [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md) - [Commits](https://github.com/ruby/rexml/compare/v3.3.6...v3.3.9) --- updated-dependencies: - dependency-name: rexml dependency-type: direct:production dependency-group: bundler ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index d2c84309..761f6cc0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -75,8 +75,7 @@ GEM rdoc (6.7.0) psych (>= 4.0.0) redcarpet (3.6.0) - rexml (3.3.6) - strscan + rexml (3.3.9) ruby-enum (0.9.0) i18n rubypants (0.7.1) @@ -85,7 +84,6 @@ GEM crass (~> 1.0.2) nokogiri (>= 1.12.0) stringio (3.1.1) - strscan (3.1.0) tdiff (0.4.0) twitter-text (1.14.7) unf (~> 0.1.0) From 57e250f0fb775a154a0184702f310f954b3d5762 Mon Sep 17 00:00:00 2001 From: jmeridth Date: Sun, 3 Nov 2024 22:34:28 -0600 Subject: [PATCH 83/97] fix: stale issue/pr message Signed-off-by: jmeridth --- .github/workflows/stale.yml | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 6f52b5d0..fc5a93dc 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,27 +1,25 @@ -# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. -# -# You can adjust the behavior by modifying this file. -# For more information, see: -# https://github.com/actions/stale name: Mark stale issues and pull requests on: schedule: - - cron: '0 12 * * *' + - cron: "0 12 * * *" jobs: stale: - runs-on: ubuntu-latest permissions: issues: write pull-requests: write steps: - - uses: actions/stale@f7176fd3007623b69d27091f9b9d4ab7995f0a06 # v5 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: 'Stale issue message' - stale-pr-message: 'Stale pull request message' - stale-issue-label: 'no-issue-activity' - stale-pr-label: 'no-pr-activity' + - uses: actions/stale@f7176fd3007623b69d27091f9b9d4ab7995f0a06 # v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: > + This issue has been automatically marked as stale because it has not + had recent activity. It will be closed if no further activity occurs. + Thank you for your contributions. + stale-pr-message: > + This pull request has been automatically marked as stale because it has not + had recent activity. It will be closed if no further activity occurs. + Thank you for your contributions. From 371da086ed849e8a3b255eed932b040ef7ca2042 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 10:49:14 +0000 Subject: [PATCH 84/97] chore(deps): bump the dependencies group across 1 directory with 4 updates Bumps the dependencies group with 4 updates in the / directory: [actions/checkout](https://github.com/actions/checkout), [ruby/setup-ruby](https://github.com/ruby/setup-ruby), [actions/setup-python](https://github.com/actions/setup-python) and [actions/cache](https://github.com/actions/cache). Updates `actions/checkout` from 4.2.0 to 4.2.2 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/d632683dd7b4114ad314bca15554477dd762a938...11bd71901bbe5b1630ceea73d27597364c9af683) Updates `ruby/setup-ruby` from 1.194.0 to 1.199.0 - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](https://github.com/ruby/setup-ruby/compare/c04af2bb7258bb6a03df1d3c1865998ac9390972...7d3497fd78c07c0d84ebafa58d8dac60cd1f0763) Updates `actions/setup-python` from 5.2.0 to 5.3.0 - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/f677139bbe7f9c59b41e40162b753c062f5d49a3...0b93645e9fea7318ecaed2b359559ac225c90a2b) Updates `actions/cache` from 4.0.2 to 4.1.2 - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/0c45773b623bea8c8e75f6c82b208c3cf94ea4f9...6849a6489940f00c2f30c0fb92c6274307ccb58a) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dependencies - dependency-name: ruby/setup-ruby dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index effc3f2a..0a661e9b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,21 +22,21 @@ jobs: steps: - name: Checkout - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: fetch-depth: 10 - - uses: ruby/setup-ruby@c04af2bb7258bb6a03df1d3c1865998ac9390972 # v1 + - uses: ruby/setup-ruby@7d3497fd78c07c0d84ebafa58d8dac60cd1f0763 # v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5 with: # This should match lib/github/markups.rb GitHub::Markups::MARKUP_RST python-version: '3.x' - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4 + - uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip From 5767386b134d0b70634a2187001beadafaf39a3c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 10:49:47 +0000 Subject: [PATCH 85/97] chore(deps): bump the dependencies group across 1 directory with 6 updates Updates the requirements on [org-ruby](https://github.com/wallyqs/org-ruby), [creole](https://github.com/minad/creole), [activesupport](https://github.com/rails/rails), [minitest](https://github.com/minitest/minitest), [sanitize](https://github.com/rgrove/sanitize) and [nokogiri](https://github.com/sparklemotion/nokogiri) to permit the latest version. Updates `org-ruby` from 0.9.9 to 0.9.12 - [Changelog](https://github.com/wallyqs/org-ruby/blob/master/History.org) - [Commits](https://github.com/wallyqs/org-ruby/compare/version-0.9.9...version-0.9.12) Updates `creole` from 0.3.8 to 0.5.0 - [Changelog](https://github.com/minad/creole/blob/master/CHANGES) - [Commits](https://github.com/minad/creole/compare/0.3.8...v0.5.0) Updates `activesupport` from 7.1.3.4 to 7.1.5 - [Release notes](https://github.com/rails/rails/releases) - [Changelog](https://github.com/rails/rails/blob/v7.2.2/activesupport/CHANGELOG.md) - [Commits](https://github.com/rails/rails/compare/v7.1.3.4...v7.1.5) Updates `minitest` from 5.23.1 to 5.25.1 - [Changelog](https://github.com/minitest/minitest/blob/master/History.rdoc) - [Commits](https://github.com/minitest/minitest/compare/v5.23.1...v5.25.1) Updates `sanitize` from 6.1.1 to 6.1.3 - [Release notes](https://github.com/rgrove/sanitize/releases) - [Changelog](https://github.com/rgrove/sanitize/blob/main/HISTORY.md) - [Commits](https://github.com/rgrove/sanitize/compare/v6.1.1...v6.1.3) Updates `nokogiri` from 1.16.6 to 1.16.7 - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.16.6...v1.16.7) --- updated-dependencies: - dependency-name: org-ruby dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dependencies - dependency-name: creole dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: activesupport dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dependencies - dependency-name: minitest dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: sanitize dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dependencies - dependency-name: nokogiri dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dependencies ... Signed-off-by: dependabot[bot] --- Gemfile | 4 ++-- Gemfile.lock | 40 +++++++++++++++++++++++----------------- github-markup.gemspec | 2 +- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/Gemfile b/Gemfile index 9b317555..b2983b9b 100644 --- a/Gemfile +++ b/Gemfile @@ -8,8 +8,8 @@ gem "RedCloth" # however we want to bump up to this version since this has a security patch gem "commonmarker", git: "https://github.com/gjtorikian/commonmarker.git", tag: "v0.18.3" gem "rdoc", "~> 6.7.0" -gem "org-ruby", "= 0.9.9" -gem "creole", "~>0.3.6" +gem "org-ruby", "0.9.12" +gem "creole", "~>0.5.0" gem "wikicloth", "=0.8.3" gem "twitter-text", "~> 1.14" gem "asciidoctor", "~> 2.0.5" diff --git a/Gemfile.lock b/Gemfile.lock index 761f6cc0..5912d3b1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -15,26 +15,30 @@ GEM remote: https://rubygems.org/ specs: RedCloth (4.3.4) - activesupport (7.1.3.4) + activesupport (7.1.5) base64 + benchmark (>= 0.3) bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + logger (>= 1.4.2) minitest (>= 5.1) mutex_m + securerandom (>= 0.3) tzinfo (~> 2.0) asciidoctor (2.0.23) base64 (0.2.0) + benchmark (0.3.0) bigdecimal (3.1.8) builder (3.3.0) cgi (0.4.1) charlock_holmes (0.7.7) - concurrent-ruby (1.3.3) + concurrent-ruby (1.3.4) connection_pool (2.4.1) crass (1.0.6) - creole (0.3.8) + creole (0.5.0) drb (2.2.1) expression_parser (0.9.0) github-linguist (7.30.0) @@ -46,31 +50,32 @@ GEM activesupport (>= 2) nokogiri (~> 1.4) htmlentities (4.3.4) - i18n (1.14.5) + i18n (1.14.6) concurrent-ruby (~> 1.0) + logger (1.6.1) mini_mime (1.1.5) - minitest (5.23.1) + minitest (5.25.1) mutex_m (0.2.0) - nokogiri (1.16.6-aarch64-linux) + nokogiri (1.16.7-aarch64-linux) racc (~> 1.4) - nokogiri (1.16.6-arm-linux) + nokogiri (1.16.7-arm-linux) racc (~> 1.4) - nokogiri (1.16.6-arm64-darwin) + nokogiri (1.16.7-arm64-darwin) racc (~> 1.4) - nokogiri (1.16.6-x86-linux) + nokogiri (1.16.7-x86-linux) racc (~> 1.4) - nokogiri (1.16.6-x86_64-darwin) + nokogiri (1.16.7-x86_64-darwin) racc (~> 1.4) - nokogiri (1.16.6-x86_64-linux) + nokogiri (1.16.7-x86_64-linux) racc (~> 1.4) nokogiri-diff (0.3.0) nokogiri (~> 1.5) tdiff (~> 0.4) - org-ruby (0.9.9) + org-ruby (0.9.12) rubypants (~> 0.2) psych (5.1.2) stringio - racc (1.8.0) + racc (1.8.1) rake (13.2.1) rdoc (6.7.0) psych (>= 4.0.0) @@ -80,9 +85,10 @@ GEM i18n rubypants (0.7.1) rugged (1.7.2) - sanitize (6.1.1) + sanitize (6.1.3) crass (~> 1.0.2) nokogiri (>= 1.12.0) + securerandom (0.3.1) stringio (3.1.1) tdiff (0.4.0) twitter-text (1.14.7) @@ -109,10 +115,10 @@ PLATFORMS DEPENDENCIES RedCloth - activesupport (~> 7.1.3.4) + activesupport (~> 7.1.5) asciidoctor (~> 2.0.5) commonmarker! - creole (~> 0.3.6) + creole (~> 0.5.0) github-linguist (>= 7.1.3) github-markup! html-pipeline (~> 1.0) @@ -120,7 +126,7 @@ DEPENDENCIES minitest (~> 5.4, >= 5.4.3) nokogiri (~> 1.16.5) nokogiri-diff (~> 0.3.0) - org-ruby (= 0.9.9) + org-ruby (= 0.9.12) rake rdoc (~> 6.7.0) redcarpet diff --git a/github-markup.gemspec b/github-markup.gemspec index 260df18c..ccf5908a 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -21,7 +21,7 @@ Gem::Specification.new do |s| s.require_paths = %w[lib] s.add_development_dependency 'rake', '~> 12' - s.add_development_dependency 'activesupport', '~> 7.1.3.4' + s.add_development_dependency 'activesupport', '~> 7.1.5' s.add_development_dependency 'minitest', '~> 5.4', '>= 5.4.3' s.add_development_dependency 'html-pipeline', '~> 1.0' s.add_development_dependency 'sanitize', '>= 4.6.3' From cec16df50930cfd7870f6addab2e0acdaedb41f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 10:28:29 +0000 Subject: [PATCH 86/97] chore(deps): bump ruby/setup-ruby in the dependencies group Bumps the dependencies group with 1 update: [ruby/setup-ruby](https://github.com/ruby/setup-ruby). Updates `ruby/setup-ruby` from 1.199.0 to 1.202.0 - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](https://github.com/ruby/setup-ruby/compare/7d3497fd78c07c0d84ebafa58d8dac60cd1f0763...a2bbe5b1b236842c1cb7dd11e8e3b51e0a616acc) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a661e9b..b2c0469c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: with: fetch-depth: 10 - - uses: ruby/setup-ruby@7d3497fd78c07c0d84ebafa58d8dac60cd1f0763 # v1 + - uses: ruby/setup-ruby@a2bbe5b1b236842c1cb7dd11e8e3b51e0a616acc # v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true From eed8f53691db84d1788fd142c9235bb6b8379b76 Mon Sep 17 00:00:00 2001 From: jmeridth Date: Mon, 18 Nov 2024 09:10:32 -0600 Subject: [PATCH 87/97] chore: add keep label to mark issues/prs from being marked as stale - [x] added keep label to repo - [x] add `exempt-issue-labels` and `exempt-pre-labels` to stale config Signed-off-by: jmeridth --- .github/workflows/stale.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index fc5a93dc..ef40f1b0 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -23,3 +23,5 @@ jobs: This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. + exempt-issue-labels: keep + exempt-pr-labels: keep From 9362a5204fd1551e692b5d9c7a44b70b9e5d4374 Mon Sep 17 00:00:00 2001 From: jmeridth Date: Mon, 18 Nov 2024 09:31:19 -0600 Subject: [PATCH 88/97] fix: switch from shas to tags for immutable actions closes 4 security warnings Signed-off-by: jmeridth --- .github/workflows/ci.yml | 8 ++++---- .github/workflows/stale.yml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b2c0469c..0eb7e108 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + uses: actions/checkout@v4.2.2 with: fetch-depth: 10 @@ -31,12 +31,12 @@ jobs: ruby-version: ${{ matrix.ruby }} bundler-cache: true - - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5 + - uses: actions/setup-python@v5.3.0 with: # This should match lib/github/markups.rb GitHub::Markups::MARKUP_RST - python-version: '3.x' + python-version: "3.x" - - uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4 + - uses: actions/cache@v4.1.2 with: path: ~/.cache/pip key: ${{ runner.os }}-pip diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index ef40f1b0..2ef91e16 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -12,7 +12,7 @@ jobs: pull-requests: write steps: - - uses: actions/stale@f7176fd3007623b69d27091f9b9d4ab7995f0a06 # v5 + - uses: actions/stale@v9.0.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: > From 70055d6c111806adef3090f1d8210c7888bcfa65 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 10:54:07 +0000 Subject: [PATCH 89/97] chore(deps): bump the dependencies group across 1 directory with 4 updates Bumps the dependencies group with 4 updates in the / directory: [ruby/setup-ruby](https://github.com/ruby/setup-ruby), [actions/setup-python](https://github.com/actions/setup-python), [actions/cache](https://github.com/actions/cache) and [actions/stale](https://github.com/actions/stale). Updates `ruby/setup-ruby` from 1.202.0 to 1.222.0 - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](https://github.com/ruby/setup-ruby/compare/a2bbe5b1b236842c1cb7dd11e8e3b51e0a616acc...277ba2a127aba66d45bad0fa2dc56f80dbfedffa) Updates `actions/setup-python` from 5.3.0 to 5.4.0 - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v5.3.0...v5.4.0) Updates `actions/cache` from 4.1.2 to 4.2.2 - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v4.1.2...v4.2.2) Updates `actions/stale` from 9.0.0 to 9.1.0 - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/v9.0.0...v9.1.0) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: actions/stale dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 6 +++--- .github/workflows/stale.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0eb7e108..65a1cf08 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,17 +26,17 @@ jobs: with: fetch-depth: 10 - - uses: ruby/setup-ruby@a2bbe5b1b236842c1cb7dd11e8e3b51e0a616acc # v1 + - uses: ruby/setup-ruby@277ba2a127aba66d45bad0fa2dc56f80dbfedffa # v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - - uses: actions/setup-python@v5.3.0 + - uses: actions/setup-python@v5.4.0 with: # This should match lib/github/markups.rb GitHub::Markups::MARKUP_RST python-version: "3.x" - - uses: actions/cache@v4.1.2 + - uses: actions/cache@v4.2.2 with: path: ~/.cache/pip key: ${{ runner.os }}-pip diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 2ef91e16..84cbf0ed 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -12,7 +12,7 @@ jobs: pull-requests: write steps: - - uses: actions/stale@v9.0.0 + - uses: actions/stale@v9.1.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: > From 9831835518ebb07419678300f6ec01870b73d0c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 28 Mar 2025 21:05:33 +0000 Subject: [PATCH 90/97] chore(deps): bump the dependencies group with 5 updates Updates the requirements on [redcarpet](https://github.com/vmg/redcarpet), [rdoc](https://github.com/ruby/rdoc), [rexml](https://github.com/ruby/rexml), [minitest](https://github.com/minitest/minitest) and [nokogiri](https://github.com/sparklemotion/nokogiri) to permit the latest version. Updates `redcarpet` from 3.6.0 to 3.6.1 - [Release notes](https://github.com/vmg/redcarpet/releases) - [Changelog](https://github.com/vmg/redcarpet/blob/master/CHANGELOG.md) - [Commits](https://github.com/vmg/redcarpet/compare/v3.6.0...v3.6.1) Updates `rdoc` from 6.7.0 to 6.12.0 - [Release notes](https://github.com/ruby/rdoc/releases) - [Changelog](https://github.com/ruby/rdoc/blob/master/History.rdoc) - [Commits](https://github.com/ruby/rdoc/compare/v6.7.0...v6.12.0) Updates `rexml` from 3.3.9 to 3.4.1 - [Release notes](https://github.com/ruby/rexml/releases) - [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md) - [Commits](https://github.com/ruby/rexml/compare/v3.3.9...v3.4.1) Updates `minitest` from 5.25.1 to 5.25.4 - [Changelog](https://github.com/minitest/minitest/blob/master/History.rdoc) - [Commits](https://github.com/minitest/minitest/compare/v5.25.1...v5.25.4) Updates `nokogiri` from 1.16.7 to 1.17.2 - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.16.7...v1.17.2) --- updated-dependencies: - dependency-name: redcarpet dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dependencies - dependency-name: rdoc dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: rexml dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: minitest dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dependencies - dependency-name: nokogiri dependency-type: direct:development update-type: version-update:semver-minor dependency-group: dependencies ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 30 ++++++++++++++++-------------- github-markup.gemspec | 2 +- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/Gemfile b/Gemfile index b2983b9b..be52c0a6 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ gem "RedCloth" # using a tag version here because 0.18.3 was not published by the author to encourage users to upgrade. # however we want to bump up to this version since this has a security patch gem "commonmarker", git: "https://github.com/gjtorikian/commonmarker.git", tag: "v0.18.3" -gem "rdoc", "~> 6.7.0" +gem "rdoc", "~> 6.13.0" gem "org-ruby", "0.9.12" gem "creole", "~>0.5.0" gem "wikicloth", "=0.8.3" diff --git a/Gemfile.lock b/Gemfile.lock index 5912d3b1..ba36467a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -39,6 +39,7 @@ GEM connection_pool (2.4.1) crass (1.0.6) creole (0.5.0) + date (3.4.1) drb (2.2.1) expression_parser (0.9.0) github-linguist (7.30.0) @@ -54,33 +55,34 @@ GEM concurrent-ruby (~> 1.0) logger (1.6.1) mini_mime (1.1.5) - minitest (5.25.1) + minitest (5.25.5) mutex_m (0.2.0) - nokogiri (1.16.7-aarch64-linux) + nokogiri (1.17.2-aarch64-linux) racc (~> 1.4) - nokogiri (1.16.7-arm-linux) + nokogiri (1.17.2-arm-linux) racc (~> 1.4) - nokogiri (1.16.7-arm64-darwin) + nokogiri (1.17.2-arm64-darwin) racc (~> 1.4) - nokogiri (1.16.7-x86-linux) + nokogiri (1.17.2-x86-linux) racc (~> 1.4) - nokogiri (1.16.7-x86_64-darwin) + nokogiri (1.17.2-x86_64-darwin) racc (~> 1.4) - nokogiri (1.16.7-x86_64-linux) + nokogiri (1.17.2-x86_64-linux) racc (~> 1.4) nokogiri-diff (0.3.0) nokogiri (~> 1.5) tdiff (~> 0.4) org-ruby (0.9.12) rubypants (~> 0.2) - psych (5.1.2) + psych (5.2.3) + date stringio racc (1.8.1) rake (13.2.1) - rdoc (6.7.0) + rdoc (6.13.0) psych (>= 4.0.0) - redcarpet (3.6.0) - rexml (3.3.9) + redcarpet (3.6.1) + rexml (3.4.1) ruby-enum (0.9.0) i18n rubypants (0.7.1) @@ -89,7 +91,7 @@ GEM crass (~> 1.0.2) nokogiri (>= 1.12.0) securerandom (0.3.1) - stringio (3.1.1) + stringio (3.1.6) tdiff (0.4.0) twitter-text (1.14.7) unf (~> 0.1.0) @@ -124,11 +126,11 @@ DEPENDENCIES html-pipeline (~> 1.0) kramdown minitest (~> 5.4, >= 5.4.3) - nokogiri (~> 1.16.5) + nokogiri (~> 1.17.2) nokogiri-diff (~> 0.3.0) org-ruby (= 0.9.12) rake - rdoc (~> 6.7.0) + rdoc (~> 6.13.0) redcarpet rexml sanitize (>= 4.6.3) diff --git a/github-markup.gemspec b/github-markup.gemspec index ccf5908a..ddd4635f 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -25,7 +25,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'minitest', '~> 5.4', '>= 5.4.3' s.add_development_dependency 'html-pipeline', '~> 1.0' s.add_development_dependency 'sanitize', '>= 4.6.3' - s.add_development_dependency 'nokogiri', '~> 1.16.5' + s.add_development_dependency 'nokogiri', '~> 1.17.2' s.add_development_dependency 'nokogiri-diff', '~> 0.3.0' s.add_development_dependency "github-linguist", ">= 7.1.3" end From b88ec4392314d5f873ea0adea9e4ff526ab2ff04 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 28 Mar 2025 21:17:51 +0000 Subject: [PATCH 91/97] chore(deps): bump activesupport from 7.1.5 to 7.1.5.1 Bumps [activesupport](https://github.com/rails/rails) from 7.1.5 to 7.1.5.1. - [Release notes](https://github.com/rails/rails/releases) - [Changelog](https://github.com/rails/rails/blob/v8.0.1/activesupport/CHANGELOG.md) - [Commits](https://github.com/rails/rails/compare/v7.1.5...v7.1.5.1) --- updated-dependencies: - dependency-name: activesupport dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index ba36467a..38813bb1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -15,7 +15,7 @@ GEM remote: https://rubygems.org/ specs: RedCloth (4.3.4) - activesupport (7.1.5) + activesupport (7.1.5.1) base64 benchmark (>= 0.3) bigdecimal @@ -30,13 +30,13 @@ GEM tzinfo (~> 2.0) asciidoctor (2.0.23) base64 (0.2.0) - benchmark (0.3.0) - bigdecimal (3.1.8) + benchmark (0.4.0) + bigdecimal (3.1.9) builder (3.3.0) cgi (0.4.1) charlock_holmes (0.7.7) - concurrent-ruby (1.3.4) - connection_pool (2.4.1) + concurrent-ruby (1.3.5) + connection_pool (2.5.0) crass (1.0.6) creole (0.5.0) date (3.4.1) @@ -51,12 +51,12 @@ GEM activesupport (>= 2) nokogiri (~> 1.4) htmlentities (4.3.4) - i18n (1.14.6) + i18n (1.14.7) concurrent-ruby (~> 1.0) - logger (1.6.1) + logger (1.7.0) mini_mime (1.1.5) minitest (5.25.5) - mutex_m (0.2.0) + mutex_m (0.3.0) nokogiri (1.17.2-aarch64-linux) racc (~> 1.4) nokogiri (1.17.2-arm-linux) @@ -90,7 +90,7 @@ GEM sanitize (6.1.3) crass (~> 1.0.2) nokogiri (>= 1.12.0) - securerandom (0.3.1) + securerandom (0.3.2) stringio (3.1.6) tdiff (0.4.0) twitter-text (1.14.7) From 0f6838c1f8110cb2ee005cb74a5392c4dbb48881 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 10:48:59 +0000 Subject: [PATCH 92/97] chore(deps): bump rdoc from 6.13.0 to 6.13.1 in the dependencies group Bumps the dependencies group with 1 update: [rdoc](https://github.com/ruby/rdoc). Updates `rdoc` from 6.13.0 to 6.13.1 - [Release notes](https://github.com/ruby/rdoc/releases) - [Changelog](https://github.com/ruby/rdoc/blob/master/History.rdoc) - [Commits](https://github.com/ruby/rdoc/compare/v6.13.0...v6.13.1) --- updated-dependencies: - dependency-name: rdoc dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dependencies ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index be52c0a6..e2c29f9c 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ gem "RedCloth" # using a tag version here because 0.18.3 was not published by the author to encourage users to upgrade. # however we want to bump up to this version since this has a security patch gem "commonmarker", git: "https://github.com/gjtorikian/commonmarker.git", tag: "v0.18.3" -gem "rdoc", "~> 6.13.0" +gem "rdoc", "~> 6.13.1" gem "org-ruby", "0.9.12" gem "creole", "~>0.5.0" gem "wikicloth", "=0.8.3" diff --git a/Gemfile.lock b/Gemfile.lock index ba36467a..2f72687c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -79,7 +79,7 @@ GEM stringio racc (1.8.1) rake (13.2.1) - rdoc (6.13.0) + rdoc (6.13.1) psych (>= 4.0.0) redcarpet (3.6.1) rexml (3.4.1) @@ -130,7 +130,7 @@ DEPENDENCIES nokogiri-diff (~> 0.3.0) org-ruby (= 0.9.12) rake - rdoc (~> 6.13.0) + rdoc (~> 6.13.1) redcarpet rexml sanitize (>= 4.6.3) From 1ba0b17f610f4cdf6cf33ec7bc2c618f8b0f9208 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 11:04:59 +0000 Subject: [PATCH 93/97] chore(deps): bump the dependencies group with 3 updates Bumps the dependencies group with 3 updates: [ruby/setup-ruby](https://github.com/ruby/setup-ruby), [actions/setup-python](https://github.com/actions/setup-python) and [actions/cache](https://github.com/actions/cache). Updates `ruby/setup-ruby` from 1.222.0 to 1.229.0 - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](https://github.com/ruby/setup-ruby/compare/277ba2a127aba66d45bad0fa2dc56f80dbfedffa...354a1ad156761f5ee2b7b13fa8e09943a5e8d252) Updates `actions/setup-python` from 5.4.0 to 5.5.0 - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v5.4.0...v5.5.0) Updates `actions/cache` from 4.2.2 to 4.2.3 - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v4.2.2...v4.2.3) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-patch dependency-group: dependencies ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 65a1cf08..f313947e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,17 +26,17 @@ jobs: with: fetch-depth: 10 - - uses: ruby/setup-ruby@277ba2a127aba66d45bad0fa2dc56f80dbfedffa # v1 + - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - - uses: actions/setup-python@v5.4.0 + - uses: actions/setup-python@v5.5.0 with: # This should match lib/github/markups.rb GitHub::Markups::MARKUP_RST python-version: "3.x" - - uses: actions/cache@v4.2.2 + - uses: actions/cache@v4.2.3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip From 63895bf131f69398fab9beaa0d9839c79ceeddfd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 14:39:39 +0000 Subject: [PATCH 94/97] chore(deps): bump cgi from 0.4.1 to 0.4.2 in the bundler group Bumps the bundler group with 1 update: [cgi](https://github.com/ruby/cgi). Updates `cgi` from 0.4.1 to 0.4.2 - [Release notes](https://github.com/ruby/cgi/releases) - [Commits](https://github.com/ruby/cgi/compare/v0.4.1...v0.4.2) --- updated-dependencies: - dependency-name: cgi dependency-type: indirect dependency-group: bundler ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index ba36467a..84f33bdf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -33,7 +33,7 @@ GEM benchmark (0.3.0) bigdecimal (3.1.8) builder (3.3.0) - cgi (0.4.1) + cgi (0.4.2) charlock_holmes (0.7.7) concurrent-ruby (1.3.4) connection_pool (2.4.1) From ead5ff8f21d0db8d672a7283a6afec24cbfee3ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 15:05:35 +0000 Subject: [PATCH 95/97] chore(deps): bump github-linguist from 7.30.0 to 9.1.0 Bumps [github-linguist](https://github.com/github-linguist/linguist) from 7.30.0 to 9.1.0. - [Release notes](https://github.com/github-linguist/linguist/releases) - [Commits](https://github.com/github-linguist/linguist/compare/v7.30.0...v9.1.0) --- updated-dependencies: - dependency-name: github-linguist dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c8c61181..1ebd7841 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -34,7 +34,7 @@ GEM bigdecimal (3.1.9) builder (3.3.0) cgi (0.4.2) - charlock_holmes (0.7.7) + charlock_holmes (0.7.9) concurrent-ruby (1.3.5) connection_pool (2.5.0) crass (1.0.6) @@ -42,7 +42,7 @@ GEM date (3.4.1) drb (2.2.1) expression_parser (0.9.0) - github-linguist (7.30.0) + github-linguist (9.1.0) cgi charlock_holmes (~> 0.7.7) mini_mime (~> 1.0) @@ -86,7 +86,7 @@ GEM ruby-enum (0.9.0) i18n rubypants (0.7.1) - rugged (1.7.2) + rugged (1.9.0) sanitize (6.1.3) crass (~> 1.0.2) nokogiri (>= 1.12.0) From 92a2ed2692f9b162e7008820f32d226bb99f88e8 Mon Sep 17 00:00:00 2001 From: Max Beizer Date: Tue, 1 Apr 2025 14:34:59 +0000 Subject: [PATCH 96/97] Bump nokogiri to 1.18, require at least Ruby 3.1 --- .github/workflows/ci.yml | 2 +- Gemfile | 1 + Gemfile.lock | 16 +++++++++------- github-markup.gemspec | 4 ++-- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f313947e..50ccc50b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,10 +14,10 @@ jobs: strategy: matrix: ruby: - - "3.0" - "3.1" - "3.2" - "3.3" + - "3.4" fail-fast: false steps: diff --git a/Gemfile b/Gemfile index e2c29f9c..bcd13f88 100644 --- a/Gemfile +++ b/Gemfile @@ -15,3 +15,4 @@ gem "twitter-text", "~> 1.14" gem "asciidoctor", "~> 2.0.5" gem "rake" gem "rexml" +gem "nokogiri", "~> 1.18.4" diff --git a/Gemfile.lock b/Gemfile.lock index 1ebd7841..7e738e4d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -55,19 +55,21 @@ GEM concurrent-ruby (~> 1.0) logger (1.7.0) mini_mime (1.1.5) + mini_portile2 (2.8.8) minitest (5.25.5) mutex_m (0.3.0) - nokogiri (1.17.2-aarch64-linux) + nokogiri (1.18.7) + mini_portile2 (~> 2.8.2) racc (~> 1.4) - nokogiri (1.17.2-arm-linux) + nokogiri (1.18.7-aarch64-linux-gnu) racc (~> 1.4) - nokogiri (1.17.2-arm64-darwin) + nokogiri (1.18.7-arm-linux-gnu) racc (~> 1.4) - nokogiri (1.17.2-x86-linux) + nokogiri (1.18.7-arm64-darwin) racc (~> 1.4) - nokogiri (1.17.2-x86_64-darwin) + nokogiri (1.18.7-x86_64-darwin) racc (~> 1.4) - nokogiri (1.17.2-x86_64-linux) + nokogiri (1.18.7-x86_64-linux-gnu) racc (~> 1.4) nokogiri-diff (0.3.0) nokogiri (~> 1.5) @@ -126,7 +128,7 @@ DEPENDENCIES html-pipeline (~> 1.0) kramdown minitest (~> 5.4, >= 5.4.3) - nokogiri (~> 1.17.2) + nokogiri (~> 1.18.4) nokogiri-diff (~> 0.3.0) org-ruby (= 0.9.12) rake diff --git a/github-markup.gemspec b/github-markup.gemspec index ddd4635f..4329a901 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -13,7 +13,7 @@ Gem::Specification.new do |s| s.homepage = "https://github.com/github/markup" s.license = "MIT" - s.required_ruby_version = '>= 3.0.0' + s.required_ruby_version = '>= 3.1.0' s.files = `git ls-files`.split($\) s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) } @@ -25,7 +25,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'minitest', '~> 5.4', '>= 5.4.3' s.add_development_dependency 'html-pipeline', '~> 1.0' s.add_development_dependency 'sanitize', '>= 4.6.3' - s.add_development_dependency 'nokogiri', '~> 1.17.2' + s.add_development_dependency 'nokogiri', '~> 1.18.4' s.add_development_dependency 'nokogiri-diff', '~> 0.3.0' s.add_development_dependency "github-linguist", ">= 7.1.3" end From a732c1a614333efe7b6a367238ec1c278fcb3a30 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 04:55:46 +0000 Subject: [PATCH 97/97] chore(deps): bump nokogiri from 1.18.7 to 1.18.8 in the bundler group Bumps the bundler group with 1 update: [nokogiri](https://github.com/sparklemotion/nokogiri). Updates `nokogiri` from 1.18.7 to 1.18.8 - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.18.7...v1.18.8) --- updated-dependencies: - dependency-name: nokogiri dependency-version: 1.18.8 dependency-type: direct:production dependency-group: bundler ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Gemfile b/Gemfile index bcd13f88..60920bee 100644 --- a/Gemfile +++ b/Gemfile @@ -15,4 +15,4 @@ gem "twitter-text", "~> 1.14" gem "asciidoctor", "~> 2.0.5" gem "rake" gem "rexml" -gem "nokogiri", "~> 1.18.4" +gem "nokogiri", "~> 1.18.8" diff --git a/Gemfile.lock b/Gemfile.lock index 7e738e4d..9ee4b029 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -58,18 +58,18 @@ GEM mini_portile2 (2.8.8) minitest (5.25.5) mutex_m (0.3.0) - nokogiri (1.18.7) + nokogiri (1.18.8) mini_portile2 (~> 2.8.2) racc (~> 1.4) - nokogiri (1.18.7-aarch64-linux-gnu) + nokogiri (1.18.8-aarch64-linux-gnu) racc (~> 1.4) - nokogiri (1.18.7-arm-linux-gnu) + nokogiri (1.18.8-arm-linux-gnu) racc (~> 1.4) - nokogiri (1.18.7-arm64-darwin) + nokogiri (1.18.8-arm64-darwin) racc (~> 1.4) - nokogiri (1.18.7-x86_64-darwin) + nokogiri (1.18.8-x86_64-darwin) racc (~> 1.4) - nokogiri (1.18.7-x86_64-linux-gnu) + nokogiri (1.18.8-x86_64-linux-gnu) racc (~> 1.4) nokogiri-diff (0.3.0) nokogiri (~> 1.5) @@ -128,7 +128,7 @@ DEPENDENCIES html-pipeline (~> 1.0) kramdown minitest (~> 5.4, >= 5.4.3) - nokogiri (~> 1.18.4) + nokogiri (~> 1.18.8) nokogiri-diff (~> 0.3.0) org-ruby (= 0.9.12) rake pFad - Phonifier reborn

          Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

          Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


          Alternative Proxies:

          Alternative Proxy

          pFad Proxy

          pFad v3 Proxy

          pFad v4 Proxy