From 3c4eb1e8508124615c1da38d4633ef798b0f4ed5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Jun 2026 16:48:54 +0000 Subject: [PATCH 1/4] chore(deps): update html-pipeline requirement from ~> 1.0 to ~> 3.2 Updates the requirements on [html-pipeline](https://github.com/gjtorikian/html-pipeline) to permit the latest version. - [Release notes](https://github.com/gjtorikian/html-pipeline/releases) - [Changelog](https://github.com/gjtorikian/html-pipeline/blob/main/CHANGELOG.md) - [Commits](https://github.com/gjtorikian/html-pipeline/compare/v1.11.0...v3.2.4) --- updated-dependencies: - dependency-name: html-pipeline dependency-version: 3.2.4 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 16 ++++++++++++---- github-markup.gemspec | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index cd835695..e1d510c5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -47,9 +47,9 @@ GEM charlock_holmes (~> 0.7.7) mini_mime (~> 1.0) rugged (~> 1.0) - html-pipeline (1.11.0) - activesupport (>= 2) - nokogiri (~> 1.4) + html-pipeline (3.2.4) + selma (~> 0.4) + zeitwerk (~> 2.5) htmlentities (4.3.4) i18n (1.14.8) concurrent-ruby (~> 1.0) @@ -99,6 +99,13 @@ GEM crass (~> 1.0.2) nokogiri (>= 1.12.0) securerandom (0.4.1) + selma (0.5.0) + rb_sys (~> 0.9) + selma (0.5.0-aarch64-linux) + selma (0.5.0-arm-linux) + selma (0.5.0-arm64-darwin) + selma (0.5.0-x86_64-darwin) + selma (0.5.0-x86_64-linux) simplecov (0.22.0) docile (~> 1.1) simplecov-html (~> 0.11) @@ -122,6 +129,7 @@ GEM htmlentities nokogiri twitter-text + zeitwerk (2.8.2) PLATFORMS aarch64-linux @@ -139,7 +147,7 @@ DEPENDENCIES creole (~> 0.5.0) github-linguist (>= 7.1.3) github-markup! - html-pipeline (~> 1.0) + html-pipeline (~> 3.2) kramdown minitest (~> 6.0, >= 5.4.3) nokogiri (~> 1.19.2) diff --git a/github-markup.gemspec b/github-markup.gemspec index 19b9ccea..e1d1b33d 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -26,7 +26,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'rake', '~> 13' s.add_development_dependency 'activesupport', '~> 8.1.3' s.add_development_dependency 'minitest', '>= 5.4.3', '~> 6.0' - s.add_development_dependency 'html-pipeline', '~> 1.0' + s.add_development_dependency 'html-pipeline', '~> 3.2' s.add_development_dependency 'sanitize', '>= 4.6.3' s.add_development_dependency 'nokogiri', '~> 1.19.2' s.add_development_dependency 'nokogiri-diff', '~> 0.3.0' From 635bd18061687f89ab60d75510929138a42b53b7 Mon Sep 17 00:00:00 2001 From: Zack Koppert Date: Mon, 8 Jun 2026 16:22:21 -0700 Subject: [PATCH 2/4] test: migrate to HTMLPipeline v3 API html-pipeline v3 reorganizes the namespace (HTML::Pipeline -> HTMLPipeline), splits the single Filter base class into TextFilter/ConvertFilter/NodeFilter, makes the pipeline accept filter instances (not classes) via explicit keyword arguments, and returns a result hash from #call. Update the test harness's sample pipeline to match. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Zack Koppert --- test/markup_test.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/test/markup_test.rb b/test/markup_test.rb index 33450ea7..baa1dec2 100644 --- a/test/markup_test.rb +++ b/test/markup_test.rb @@ -6,7 +6,7 @@ require 'github-markup' require 'github/markup' require 'minitest/autorun' -require 'html/pipeline' +require 'html_pipeline' require 'nokogiri' require 'nokogiri/diff' @@ -36,17 +36,17 @@ def assert_html_equal(expected, actual, msg = nil) end class MarkupTest < Minitest::Test - class MarkupFilter < HTML::Pipeline::Filter - def call - filename = context[:filename] + class MarkupFilter < HTMLPipeline::ConvertFilter + def call(_text, context: {}) + filename = context[:filename] || @context[:filename] GitHub::Markup.render(filename, File.read(filename)).strip.force_encoding("utf-8") end end - Pipeline = HTML::Pipeline.new [ - MarkupFilter, - HTML::Pipeline::SanitizationFilter - ] + Pipeline = HTMLPipeline.new( + convert_filter: MarkupFilter.new, + sanitization_config: HTMLPipeline::SanitizationFilter::DEFAULT_CONFIG + ) Dir['test/markups/README.*'].each do |readme| next if readme =~ /html$/ @@ -57,7 +57,7 @@ def call source = File.read(readme) expected_file = "#{readme}.html" expected = File.read(expected_file).rstrip - actual = Pipeline.to_html(nil, :filename => readme) + actual = Pipeline.call("", context: { filename: readme })[:output].to_s if source != expected assert(source != actual, "#{markup} did not render anything") From e7beefbfc20ad74304a7717b36fddb322c370fd3 Mon Sep 17 00:00:00 2001 From: Zack Koppert Date: Mon, 8 Jun 2026 16:22:30 -0700 Subject: [PATCH 3/4] test: regenerate fixtures for html-pipeline v3 sanitizer (Selma) html-pipeline v3 replaces the v1 SanitizationFilter (Sanitize gem) with one backed by Selma. The default allowlist and serialization differ in observable but reasonable ways: * Heading/anchor IDs (e.g.

) are now preserved, fixing TOC anchor links that v1 stripped silently. * ,
, and elements are preserved. * Bare-filename relative hrefs () are dropped because Selma's :relative protocol matcher requires a leading ./, ../, or /. Absolute http(s) and root-relative links are unaffected. * Self-closing tags serialize as
instead of
. * Non-ASCII glyphs in attribute-free text are emitted as numeric entities (\u274F -> ❏). These fixtures document representative pipeline output, not contracts the library itself enforces - real consumers build their own pipelines. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Zack Koppert --- test/markups/README.asciidoc.html | 12 +- test/markups/README.creole.html | 6 +- test/markups/README.directives.rst.html | 4 +- test/markups/README.litcoffee.html | 10 +- test/markups/README.long.rst.html | 530 +++++++++--------------- test/markups/README.mediawiki.html | 40 +- test/markups/README.org.html | 69 ++- test/markups/README.pod.html | 34 +- test/markups/README.rdoc.html | 11 +- test/markups/README.rst.html | 69 ++- test/markups/README.rst.txt.html | 15 +- test/markups/README.toc.asciidoc.html | 22 +- test/markups/README.toc.rst.html | 15 +- 13 files changed, 323 insertions(+), 514 deletions(-) diff --git a/test/markups/README.asciidoc.html b/test/markups/README.asciidoc.html index 8019074b..4e28204e 100644 --- a/test/markups/README.asciidoc.html +++ b/test/markups/README.asciidoc.html @@ -1,6 +1,6 @@

Document Title

-

Another Section

+

Another Section

@@ -43,17 +43,17 @@

Another Section

  • -

    ❏ todo

    +

    ❏ todo

  • -

    ✓ done

    +

    ✓ done

-

Another Section

+

Another Section

content

diff --git a/test/markups/README.creole.html b/test/markups/README.creole.html index ec67cd0f..cc16572f 100644 --- a/test/markups/README.creole.html +++ b/test/markups/README.creole.html @@ -1,8 +1,4 @@ -

H1

H2

paragraph of text that will be turned into a paragraph element. It can go over several lines with line breaks, it will be turned into a contiguous paragraph element.

You can force a linebreak in your paragraph text
thusly.

    -
  • a list element
    • sub list element
    -
  • -
  • 2nd list element
  • -
pre formatted text
+

H1

H2

paragraph of text that will be turned into a paragraph element. It can go over several lines with line breaks, it will be turned into a contiguous paragraph element.

You can force a linebreak in your paragraph text
thusly.

  • a list element
    • sub list element
  • 2nd list element
pre formatted text
 
 $ ls -la
 total 56
diff --git a/test/markups/README.directives.rst.html b/test/markups/README.directives.rst.html
index f42c58f2..1af38ee9 100644
--- a/test/markups/README.directives.rst.html
+++ b/test/markups/README.directives.rst.html
@@ -34,9 +34,9 @@ 

Introduction

 .. github display [on | off]
 
-

If you pass this the "on" value, then all unknown directives +

If you pass this the "on" value, then all unknown directives will be displayed as literal code blocks. If you pass this -the "off" value, then unknown directives will not be displayed.

+the "off" value, then unknown directives will not be displayed.

In addition to controlling the display of literal code blocks, this also allows you to show comments specifically for github.

For example, somebody could place this at the top of their file:

diff --git a/test/markups/README.litcoffee.html b/test/markups/README.litcoffee.html index 3245a0b5..4c777cda 100644 --- a/test/markups/README.litcoffee.html +++ b/test/markups/README.litcoffee.html @@ -3,11 +3,11 @@

Literate CoffeeScript Test

Taken from https://github.com/jashkenas/coffee-script/blob/master/test/literate.litcoffee

comment comment

-
test "basic literate CoffeeScript parsing", ->
+
test "basic literate CoffeeScript parsing", ->
   ok yes
 

now with a...

-
test "broken up indentation", ->
+
test "broken up indentation", ->
 

... broken up ...

  do ->
@@ -16,14 +16,14 @@ 

Literate CoffeeScript Test

    ok yes
 

Code must be separated from text by a blank line.

-
test "code blocks must be preceded by a blank line", ->
+
test "code blocks must be preceded by a blank line", ->
 

The next line is part of the text and will not be executed. fail()

  ok yes
 

Code in backticks is not parsed and...

-
test "comments in indented blocks work", ->
+
test "comments in indented blocks work", ->
   do ->
     do ->
       # Regular comment.
@@ -51,5 +51,5 @@ 

Literate CoffeeScript Test

Tabs work too:

-

test "tabbed code", -> +

test "tabbed code", -> ok yes

\ No newline at end of file diff --git a/test/markups/README.long.rst.html b/test/markups/README.long.rst.html index 7f9e1ac3..ca55a291 100644 --- a/test/markups/README.long.rst.html +++ b/test/markups/README.long.rst.html @@ -6,43 +6,40 @@

Robot Framework 7.0

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.

-
+
@@ -93,12 +90,12 @@

Support keywords and control structures with listener version 3

def start_keyword(data: running.Keyword, result: result.Keyword): - print(f"Keyword '{result.full_name}' used on line {data.lineno} started.") + 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.") + 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 @@ -112,10 +109,10 @@

Support keywords and control structures with listener version 3

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}.") + 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 @@ -144,26 +141,25 @@

Listener version 3 is the default listener version

version 2, but we nevertheless highly recommend using the version 3 whenever possible.

-

Libraries can register themselves as listeners by using string SELF -

+

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 +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:

+This is especially convenient when using the @library decorator:

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

Native VAR syntax

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} +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:

@@ -228,7 +224,7 @@ 

Native VAR syntax

List # Creates a list with three items. - VAR @{list} a b c + VAR @{list} a b c Dictionary # Creates a dictionary with two items. @@ -253,7 +249,7 @@

Mixed argument support with library keywords

can be passed in as normal arguments. This is illustrated by the following example keyword:

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

Argument conversion enhancements

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 -

+

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:

@@ -312,7 +307,7 @@

Support for Literal 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 +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 @@ -321,14 +316,13 @@

Support for Literal 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.

+arg: Literal[...] without defining a new type is very convenient, though.

-

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

+

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 +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, @@ -438,12 +432,12 @@

Timestamp related changes

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"/>
+<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"/>
+<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. @@ -464,12 +458,12 @@

Keyword name related changes

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>
+<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>
+<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

@@ -503,10 +497,8 @@

Changes related to keyword names

  • 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 +
  • 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 @@ -519,16 +511,11 @@

    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.
    • +
    • 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.

    @@ -536,8 +523,7 @@

    Deprecated attributes have been removed

    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 +

    • 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 @@ -548,18 +534,15 @@

      Changes to parsing model

      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 +

    • 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 +

    • 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). +

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

    @@ -567,14 +550,12 @@

    Changes to parsing 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 +
    • 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. +
    • 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 @@ -599,25 +580,23 @@

    Other backwards incompatible changes

  • 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 +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 +
  • 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 +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).
  • +
  • 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).
  • @@ -626,7 +605,7 @@

    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 +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.

    @@ -652,13 +631,11 @@

    Deprecated attributes in parsing, running and result 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 +
  • 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 +
  • 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.
  • @@ -677,8 +654,7 @@

    Other deprecated features

    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 +
  • 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 @@ -696,29 +672,22 @@

    Acknowledgements

    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 +
    • 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 +
    • 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 +
    • Pasi Saikkonen added dark mode to reports and logs (#3725).
    • -
    • -René added return type information to Libdoc's +
    • 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 +
    • 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 +
    • Mark Moberts added case-insensitive list and dictionary comparison support to the Collections library (#4343).
    • -
    • -Daniel Biehl enhanced performance of traversing +
    • 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 @@ -740,560 +709,449 @@

    Full list of fixes and enhancements

  • - - + - - + - - + - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - + - + - - + - - + - + - - + - - + - + - - + - + - - + - + - - + - - + - + - - + - - + - + - - + - - + - + - - + - - + - - + - + - - + - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - + - - + - - + - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - + - - + - + - - + - - + - + - - + - - + - - + - + - - + - - + - - + - - + - + - - + - - + - - + - - + - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - + - - + - - + - + - - + diff --git a/test/markups/README.mediawiki.html b/test/markups/README.mediawiki.html index e92accfd..12768dc6 100644 --- a/test/markups/README.mediawiki.html +++ b/test/markups/README.mediawiki.html @@ -1,9 +1,9 @@ -

    » JRuby Project Wiki Home Page -

    Embedding JRuby

    +

    » JRuby Project Wiki Home Page +

    Embedding JRuby

    Using Java from Ruby is JRuby's best-known feature---but you can also go in the other direction, and use Ruby from Java. There are several different ways to do this. You can execute entire Ruby scripts, call individual Ruby methods, or even implement a Java interface in Ruby (thus allowing you to treat Ruby objects like Java ones). We refer to all these techniques generically as "embedding." This section will explain how to embed JRuby in your Java project. - -

    ID
    ID Type Priority Summary
    #3296
    #3296 enhancement critical Support keywords and control structures with listener version 3
    #3761
    #3761 enhancement critical Native VAR syntax to create variables inside tests and keywords
    #4294
    #4294 enhancement critical Drop Python 3.6 and 3.7 support
    #4710
    #4710 enhancement critical Support library keywords with both embedded and normal arguments
    #4847
    #4847 enhancement critical Support JSON serialization with result model
    #4659
    #4659 bug high Performance regression when using Run Keyword and keyword name contains a variable
    #4921
    #4921 bug highLog levels don't work correctly with robot:flatten -Log levels don't work correctly with robot:flatten
    #3725
    #3725 enhancement high Support dark theme with report and log
    #4258
    #4258 enhancement high Change timestamps from custom strings to datetime in result model and to ISO 8601 format in output.xml
    #4374
    #4374 enhancement high Support removing tags set globally by using -tag syntax with [Tags] setting
    #4633
    #4633 enhancement highAutomatic argument conversion and validation for Literal -Automatic argument conversion and validation for Literal
    #4711
    #4711 enhancement high Support type aliases in formats 'list[int]' and 'int | float' in argument conversion
    #4803
    #4803 enhancement high Async support to dynamic and hybrid library APIs
    #4808
    #4808 bug medium Async keywords are not stopped when execution is stopped gracefully
    #4859
    #4859 bug medium Parsing errors in reStructuredText files have no source
    #4880
    #4880 bug medium Initially empty test fails even if pre-run modifier adds content to it
    #4886
    #4886 bug medium -Set Variable If is slow if it has several conditionsSet Variable If is slow if it has several conditions
    #4898
    #4898 bug medium Resolving special variables can fail with confusing message
    #4915
    #4915 bug medium -cached_property attributes are called when importing librarycached_property attributes are called when importing library
    #4924
    #4924 bug medium WHILE on_limit missing from listener v2 attributes
    #4926
    #4926 bug mediumWHILE and TRY content are not removed with --removekeywords all -WHILE and TRY content are not removed with --removekeywords all
    #4945
    #4945 bug medium -TypedDict with forward references do not work in argument conversionTypedDict with forward references do not work in argument conversion
    #4956
    #4956 bug mediumDotDict behaves inconsistent on equality checks. x == y != not x != y and not x != y == not x == y -DotDict behaves inconsistent on equality checks. x == y != not x != y and not x != y == not x == y
    #4964
    #4964 bug medium Variables set using Set Suite Variable with children=True cannot be properly overwritten
    #4980
    #4980 bug mediumDateTime library uses deprecated datetime.utcnow() -DateTime library uses deprecated datetime.utcnow()
    #4999
    #4999 bug medium XML Library: Double namespace during Element To String
    #5005
    #5005 bug medium -Log Variables should not consume iterablesLog Variables should not consume iterables
    #3017
    #3017 enhancement medium Add return type to Libdoc specs and HTML output
    #4103
    #4103 enhancement mediumProcess: Change the default stdin behavior from subprocess.PIPE to None -Process: Change the default stdin behavior from subprocess.PIPE to None
    #4302
    #4302 enhancement medium Remove Reserved library
    #4343
    #4343 enhancement medium Collections: Support case-insensitive list and dictionary comparisons
    #4375
    #4375 enhancement mediumChange token type of AS (or WITH NAME) used with library imports to Token.AS -Change token type of AS (or WITH NAME) used with library imports to Token.AS
    #4385
    #4385 enhancement mediumChange the parsing model object produced by Test Tags (and Force Tags) to TestTags -Change the parsing model object produced by Test Tags (and Force Tags) to TestTags
    #4432
    #4432 enhancement medium Loudly deprecate singular section headers
    #4501
    #4501 enhancement medium Loudly deprecate old Python 2/3 compatibility layer and other deprecated utils
    #4524
    #4524 enhancement medium Loudly deprecate variables used as embedded arguments not matching custom patterns
    #4545
    #4545 enhancement mediumSupport creating assigned variable name based on another variable like ${${var}} = Keyword -Support creating assigned variable name based on another variable like ${${var}} = Keyword
    #4667
    #4667 enhancement medium Remove deprecated constructs from Libdoc spec files
    #4685
    #4685 enhancement medium Deprecate SHORTEST mode being default with FOR IN ZIP loops
    #4708
    #4708 enhancement medium Use assing, not variable, with FOR and TRY/EXCEPT model objects when referring to assigned variables
    #4720
    #4720 enhancement medium Require --suite parent.suite to match the full suite name
    #4721
    #4721 enhancement medium Change behavior of --test and --include so that they are cumulative
    #4747
    #4747 enhancement medium Support [Setup] with user keywords
    #4784
    #4784 enhancement medium Remote: Enhance datetime, date and timedelta conversion
    #4841
    #4841 enhancement mediumAdd typing to all modules under robot.api -Add typing to all modules under robot.api
    #4846
    #4846 enhancement medium Result model: Loudly deprecate not needed attributes and remove already deprecated ones
    #4872
    #4872 enhancement medium Control continue-on-failure mode by using recursive and non-recursive tags together
    #4876
    #4876 enhancement medium Loudly deprecate [Return] setting
    #4877
    #4877 enhancement mediumXML: Support ignoring element order with Elements Should Be Equal -XML: Support ignoring element order with Elements Should Be Equal
    #4883
    #4883 enhancement medium Result model: Add message to keywords and control structures and remove doc from controls
    #4884
    #4884 enhancement medium Result model: Enhance storing keyword name
    #4896
    #4896 enhancement medium Support separator=<value> configuration option with scalar variables in Variables section
    #4903
    #4903 enhancement medium Support argument conversion and named arguments with dynamic variable files
    #4905
    #4905 enhancement medium Support creating variable name based on another variable like ${${VAR}} in Variables section
    #4910
    #4910 enhancement medium Make listener v3 the default listener API
    #4912
    #4912 enhancement mediumParsing model: Move type and tokens from _fields to _attributes -Parsing model: Move type and tokens from _fields to _attributes
    #4930
    #4930 enhancement medium BuiltIn: New Reset Log Level keyword for resetting the log level to the original value
    #4939
    #4939 enhancement mediumParsing model: Rename Return to ReturnSetting and ReturnStatement to Return -Parsing model: Rename Return to ReturnSetting and ReturnStatement to Return
    #4942
    #4942 enhancement medium Add public argument conversion API for libraries and other tools
    #4952
    #4952 enhancement medium Collections: Make ignore_order and ignore_keys recursive
    #4960
    #4960 enhancement mediumSupport integer conversion with strings representing whole number floats like '1.0' and '2e10' -Support integer conversion with strings representing whole number floats like '1.0' and '2e10'
    #4976
    #4976 enhancement medium Support string SELF (case-insenstive) when library registers itself as listener
    #4979
    #4979 enhancement medium Add robot.result.TestSuite.to/from_xml methods
    #4982
    #4982 enhancement medium DateTime: Support datetime.date as an input format with date related keywords
    #4983
    #4983 enhancement mediumType conversion: Remove support for deprecated ByteString -Type conversion: Remove support for deprecated ByteString
    #5000
    #5000 enhancement medium Nicer API for setting keyword call arguments programmatically
    #4934
    #4934 --- medium Enhance performance of visiting parsing model
    #4621
    #4621 bug low OperatingSystem library docs have broken link / title
    #4798
    #4798 bug low ---removekeywords passed doesn't remove test setup and teardown--removekeywords passed doesn't remove test setup and teardown
    #4867
    #4867 bug low Original order of dictionaries is not preserved when they are pretty printed in log messages
    #4870
    #4870 bug low User keyword teardown missing from running model JSON schema
    #4904
    #4904 bug low Importing static variable file with arguments does not fail
    #4913
    #4913 bug low Trace log level logs arguments twice for embedded arguments
    #4927
    #4927 bug low WARN level missing from the log level selector in log.html
    #4967
    #4967 bug low Variables are not resolved in keyword name in WUKS error message
    #4861
    #4861 enhancement low Remove deprecated accept_plain_values from timestr_to_secs utility function
    #4862
    #4862 enhancement low Deprecate elapsed_time_to_string accepting time as milliseconds
    #4864
    #4864 enhancement low Process: Make warning about processes hanging if output buffers get full more visible
    #4885
    #4885 enhancement low Add full_name to replace longname to suite and test objects
    #4900
    #4900 enhancement low Make keywords and control structures in log look more like original data
    #4922
    #4922 enhancement low Change the log level of Set Log Level message from INFO to DEBUG
    #4933
    #4933 enhancement low Type conversion: Ignore hyphens when matching enum members
    #4935
    #4935 enhancement low Use casefold, not lower, when comparing strings case-insensitively
    #4936
    #4936 enhancement low Remove bytes support from robot.utils.normalize function
    #4954
    #4954 enhancement lowCollections and String: Add ignore_case as alias for case_insensitive -Collections and String: Add ignore_case as alias for case_insensitive
    #4958
    #4958 enhancement low Document robot_running and dry_run_active properties of the BuiltIn library in the User Guide
    #4975
    #4975 enhancement lowSupport times and x suffixes with WHILE limit to make it more compatible with Wait Until Keyword Succeeds -Support times and x suffixes with WHILE limit to make it more compatible with Wait Until Keyword Succeeds
    #4988
    #4988 enhancement low Change paths passed to listener v3 methods to pathlib.Path instances
    - - + - - + - - + - - + - - + diff --git a/test/markups/README.toc.asciidoc.html b/test/markups/README.toc.asciidoc.html index 4e32869a..a692ce33 100644 --- a/test/markups/README.toc.asciidoc.html +++ b/test/markups/README.toc.asciidoc.html @@ -1,16 +1,14 @@

    Document Title

    -
    -
    Contents
    +
    +
    Contents
    -

    Section A

    +

    Section A

    -

    Subsection A-1

    +

    Subsection A-1

    -

    Subsection A-2

    +

    Subsection A-2

    -

    Section B

    +

    Section B

    -

    Subsection B-1

    +

    Subsection B-1

    -

    Subsection B-2

    +

    Subsection B-2

    diff --git a/test/markups/README.toc.rst.html b/test/markups/README.toc.rst.html index c5b3ecbb..8e37a9e4 100644 --- a/test/markups/README.toc.rst.html +++ b/test/markups/README.toc.rst.html @@ -1,23 +1,22 @@ -
    + -

    1   Introduction

    +

    1   Introduction

    -

    1.1   What is pycparser?

    +

    1.1   What is pycparser?

    pycparser is a parser for the C language, written in pure Python. It is a module designed to be easily integrated into applications that need to parse C source code.

    -

    1.2   What is it good for?

    +

    1.2   What is it good for?

    Anything that needs C code to be parsed. The following are some uses for pycparser, taken from real user reports:

      From dea1788bffee44b29b60d3dbe3f88a458d295c00 Mon Sep 17 00:00:00 2001 From: Zack Koppert Date: Mon, 8 Jun 2026 20:01:55 -0700 Subject: [PATCH 4/4] build: drop unused sanitize gem dev dependency html-pipeline v3 uses Selma directly instead of the sanitize gem, and nothing in this repo requires sanitize. The 'sanitize' method calls in lib/github/markup/command_implementation.rb are an internal encoding helper, not the gem. Caught by Copilot's code review on #2061. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Zack Koppert --- Gemfile.lock | 5 ----- github-markup.gemspec | 1 - 2 files changed, 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index e1d510c5..0d39fc8f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -35,7 +35,6 @@ GEM commonmarker (2.8.2-x86_64-linux) concurrent-ruby (1.3.6) connection_pool (3.0.2) - crass (1.0.6) creole (0.5.0) date (3.5.1) docile (1.4.1) @@ -95,9 +94,6 @@ GEM rexml (3.4.4) rubypants (0.7.1) rugged (1.9.0) - sanitize (6.1.3) - crass (~> 1.0.2) - nokogiri (>= 1.12.0) securerandom (0.4.1) selma (0.5.0) rb_sys (~> 0.9) @@ -157,7 +153,6 @@ DEPENDENCIES rdoc (~> 7.2.0) redcarpet rexml - sanitize (>= 4.6.3) simplecov (~> 0.22) twitter-text (~> 1.14) wikicloth (= 0.8.3) diff --git a/github-markup.gemspec b/github-markup.gemspec index e1d1b33d..45d4a0a6 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -27,7 +27,6 @@ Gem::Specification.new do |s| s.add_development_dependency 'activesupport', '~> 8.1.3' s.add_development_dependency 'minitest', '>= 5.4.3', '~> 6.0' s.add_development_dependency 'html-pipeline', '~> 3.2' - s.add_development_dependency 'sanitize', '>= 4.6.3' s.add_development_dependency 'nokogiri', '~> 1.19.2' s.add_development_dependency 'nokogiri-diff', '~> 0.3.0' s.add_development_dependency "github-linguist", ">= 7.1.3"
    -

    Table of Contents

    +

    +

    +

    Table of Contents

    - +

    -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. +

    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. +

    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.

    Which API should you use? For projects where Ruby is the only scripting language involved, we recommend Embed Core for the following reasons:

    -

      +

      1. With Embed Core, you can create several Ruby environments in one JVM, and configure them individually (via org.jruby.RubyInstanceConfig. With the other APIs, configuration options can only be set globally, via the System properties.
      2. Embed Core offers several shortcuts, such as loading scripts from a java.io.InputStream, or returning Java-friendly objects from Ruby code. These allow you to skip a lot of boilerplate.
      For projects requiring multiple scripting languages, JSR223 is a good fit. Though the API is language-independent, JRuby's implementation of it allows you to set some Ruby-specific options. In particular, you can control the threading model of the scripting engine, the lifetime of local variables, compilation mode, and how line numbers are displayed. - -

      The full API documentation has all the gory details. It's worth talking about a couple of the finer points here. +

      +

      The full API documentation has all the gory details. It's worth talking about a couple of the finer points here.

      -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. +

      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. -^ This link goes nowhere.
      \ No newline at end of file +

      1. +^ This link goes nowhere.

      \ No newline at end of file diff --git a/test/markups/README.org.html b/test/markups/README.org.html index 458024af..c3909dfa 100644 --- a/test/markups/README.org.html +++ b/test/markups/README.org.html @@ -1,28 +1,19 @@

      org-ruby

      - - - - - - - - - - - - + + +
      Status:Under Development
      Location:http://github.com/wallyqs/org-ruby
      Version:0.9.0
      Status:Under Development
      Location:http://github.com/wallyqs/org-ruby
      Version:0.9.0
      -

      1 Description

      +

      1 Description

      Helpful Ruby routines for parsing orgmode files. The most significant thing this library does today is convert orgmode files to textile. Currently, you cannot do much to customize the conversion. The supplied textile conversion is optimized for - extracting “content” from the orgfile as opposed to “metadata.”

      -

      2 History

      -

      2.1 2014-02-08: Version 0.9.0

      + extracting “content” from the orgfile as opposed to “metadata.”

      +

      2 History

      +

      2.1 2014-02-08: Version 0.9.0

        -
      • Let’s make sure #+INCLUDE: is not supported
      • +
      • Let’s make sure #+INCLUDE: is not supported
      • And confirm that syntax highlight is supported
      • @@ -30,18 +21,18 @@

        2.1 2014-02-08: Version 0.9.0

         module GitHub
           module Markup
        -    VERSION = 'test'
        +    VERSION = 'test'
             Version = VERSION
           end
         end
         
        -

        2.2 2009-12-30: Version 0.5.1

        +

        2.2 2009-12-30: Version 0.5.1

          -
        • Minor enhancement: Recognize lines starting with “:” as examples.
        • +
        • Minor enhancement: Recognize lines starting with “:” as examples.
        • Minor enhancement: Recognize #+BEGIN_SRC as source blocks
        • -
        • Minor enhancement: Add “src” and “example” classes to <pre> blocks.
        • +
        • Minor enhancement: Add “src” and “example” classes to <pre> blocks.
        -

        2.3 2009-12-30: Version 0.5.0

        +

        2.3 2009-12-30: Version 0.5.0

        • Parse (but not necessarily use) in-buffer settings. The following in-buffer settings are used: @@ -56,7 +47,7 @@

          2.3 2009-12-30: Version 0.5.0

          the tree to export
        -
      • Rewrite “file:(blah).org” links to “http:(blah).html” links. This +
      • Rewrite “file:(blah).org” links to “http:(blah).html” links. This makes the inter-links to other org-mode files work.
      • Uses <th> tags inside table rows that precede table separators.
      • Bugfixes: @@ -65,7 +56,7 @@

        2.3 2009-12-30: Version 0.5.0

      -

      2.4 2009-12-29: Version 0.4.2

      +

      2.4 2009-12-29: Version 0.4.2

      • Got rid of the extraneous newline at the start of code blocks.
      • Everything now shows up in code blocks, even org-mode metadata.
      • @@ -76,59 +67,59 @@

        2.4 2009-12-29: Version 0.4.2

      -

      2.5 2009-12-29: Version 0.4.1

      +

      2.5 2009-12-29: Version 0.4.1

      • HTML is now escaped by default
      • org-mode comments will show up in a code block.
      -

      2.6 2009-12-29: Version 0.4

      +

      2.6 2009-12-29: Version 0.4

        -
      • The first thing output in HTML gets the class “title”
      • +
      • The first thing output in HTML gets the class “title”
      • HTML output is now indented
      • Proper support for multi-paragraph list items.

        See? This paragraph is part of the last bullet.

      • Fixed bugs:
          -
        • “rake spec” wouldn’t work on Linux. Needed “require ‘rubygems’”.
        • +
        • “rake spec” wouldn’t work on Linux. Needed “require ‘rubygems’”.
      -

      2.7 2009-12-27: Version 0.3

      +

      2.7 2009-12-27: Version 0.3

        -
      • Uses rubypants to get better typography (smart quotes, ellipses, etc…).
      • +
      • Uses rubypants to get better typography (smart quotes, ellipses, etc…).
      • Fixed bugs:
        • Tables and lists did not get properly closed at the end of file
        • -
        • You couldn’t do inline formatting inside table cells
        • +
        • You couldn’t do inline formatting inside table cells
        • Characters in PRE blocks were not HTML escaped.
      -

      2.8 2009-12-26: Version 0.2

      +

      2.8 2009-12-26: Version 0.2

      • Added to_html output on the parser.
      • Added support for the full range of inline markup: bold, - italic, code, verbatim, underline, strikethrough.
      • + italic, code, verbatim, underline, strikethrough.
      • Lots of refactoring to make the code more maintainable.
      -

      2.9 2009-12-23: Version 0.1

      +

      2.9 2009-12-23: Version 0.1

      • Added support for block code, like this:
           def flush!
        -  @logger.debug "FLUSH ==========> #{@output_type}"
        +  @logger.debug "FLUSH ==========> #{@output_type}"
           if (@output_type == :blank) then
        -    @output << "\n"
        +    @output << "\n"
           elsif (@buffer.length > 0) then
             if @cancel_modifier then
        -      @output << "p. " if @output_type == :paragraph
        +      @output << "p. " if @output_type == :paragraph
               @cancel_modifier = false
             end
             @output << @paragraph_modifier if (@paragraph_modifier and not sticky_modifier?)
        -    @output << @buffer.textile_substitution << "\n"
        +    @output << @buffer.textile_substitution << "\n"
           end
        -  @buffer = ""
        +  @buffer = ""
         end
             
      • diff --git a/test/markups/README.pod.html b/test/markups/README.pod.html index 63caf6bc..96f2cf2b 100644 --- a/test/markups/README.pod.html +++ b/test/markups/README.pod.html @@ -1,46 +1,42 @@ -

        Matrixy

        +

        Matrixy

        -

        INTRODUCTION

        +

        INTRODUCTION

        This is a port of the MATLAB/Octave programming language to Parrot. See the ROADMAP file for more information on the status of this project, and what else needs to be done.

        -

        ABOUT

        +

        ABOUT

        Primary goals are:

          -
        • -

          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.

        -

        IMPLEMENTATION

        +

        IMPLEMENTATION

        This project is broken into three primary components:

          -
        • -

          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/.

        -

        DEPENDENCIES

        +

        DEPENDENCIES

        Matrixy depends on these dependencies:

        -

        Parrot

        +

        Parrot

        To get a proper version of Parrot to build Matrixy, you will need to check out and build Parrot from source:

        @@ -49,28 +45,28 @@

        Parrot

        perl Configure.pl make && make test && make install-dev -

        Parrot-Linear-Algebra

        +

        Parrot-Linear-Algebra

        The linear algebra package for Parrot is available separately and provides functionality required by Matrixy. This includes matrix data types and matrix manipulation libraries

        -

        BUILDING

        +

        BUILDING

        Once all dependencies are in place, you can build Matrixy using this sequence of commands:

        perl Configure.pl
         nmake test
        -

        TODO

        +

        TODO

        * Parser
         * Standard Builtins
         * Test against Octave Test Suite.
        -

        BUGS

        +

        BUGS

        Lots!

        -

        CONTACT

        +

        CONTACT

        If you need to contact the Matrixy team, go to the project home page at:

        diff --git a/test/markups/README.rdoc.html b/test/markups/README.rdoc.html index 93770dde..996dc23e 100644 --- a/test/markups/README.rdoc.html +++ b/test/markups/README.rdoc.html @@ -1,12 +1,9 @@ -
          -
        • +
          • One

            -
          • -
          • +
          • Two

            -
          • -
          +

        This is an absolute link. So is this: github.com

        -

        This is a relative link. So is this: rawr.html

        \ No newline at end of file +

        This is a relative link. So is this: rawr.html

        \ No newline at end of file diff --git a/test/markups/README.rst.html b/test/markups/README.rst.html index 7a0f8327..a3b5e4b0 100644 --- a/test/markups/README.rst.html +++ b/test/markups/README.rst.html @@ -1,11 +1,11 @@

        Header 1

        -

        Subtitle

        +

        Subtitle

        Example text.

        -

    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) + - - + - - + - - + - - + - - + - - + - - + - - + @@ -82,24 +74,19 @@

    Header 2

    - - + - - + - - + - - + - - + @@ -115,25 +102,17 @@

    Field list

    - - - + - - - - - - + - - - +
    Things that are Awesome (on a scale of 1-11)
    Thing
    Thing Awesomeness
    Icecream
    Icecream 7
    Honey Badgers
    Honey Badgers 10.5
    Nickelback
    Nickelback -2
    Iron Man
    Iron Man 10
    Iron Man 2
    Iron Man 2 3
    Tabular Data
    Tabular Data 5
    Made up ratings
    Made up ratings 11
    Travis
    Travis http://travis-ci.org/tony/pullv
    Docs
    Docs http://pullv.rtfd.org
    API
    API http://pullv.readthedocs.org/en/latest/api.html
    Issues
    Issues https://github.com/tony/pullv/issues
    Source
    Source https://github.com/tony/pullv
    123456789 123456789 123456789 123456789 123456789 1:
     Uh-oh! This name is too long!
     Uh-oh! This name is too long!
    123456789 123456789 123456789 123456789 1234567890:this is a long name, +
    123456789 123456789 123456789 123456789 1234567890:this is a long name, but no problem!
    123456789 12345:this is not so long, but long enough for the default!
    123456789 12345:this is not so long, but long enough for the default!
    123456789 1234:this should work even with the default :)
    123456789 1234:this should work even with the default :)
    -

    someone@somewhere.org

    +

    someone@somewhere.org

    Press Ctrl+C to quit

    -

    RAW HTML!

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

    RAW HTML!

    \ No newline at end of file diff --git a/test/markups/README.rst.txt.html b/test/markups/README.rst.txt.html index 6d5d0675..0accc78e 100644 --- a/test/markups/README.rst.txt.html +++ b/test/markups/README.rst.txt.html @@ -13,24 +13,19 @@

    Header 2

    Travis
    Travis http://travis-ci.org/tony/pullv
    Docs
    Docs http://pullv.rtfd.org
    API
    API http://pullv.readthedocs.org/en/latest/api.html
    Issues
    Issues https://github.com/tony/pullv/issues
    Source
    Source https://github.com/tony/pullv