├── .devcontainer └── devcontainer.json ├── .editorconfig ├── .github ├── ISSUE_TEMPLATE │ ├── new-feature.yml │ └── report-a-bug.yml └── workflows │ ├── build-docker-images.yml │ ├── checks.yml │ ├── docs-publish.yml │ └── pypi-publish.yml ├── .gitignore ├── .vscode ├── launch.json └── tasks.json ├── ACKNOWLEDGMENTS.md ├── CHANGELOG.md ├── LICENSE ├── MANIFEST.in ├── Makefile ├── README.md ├── configtest.py ├── docker ├── base.Dockerfile └── dev.Dockerfile ├── pyproject.toml ├── run.sh ├── svn-history └── xml2rfc-revmap.txt ├── test.py ├── tests ├── .gitignore ├── failed │ └── .gitignore ├── input │ ├── .gitignore │ ├── abbreviations.xml │ ├── draft-flanagan-nonascii-05.xml │ ├── draft-miek-test-v3.xml │ ├── draft-miek-test.xml │ ├── draft-template-old.xml │ ├── draft-template.xml │ ├── draft-v3-features.xml │ ├── draft_root.xml │ ├── elements.txt │ ├── elements.xml │ ├── figure_title.xml │ ├── ietf.svg │ ├── ietflogo.png │ ├── indexes.xml │ ├── list_format.xml │ ├── list_hanging.xml │ ├── list_letters.xml │ ├── no-toc.xml │ ├── references.xml │ ├── rfc6635.xml │ ├── rfc6787.xml │ ├── rfc7911.xml │ ├── rfc7991.references.svg │ ├── rfc7991.references.txt │ ├── rfc9001.canonical.xml │ ├── rfc99999.xml │ ├── rfc_root.xml │ ├── section.xml │ ├── slashbreak.xml │ ├── sourcecode.xml │ ├── texttable_full.xml │ ├── texttable_small.xml │ ├── texttable_small_all.xml │ ├── texttable_small_full.xml │ ├── texttable_small_headers.xml │ ├── texttable_small_none.xml │ ├── texttable_title.xml │ ├── textwrap.xml │ ├── unicode.xml │ └── utf8.xml └── valid │ ├── .gitignore │ ├── abbreviations.html │ ├── abbreviations.nroff │ ├── abbreviations.raw.txt │ ├── abbreviations.text │ ├── abbreviations.txt │ ├── docfile.html │ ├── draft-miek-test.dateshift.txt │ ├── draft-miek-test.exp.xml │ ├── draft-miek-test.html │ ├── draft-miek-test.nroff │ ├── draft-miek-test.pages.text │ ├── draft-miek-test.prepped.xml │ ├── draft-miek-test.raw.txt │ ├── draft-miek-test.text │ ├── draft-miek-test.txt │ ├── draft-miek-test.v2v3.xml │ ├── draft-miek-test.v3.html │ ├── draft-miek-test.v3add-xinclude-w-revision.xml │ ├── draft-miek-test.v3add-xinclude.xml │ ├── draft-template-old.exp.xml │ ├── draft-template-old.html │ ├── draft-template-old.nroff │ ├── draft-template-old.prepped.xml │ ├── draft-template-old.raw.txt │ ├── draft-template-old.txt │ ├── draft-template-old.v2v3.xml │ ├── draft-template.exp.xml │ ├── draft-template.html │ ├── draft-template.nroff │ ├── draft-template.pages.text │ ├── draft-template.prepped.xml │ ├── draft-template.raw.txt │ ├── draft-template.text │ ├── draft-template.txt │ ├── draft-template.v2v3.prepped.xml │ ├── draft-template.v2v3.xml │ ├── draft-template.v3.html │ ├── draft-template.v3add-xinclude-w-revision.xml │ ├── draft-template.v3add-xinclude.xml │ ├── draft-v3-features.prepped.xml │ ├── draft-v3-features.text │ ├── draft-v3-features.v3.html │ ├── elements.bom.text │ ├── elements.pages.text │ ├── elements.prepped.xml │ ├── elements.text │ ├── elements.txt │ ├── elements.v3.html │ ├── elements.wip.text │ ├── figure_title.html │ ├── figure_title.nroff │ ├── figure_title.raw.txt │ ├── figure_title.text │ ├── figure_title.txt │ ├── header_footer_draft.nroff │ ├── header_footer_draft.txt │ ├── header_footer_rfc.nroff │ ├── header_footer_rfc.txt │ ├── ietf.svg │ ├── indexes.pages.text │ ├── indexes.prepped.xml │ ├── indexes.text │ ├── indexes.v3.html │ ├── list_format.html │ ├── list_format.nroff │ ├── list_format.raw.txt │ ├── list_format.text │ ├── list_format.txt │ ├── list_hanging.html │ ├── list_hanging.nroff │ ├── list_hanging.raw.txt │ ├── list_hanging.text │ ├── list_hanging.txt │ ├── list_letters.html │ ├── list_letters.nroff │ ├── list_letters.raw.txt │ ├── list_letters.text │ ├── list_letters.txt │ ├── manpage.txt │ ├── no-toc.pages.text │ ├── no-toc.prepped.xml │ ├── no-toc.text │ ├── no-toc.v3.html │ ├── references.html │ ├── references.nroff │ ├── references.raw.txt │ ├── references.text │ ├── references.txt │ ├── rfc6635.txt │ ├── rfc6787.exp.xml │ ├── rfc6787.html │ ├── rfc6787.nroff │ ├── rfc6787.pages.text │ ├── rfc6787.prepped.xml │ ├── rfc6787.raw.txt │ ├── rfc6787.text │ ├── rfc6787.txt │ ├── rfc6787.v2v3.xml │ ├── rfc6787.v3.html │ ├── rfc6787.v3add-xinclude.xml │ ├── rfc7754.edited.raw.txt │ ├── rfc7754.edited.text │ ├── rfc7754.edited.txt │ ├── rfc7754.txt │ ├── rfc7911.exp.xml │ ├── rfc7911.html │ ├── rfc7911.nroff │ ├── rfc7911.pages.text │ ├── rfc7911.prepped.xml │ ├── rfc7911.raw.txt │ ├── rfc7911.text │ ├── rfc7911.txt │ ├── rfc7911.v2v3.xml │ ├── rfc7911.v3.html │ ├── rfc7911.v3add-xinclude-w-revision.xml │ ├── rfc7911.v3add-xinclude.xml │ ├── rfc9001.canonical.html │ ├── rfc99999.exp.xml │ ├── rfc99999.html │ ├── rfc99999.pages.text │ ├── rfc99999.prepped.xml │ ├── rfc99999.text │ ├── rfc99999.txt │ ├── rfc99999.v2v3.xml │ ├── rfc99999.v3.html │ ├── rfc99999.v3add-xinclude-w-revision.xml │ ├── rfc99999.v3add-xinclude.xml │ ├── section.html │ ├── section.nroff │ ├── section.raw.txt │ ├── section.text │ ├── section.txt │ ├── slashbreak.html │ ├── slashbreak.nroff │ ├── slashbreak.raw.txt │ ├── slashbreak.text │ ├── slashbreak.txt │ ├── sourcecode.pages.text │ ├── sourcecode.prepped.xml │ ├── sourcecode.text │ ├── sourcecode.v3.html │ ├── status_iab_exp.nroff │ ├── status_iab_exp.txt │ ├── status_iab_historic.nroff │ ├── status_iab_historic.txt │ ├── status_iab_info.nroff │ ├── status_iab_info.txt │ ├── status_ietf_bcp_yes.nroff │ ├── status_ietf_bcp_yes.txt │ ├── status_ietf_exp_no.nroff │ ├── status_ietf_exp_no.txt │ ├── status_ietf_exp_yes.txt │ ├── status_ietf_historic_no.nroff │ ├── status_ietf_historic_no.txt │ ├── status_ietf_historic_yes.nroff │ ├── status_ietf_historic_yes.txt │ ├── status_ietf_info_no.nroff │ ├── status_ietf_info_no.txt │ ├── status_ietf_info_yes.nroff │ ├── status_ietf_info_yes.txt │ ├── status_ietf_std_yes.nroff │ ├── status_ietf_std_yes.txt │ ├── status_independent_exp.nroff │ ├── status_independent_exp.txt │ ├── status_independent_historic.nroff │ ├── status_independent_historic.txt │ ├── status_independent_info.nroff │ ├── status_independent_info.txt │ ├── status_irtf_exp_no.nroff │ ├── status_irtf_exp_no.txt │ ├── status_irtf_exp_nowg.nroff │ ├── status_irtf_exp_nowg.txt │ ├── status_irtf_exp_yes.nroff │ ├── status_irtf_exp_yes.txt │ ├── status_irtf_historic_no.nroff │ ├── status_irtf_historic_no.txt │ ├── status_irtf_historic_nowg.nroff │ ├── status_irtf_historic_nowg.txt │ ├── status_irtf_historic_yes.nroff │ ├── status_irtf_historic_yes.txt │ ├── status_irtf_info_no.nroff │ ├── status_irtf_info_no.txt │ ├── status_irtf_info_nowg.nroff │ ├── status_irtf_info_nowg.txt │ ├── status_irtf_info_yes.nroff │ ├── status_irtf_info_yes.txt │ ├── texttable_full.html │ ├── texttable_full.nroff │ ├── texttable_full.raw.txt │ ├── texttable_full.text │ ├── texttable_full.txt │ ├── texttable_small.html │ ├── texttable_small.nroff │ ├── texttable_small.raw.txt │ ├── texttable_small.text │ ├── texttable_small.txt │ ├── texttable_small_all.html │ ├── texttable_small_all.nroff │ ├── texttable_small_all.raw.txt │ ├── texttable_small_all.text │ ├── texttable_small_all.txt │ ├── texttable_small_full.html │ ├── texttable_small_full.nroff │ ├── texttable_small_full.raw.txt │ ├── texttable_small_full.text │ ├── texttable_small_full.txt │ ├── texttable_small_headers.html │ ├── texttable_small_headers.nroff │ ├── texttable_small_headers.raw.txt │ ├── texttable_small_headers.text │ ├── texttable_small_headers.txt │ ├── texttable_small_none.html │ ├── texttable_small_none.nroff │ ├── texttable_small_none.raw.txt │ ├── texttable_small_none.text │ ├── texttable_small_none.txt │ ├── texttable_title.html │ ├── texttable_title.nroff │ ├── texttable_title.raw.txt │ ├── texttable_title.text │ ├── texttable_title.txt │ ├── textwrap.html │ ├── textwrap.nroff │ ├── textwrap.raw.txt │ ├── textwrap.text │ ├── textwrap.txt │ ├── top_draft.nroff │ ├── top_draft.txt │ ├── top_rfc.nroff │ ├── top_rfc.txt │ ├── unicode.exp.xml │ ├── unicode.html │ ├── unicode.nroff │ ├── unicode.prepped.xml │ ├── unicode.raw.txt │ ├── unicode.text │ ├── unicode.txt │ ├── unicode.v2v3.xml │ ├── utf8.exp.xml │ ├── utf8.html │ ├── utf8.nroff │ ├── utf8.prepped.xml │ ├── utf8.raw.txt │ ├── utf8.text │ ├── utf8.txt │ ├── utf8.v2v3.xml │ └── v3test.prepped.xml ├── tox.ini └── xml2rfc ├── .gitignore ├── __init__.py ├── boilerplate_id_guidelines.py ├── boilerplate_rfc_7841.py ├── boilerplate_tlp.py ├── data ├── SVG-1.2-RFC.rnc ├── SVG-1.2-RFC.rng ├── Scripts.txt ├── metadata.js ├── metadata.min.js ├── reference.rnc ├── reference.rng ├── referencegroup.rnc ├── referencegroup.rng ├── rfc7991.rnc ├── rfc7991.rng ├── v2.rnc ├── v2.rng ├── v3.rnc ├── v3.rng ├── xml2rfc-v3-emacs-nxml.rnc ├── xml2rfc.css └── xml2rfc.js ├── debug.py ├── log.py ├── parser.py ├── run.py ├── scripts.py ├── strings.py ├── templates ├── address_card.html ├── base.html ├── doc.xml ├── doc.yaml ├── rfc2629-other.ent ├── rfc2629-xhtml.ent └── rfc2629.dtd ├── uniscripts ├── LICENSE ├── README.md ├── __init__.py ├── unidata.py └── update │ ├── make_unidata.py │ └── update.sh ├── util ├── __init__.py ├── date.py ├── file.py ├── fonts.py ├── name.py ├── num.py ├── postal.py └── unicode.py ├── utils.py ├── walkpdf.py └── writers ├── .gitignore ├── __init__.py ├── base.py ├── bib.py ├── doc.py ├── expand.py ├── expanded_xml.py ├── html.py ├── legacy_html.py ├── nroff.py ├── paginated_txt.py ├── pdf.py ├── preptool.py ├── raw_txt.py ├── text.py ├── unprep.py └── v2v3.py /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xml2rfc", 3 | "build": { 4 | "dockerfile": "../Dockerfile", 5 | "context": "..", 6 | "args": { 7 | } 8 | }, 9 | 10 | // Set *default* container specific settings.json values on container create. 11 | "settings": { 12 | "terminal.integrated.defaultProfile.linux": "zsh", 13 | "python.defaultInterpreterPath": "/usr/local/bin/python", 14 | "python.linting.enabled": true, 15 | "python.linting.pylintEnabled": true, 16 | "python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8", 17 | "python.formatting.blackPath": "/usr/local/py-utils/bin/black", 18 | "python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf", 19 | "python.linting.banditPath": "/usr/local/py-utils/bin/bandit", 20 | "python.linting.flake8Path": "/usr/local/py-utils/bin/flake8", 21 | "python.linting.mypyPath": "/usr/local/py-utils/bin/mypy", 22 | "python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle", 23 | "python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle", 24 | "python.linting.pylintPath": "/usr/local/py-utils/bin/pylint" 25 | }, 26 | 27 | // Add the IDs of extensions you want installed when the container is created. 28 | "extensions": [ 29 | "ms-python.python", 30 | "ms-python.vscode-pylance", 31 | "ms-azuretools.vscode-docker", 32 | "editorconfig.editorconfig", 33 | "redhat.vscode-yaml", 34 | "visualstudioexptteam.vscodeintellicode", 35 | "mrmlnc.vscode-duplicate", 36 | "mutantdino.resourcemonitor", 37 | "eamodio.gitlens", 38 | "codezombiech.gitignore", 39 | "oderwat.indent-rainbow" 40 | ], 41 | 42 | // Use 'forwardPorts' to make a list of ports inside the container available locally. 43 | // "forwardPorts": [], 44 | 45 | // Use 'postCreateCommand' to run commands after the container is created. 46 | "postCreateCommand": "pip3 install --user -r requirements.txt", 47 | 48 | // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. 49 | // "remoteUser": "vscode", 50 | "features": { 51 | "github-cli": "latest" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | [*] 8 | charset = utf-8 9 | end_of_line = lf 10 | 11 | # Settings for Python files 12 | # --------------------------------------------------------- 13 | # PEP8 Style 14 | 15 | [*.py] 16 | indent_style = space 17 | indent_size = 4 18 | trim_trailing_whitespace = false 19 | insert_final_newline = false 20 | 21 | # Settings for .md files 22 | # --------------------------------------------------------- 23 | # GitHub Markdown Style 24 | 25 | [*.md] 26 | indent_style = space 27 | indent_size = 2 28 | trim_trailing_whitespace = false 29 | 30 | # Settings for Makefile 31 | # --------------------------------------------------------- 32 | 33 | [Makefile] 34 | indent_style = tab 35 | indent_size = 4 36 | 37 | # Settings for .github folder 38 | # --------------------------------------------------------- 39 | 40 | [.github/**] 41 | indent_style = space 42 | indent_size = 2 43 | trim_trailing_whitespace = false 44 | 45 | # Settings for .devcontainer folder 46 | # --------------------------------------------------------- 47 | 48 | [.devcontainer/**] 49 | indent_style = space 50 | indent_size = 2 51 | trim_trailing_whitespace = true 52 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/new-feature.yml: -------------------------------------------------------------------------------- 1 | name: New Feature / Enhancement 2 | description: Propose a new idea to be implemented 3 | labels: ["enhancement"] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | Thanks for taking the time to propose a new feature / enhancement idea. 9 | - type: textarea 10 | id: description 11 | attributes: 12 | label: Description 13 | description: Include as much info as possible, including mockups / screenshots if available. 14 | placeholder: Description 15 | validations: 16 | required: true 17 | - type: checkboxes 18 | id: terms 19 | attributes: 20 | label: Code of Conduct 21 | description: By submitting this request, you agree to follow our [Code of Conduct](https://github.com/ietf-tools/.github/blob/main/CODE_OF_CONDUCT.md). 22 | options: 23 | - label: I agree to follow the [IETF's Code of Conduct](https://github.com/ietf-tools/.github/blob/main/CODE_OF_CONDUCT.md) 24 | required: true 25 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/report-a-bug.yml: -------------------------------------------------------------------------------- 1 | name: Report a Bug 2 | description: Something isn't right? File a bug report 3 | labels: ["bug"] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | Thanks for taking the time to fill out this bug report. 9 | - type: textarea 10 | id: description 11 | attributes: 12 | label: Describe the issue 13 | description: Include as much info as possible, including the current behavior, expected behavior, screenshots, etc. If this is a display / UX issue, make sure to list the browser(s) you're experiencing the issue on. 14 | placeholder: Description 15 | validations: 16 | required: true 17 | - type: checkboxes 18 | id: terms 19 | attributes: 20 | label: Code of Conduct 21 | description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/ietf-tools/.github/blob/main/CODE_OF_CONDUCT.md) 22 | options: 23 | - label: I agree to follow the [IETF's Code of Conduct](https://github.com/ietf-tools/.github/blob/main/CODE_OF_CONDUCT.md) 24 | required: true 25 | -------------------------------------------------------------------------------- /.github/workflows/build-docker-images.yml: -------------------------------------------------------------------------------- 1 | name: Build Docker Images 2 | 3 | on: 4 | push: 5 | branches: 6 | - 'main' 7 | paths: 8 | - 'docker/base.Dockerfile' 9 | - 'docker/dev.Dockerfile' 10 | 11 | workflow_dispatch: 12 | 13 | jobs: 14 | publish: 15 | runs-on: ubuntu-latest 16 | permissions: 17 | contents: read 18 | packages: write 19 | 20 | steps: 21 | - uses: actions/checkout@v4 22 | 23 | - name: Set up QEMU 24 | uses: docker/setup-qemu-action@v3 25 | 26 | - name: Set up Docker Buildx 27 | uses: docker/setup-buildx-action@v3 28 | 29 | - name: Login to GitHub Container Registry 30 | uses: docker/login-action@v3 31 | with: 32 | registry: ghcr.io 33 | username: ${{ github.actor }} 34 | password: ${{ secrets.GITHUB_TOKEN }} 35 | 36 | - name: Base image - Docker Build & Push 37 | uses: docker/build-push-action@v6 38 | with: 39 | context: . 40 | file: docker/base.Dockerfile 41 | platforms: linux/amd64,linux/arm64 42 | push: true 43 | tags: ghcr.io/ietf-tools/xml2rfc-base:latest 44 | 45 | - name: Dev image - Docker Build & Push 46 | uses: docker/build-push-action@v6 47 | with: 48 | context: . 49 | file: docker/dev.Dockerfile 50 | platforms: linux/amd64,linux/arm64 51 | push: true 52 | tags: ghcr.io/ietf-tools/xml2rfc-dev:latest 53 | -------------------------------------------------------------------------------- /.github/workflows/docs-publish.yml: -------------------------------------------------------------------------------- 1 | name: Deploy Docs to Pages 2 | 3 | on: 4 | # Runs on pushes targeting the default branch 5 | push: 6 | branches: ["main"] 7 | 8 | # Allows you to run this workflow manually from the Actions tab 9 | workflow_dispatch: 10 | 11 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages 12 | permissions: 13 | contents: read 14 | pages: write 15 | id-token: write 16 | 17 | # Allow one concurrent deployment 18 | concurrency: 19 | group: "pages" 20 | cancel-in-progress: true 21 | 22 | jobs: 23 | deploy: 24 | environment: 25 | name: github-pages 26 | url: ${{ steps.deployment.outputs.page_url }} 27 | runs-on: ubuntu-latest 28 | container: ghcr.io/ietf-tools/xml2rfc-base:latest 29 | steps: 30 | - name: Checkout 31 | uses: actions/checkout@v4 32 | 33 | - name: Setup Pages 34 | uses: actions/configure-pages@v5 35 | 36 | - name: Generate docs 37 | run: | 38 | mkdir docs-dist 39 | xml2rfc --docfile --out docs.xml 40 | xml2rfc --html docs.xml --out docs-dist/index.html 41 | 42 | - name: Generate artifact 43 | run: | 44 | tar \ 45 | --dereference --hard-dereference \ 46 | --directory docs-dist \ 47 | -cvf artifact.tar \ 48 | --exclude=.git \ 49 | --exclude=.github \ 50 | . 51 | 52 | - name: Upload artifact 53 | uses: actions/upload-artifact@v4 54 | with: 55 | name: github-pages 56 | path: artifact.tar 57 | retention-days: 1 58 | 59 | - name: Deploy to GitHub Pages 60 | id: deployment 61 | uses: actions/deploy-pages@v4 62 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # A simulation of Subversion default ignores, generated by reposurgeon. 2 | *.o 3 | *.lo 4 | *.la 5 | *.al 6 | *.libs 7 | *.so 8 | *.so.[0-9]* 9 | *.a 10 | *.pyc 11 | *.pyo 12 | *.rej 13 | *~ 14 | *.#* 15 | .*.swp 16 | .DS_store 17 | # Simulated Subversion default ignores end here 18 | 19 | /.cache 20 | /.eggs 21 | /.fonts 22 | /.tox 23 | /attic 24 | # /bin 25 | /build 26 | /deb_dist 27 | /dist 28 | /env 29 | /include 30 | /issue 31 | /lib 32 | /local 33 | /mail 34 | /rfced 35 | /scripts 36 | /tmp 37 | /unix.tag 38 | /xml2rfc.egg-info 39 | /__pycache__ 40 | dev-data -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Python: Run - Draft to HTML", 9 | "type": "python", 10 | "request": "launch", 11 | "program": "${workspaceFolder}/xml2rfc/run.py", 12 | "args": [ 13 | "tests/input/draft-template.xml", 14 | "-p", 15 | "${workspaceFolder}/dev-data", 16 | "--html" 17 | ], 18 | "cwd": "${workspaceFolder}", 19 | "env": { 20 | "PYTHONPATH": "." 21 | }, 22 | "preLaunchTask": "mkdir-dev-output", 23 | "console": "integratedTerminal" 24 | }, 25 | { 26 | "name": "Python: Display Help", 27 | "type": "python", 28 | "request": "launch", 29 | "program": "${workspaceFolder}/xml2rfc/run.py", 30 | "args": ["--help"], 31 | "cwd": "${workspaceFolder}", 32 | "env": { 33 | "PYTHONPATH": "." 34 | }, 35 | "console": "integratedTerminal" 36 | } 37 | ] 38 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "label": "mkdir-dev-output", 8 | "type": "shell", 9 | "command": "mkdir -p ${workspaceFolder}/dev-data" 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /ACKNOWLEDGMENTS.md: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | 3 | `xml2rfc` was originally created in 1999 by Marshall Rose who presented an XML 4 | markup language for RFCs and Internet-Drafts[^1]. The current implementation of 5 | the `xml2rfc` was originally authored by Henrik Levkowetz. 6 | 7 | Here is an inevitably incomplete and unmaintained list of much appreciated 8 | contributors: 9 | 10 | - Marshall Rose 11 | - Henrik Levkowetz 12 | - Josh Bothun 13 | - Kesara Rathnayake 14 | - Robert Sparks 15 | - Wiggins 16 | - Tony Hansen 17 | - Jim Schaad 18 | - Nicolas Giard 19 | - Julian Reschke 20 | - Martin Thomson 21 | - Carsten Bormann 22 | - Jennifer Richards 23 | - Florian Schmaus 24 | - Daniel Kahn Gillmor 25 | - Benson Muite 26 | - Josh Soref 27 | - Justus Winter 28 | - Scott Kitterman 29 | - Jean Mahoney 30 | - Alice Russo 31 | - Asbjørn Ulsberg 32 | - Kent Watsen 33 | - Madison Church 34 | - Lynne Bartholomew 35 | - Tom Haynes 36 | - Alanna Paloma 37 | - Sandy Ginoza 38 | - Sarah Tarrant 39 | - John Scudder 40 | - Paul Hoffman 41 | - Mark Nottingham 42 | - Rahul Gupta 43 | - Bob Hinden 44 | - John Preuß Mattsson 45 | - Rebecca VanRheenen 46 | - John C Klensin 47 | - Randy Bush 48 | - Florian Schmaus 49 | - Adrian Farrel 50 | - Valery Smyslov 51 | - Bill P. Godfrey 52 | - Miek Gieben 53 | - Benoît Claise 54 | - Lars Eggert 55 | - John Levine 56 | - David von Oheimb 57 | - Brian E Carpenter 58 | - Robert Kieffer 59 | 60 | [^1]: https://www.rfc-editor.org/rfc/rfc2629 61 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2022, IETF Trust 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | 1. Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | 2. Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | 3. Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include LICENSE 2 | include CHANGELOG.md 3 | include README.md 4 | include requirements.txt 5 | include xml2rfc/data/* 6 | include xml2rfc/templates/* 7 | -------------------------------------------------------------------------------- /configtest.py: -------------------------------------------------------------------------------- 1 | # Copyright The IETF Trust 2020, All Rights Reserved 2 | # -*- coding: utf-8 -*- 3 | 4 | import importlib 5 | import sys 6 | import warnings 7 | 8 | 9 | errors = 0 10 | 11 | sys.stderr.write("Checking installation of test and development packages:\n") 12 | for (pname, mname) in [ 13 | ('decorator', 'decorator'), 14 | ('dict2xml', 'dict2xml'), 15 | ('pypdf', 'pypdf'), 16 | ]: 17 | try: 18 | sys.stderr.write(" '%s'...\n" % pname) 19 | m = importlib.import_module(mname) 20 | except ImportError: 21 | errors += 1 22 | sys.stderr.write(" Missing package: '%s'\n" % (pname, )) 23 | 24 | if errors: 25 | sys.stderr.write("Not all test requirements are fulfilled\n") 26 | sys.exit(errors) 27 | 28 | try: 29 | import fontconfig 30 | except ImportError: 31 | sys.stderr.write("Python-fontconfig not installed, will try to use fontconfig command-line tools\n" 32 | "Install python-fontconfig for better performance.\n") 33 | fontconfig = None 34 | 35 | for (fname, fcount) in [ 36 | ('Noto Serif', 72), 37 | ('Roboto Mono', 10) 38 | ]: 39 | if fontconfig: 40 | available = fontconfig.query(family=fname) 41 | acount = len(available) 42 | else: 43 | # try external program 44 | 45 | import subprocess 46 | done = subprocess.run(["fc-list", fname], stdout=subprocess.PIPE, stderr=subprocess.PIPE) 47 | if done.returncode == 0: 48 | available = done.stdout.decode().splitlines() 49 | acount = len(available) 50 | else: 51 | sys.exit(done.stderr) 52 | if acount < fcount: 53 | errors += 1 54 | sys.stderr.write(" Missing fonts: found %s fonts for family %s, but expected at least %s\n" % (acount, fname, fcount)) 55 | 56 | if errors: 57 | sys.stderr.write("Not all test requirements are fulfilled\n") 58 | sys.exit(errors) 59 | 60 | -------------------------------------------------------------------------------- /docker/base.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:jammy 2 | LABEL maintainer="IETF Tools Team " 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | ENV LANG=en_US.UTF-8 6 | 7 | WORKDIR /root 8 | 9 | # .bashrc configuration 10 | RUN echo 'xml2rfc --version' >> ~/.bashrc && \ 11 | echo 'if [ -d ~/xml2rfc ]; then cd ~/xml2rfc; fi' >> ~/.bashrc 12 | 13 | # Install dependencies 14 | RUN apt-get update --fix-missing && \ 15 | apt-get install -y --fix-missing \ 16 | libpango-1.0-0 \ 17 | libssl-dev \ 18 | fontconfig \ 19 | libharfbuzz0b \ 20 | libpangoft2-1.0-0 \ 21 | pkg-config \ 22 | libxml2-utils \ 23 | groff \ 24 | wget \ 25 | unzip \ 26 | locales \ 27 | python3.10 \ 28 | python3.10-dev \ 29 | python3-pip \ 30 | python3.10-distutils && \ 31 | locale-gen en_US.UTF-8 && \ 32 | rm -rf /var/lib/apt/lists/* /var/log/dpkg.log && \ 33 | apt-get autoremove -y && \ 34 | apt-get clean -y 35 | 36 | # Install required fonts 37 | RUN mkdir -p ~/.fonts/opentype /tmp/fonts && \ 38 | wget -q -O /tmp/fonts.tar.gz https://github.com/ietf-tools/xml2rfc-fonts/archive/refs/tags/3.22.0.tar.gz && \ 39 | tar zxf /tmp/fonts.tar.gz -C /tmp/fonts && \ 40 | mv /tmp/fonts/*/noto/* ~/.fonts/opentype/ && \ 41 | mv /tmp/fonts/*/roboto_mono/* ~/.fonts/opentype/ && \ 42 | rm -rf /tmp/fonts.tar.gz /tmp/fonts/ && \ 43 | fc-cache -f 44 | 45 | # Copy everything required to build xml2rfc 46 | COPY pyproject.toml README.md LICENSE Makefile configtest.py . 47 | 48 | # Install & update build tools 49 | RUN pip3 install --upgrade \ 50 | pip \ 51 | setuptools \ 52 | wheel 53 | 54 | COPY xml2rfc ./xml2rfc 55 | 56 | # Install xml2rfc 57 | RUN pip install ".[pdf]" 58 | -------------------------------------------------------------------------------- /docker/dev.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ghcr.io/ietf-tools/xml2rfc-base:latest 2 | LABEL maintainer="IETF Tools Team " 3 | 4 | ENV DEBIAN_FRONTEND=noninteractive 5 | 6 | WORKDIR /root 7 | 8 | # Install dependencies 9 | # libxml2-dev and libxslt-dev are requirements for lxml under Python 3.11 10 | RUN apt-get update --fix-missing && \ 11 | apt-get install -y software-properties-common && \ 12 | add-apt-repository ppa:deadsnakes/ppa && \ 13 | apt-get install -y --fix-missing \ 14 | git \ 15 | vim \ 16 | less \ 17 | python3.9 \ 18 | python3.9-dev \ 19 | python3.9-distutils \ 20 | libxml2-dev \ 21 | libxslt-dev \ 22 | python3.11 \ 23 | python3.11-dev \ 24 | python3.11-distutils \ 25 | python3.12 \ 26 | python3.12-dev \ 27 | python3.13 \ 28 | python3.13-dev && \ 29 | rm -rf /var/lib/apt/lists/* /var/log/dpkg.log && \ 30 | apt-get autoremove -y && \ 31 | apt-get clean -y 32 | 33 | # Install tox 34 | RUN pip3 install tox 35 | 36 | # git config 37 | RUN git config --global --add safe.directory /root/xml2rfc 38 | 39 | ENTRYPOINT ["bash"] 40 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "xml2rfc" 3 | dynamic = ["version"] 4 | description = "xml2rfc generates RFCs and IETF drafts from document source in XML according to the IETF xml2rfc v2 and v3 vocabularies." 5 | readme = "README.md" 6 | requires-python = ">=3.9" 7 | license = {file = "LICENSE"} 8 | authors = [{name = "IETF Tools", email = "tools-help@ietf.org"}] 9 | keywords = ["ietf", "rfc", "id", "internet-draft", "xml", "xml2rfc", "xmlrfc"] 10 | classifiers = [ 11 | "Development Status :: 5 - Production/Stable", 12 | "Environment :: Console", 13 | "Operating System :: MacOS :: MacOS X", 14 | "Operating System :: Microsoft :: Windows", 15 | "Operating System :: POSIX :: Linux", 16 | "Programming Language :: Python", 17 | "Topic :: Text Processing", 18 | "Topic :: Text Processing :: Markup :: XML", 19 | "License :: OSI Approved :: BSD License", 20 | "Programming Language :: Python :: 3.9", 21 | "Programming Language :: Python :: 3.10", 22 | "Programming Language :: Python :: 3.11", 23 | "Programming Language :: Python :: 3.12", 24 | "Programming Language :: Python :: 3.13" 25 | ] 26 | dependencies = [ 27 | "platformdirs>=3.6.0", 28 | "configargparse>=1.2.3", 29 | "google-i18n-address>=3.0.0", 30 | "intervaltree>=3.1.0", 31 | "jinja2>=3.1.2", 32 | "lxml>=5.3.0", 33 | "pycountry>=22.3.5", 34 | "pyyaml>=5.3.1", 35 | "requests>=2.5.0", 36 | "setuptools>=24.2.0", 37 | "wcwidth>=0.2.5" 38 | ] 39 | 40 | [project.urls] 41 | homepage = "https://github.com/ietf-tools/xml2rfc" 42 | source = "https://github.com/ietf-tools/xml2rfc" 43 | changelog = "https://github.com/ietf-tools/xml2rfc/blob/main/CHANGELOG.md" 44 | releasenotes = "https://github.com/ietf-tools/xml2rfc/releases" 45 | documentation = "https://ietf-tools.github.io/xml2rfc/" 46 | issues = "https://github.com/ietf-tools/xml2rfc/issues" 47 | 48 | [project.optional-dependencies] 49 | pdf = ["weasyprint==65.0"] 50 | 51 | [project.scripts] 52 | xml2rfc = "xml2rfc.run:main" 53 | 54 | [build-system] 55 | requires = ["setuptools"] 56 | build-backend = "setuptools.build_meta" 57 | 58 | [tool.setuptools] 59 | include-package-data = true 60 | 61 | [tool.setuptools.dynamic] 62 | version = {attr = "xml2rfc.__version__"} 63 | 64 | [tool.setuptools.package-data] 65 | xml2rfc = ["data/*", "templates/*"] 66 | 67 | [tool.setuptools.packages.find] 68 | include = ["xml2rfc*"] 69 | -------------------------------------------------------------------------------- /run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | docker run -it $@ -v ${PWD}:/root/xml2rfc ghcr.io/ietf-tools/xml2rfc-dev:latest 4 | -------------------------------------------------------------------------------- /tests/.gitignore: -------------------------------------------------------------------------------- 1 | /out 2 | /cache 3 | -------------------------------------------------------------------------------- /tests/failed/.gitignore: -------------------------------------------------------------------------------- 1 | /*.txt 2 | -------------------------------------------------------------------------------- /tests/input/.gitignore: -------------------------------------------------------------------------------- 1 | /attic 2 | -------------------------------------------------------------------------------- /tests/input/abbreviations.xml: -------------------------------------------------------------------------------- 1 | Various abbreviations which aren't end of sentence: 2 | Jr. AND Sr. AND i.e. AND Mr. AND Mrs. etc. -- done. Start of next sentence. 3 | Sentence with parentheses (a.k.a. Round brackets) -- done. Start of next sentence. 4 | Sentence with brackets [i.e. Square brackets] -- done. Start of next sentence. 5 | 6 | -------------------------------------------------------------------------------- /tests/input/draft_root.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | Put Your Internet Draft Title 5 | 6 | 8 | Company 9 | 10 |
11 | 12 | 13 | Springfield 14 | IL 15 | US 16 | 17 | 18 | jdoe@example.com 19 |
20 |
21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | Stockholm 29 | Sweden 30 | 31 | 32 | jroe@example.com 33 |
34 |
35 | 36 | 37 | 38 |
39 | 40 | 41 | Stockholm 42 | Sweden 43 | 44 | 45 | jroe@example.com 46 |
47 |
48 | 49 | Company 50 |
51 | 52 | 53 | Springfield 54 | IL 55 | US 56 | 57 | 58 | pcoe@example.com 59 |
60 |
61 | 62 | Company 63 |
64 | 65 | 66 | Springfield 67 | IL 68 | US 69 | 70 | 71 | qcoe@example.com 72 |
73 |
74 | 75 | 76 | 77 | 78 | Insert an abstract: MANDATORY. This template is for creating an 79 | Internet-Draft. 80 | 81 |
82 |
83 | -------------------------------------------------------------------------------- /tests/input/figure_title.xml: -------------------------------------------------------------------------------- 1 | 2 |
3 | 16 |
17 |
18 | 31 |
32 |
33 | -------------------------------------------------------------------------------- /tests/input/ietf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/input/ietflogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ietf-tools/xml2rfc/9ed221972caab90c1844cfa9cfbd0fad2bf51505/tests/input/ietflogo.png -------------------------------------------------------------------------------- /tests/input/list_format.xml: -------------------------------------------------------------------------------- 1 | First list: 2 | #1 3 | 4 | #2 5 | 6 | #3 7 | Specify the indent explicitly so that all the items line up 8 | nicely. 9 | 10 | 11 | 12 | Different list formatting characters, following what v1 supports: 13 | 14 | 15 | 16 | 17 | 18 | style="format %i": 19 | 20 | 21 | first item 22 | second item 23 | third item 24 | fourth item 25 | 5:th item 26 | 6:th item 27 | 7:th item 28 | 8:th item 29 | 9:th item 30 | 10:th item 31 | 11:th item 32 | 12:th item 33 | 13:th item 34 | 14:th item 35 | 36 | 37 | 38 | 39 | 40 | style="format (%d)": 41 | 42 | 43 | first item 44 | second item 45 | third item 46 | 47 | 48 | 49 | 50 | 51 | style="format %c)": 52 | 53 | 54 | first item 55 | second item 56 | third item 57 | 58 | 59 | 60 | 61 | 62 | style="format %C.": 63 | 64 | 65 | first item 66 | second item 67 | third item 68 | 69 | 70 | 71 | 72 | 73 | style="format %d.": 74 | 75 | 76 | first item 77 | second item 78 | third item 79 | 80 | A separate line 81 | 82 | first sub-item 83 | second sub-item 84 | third sub-item 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /tests/input/list_hanging.xml: -------------------------------------------------------------------------------- 1 | Lists with 'hanging labels': the list item is indented the amount of 2 | the hangIndent: 3 | 4 | Here is an example of a setence that 5 | follows the "hangText" in a list item in a hanging list. 6 | 7 | Here is an 8 | example if the text 9 | following the "hangText" is long and 10 | wraps, the indent (set to 8 in the XML) is used. 11 | 12 | 13 | Here's an 14 | example where a 15 | vspace element has been inserted so the text starts on a new 16 | line (instead of next to the "hangText". 17 | And something which should look like a new paragraph for the same 18 | hangindent item. 19 | 20 | Here is an 21 | example if the text 22 | following the "hangText" is long and 23 | wraps, the indent (set to 8 in the XML) is used. 24 | 25 | 26 | 27 | RFC 4662 defines an 29 | extension to RFC 6665 that allows a client to subscribe to a list of 30 | resources using a single subscription. The server, called a Resource 31 | List Server (RLS) will "expand" the subscription and subscribe to each 32 | individual member of the list. Its primary usage with presence is to 33 | allow subscriptions to "buddy lists". Without RFC 4662, a UA would 34 | need to subscribe to each presentity individually. With RFC 4662, they 35 | can have a single subscription to all buddies. A user can manage the 36 | entries in their buddy list using the provisioning mechanisms in , below. 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /tests/input/list_letters.xml: -------------------------------------------------------------------------------- 1 | Simulating more than one paragraph in a list item using 2 | <vspace>: 3 | 4 | First, a short item. 5 | 6 | Second, a longer list item. And 7 | something that looks like a separate pargraph. 8 | 9 | -------------------------------------------------------------------------------- /tests/input/no-toc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | No Table of contents 5 | 6 | 7 | 8 | 9 | 10 | Test no ToC 11 | 12 | 13 | 14 | 15 |
16 | Test 17 |
18 |
19 | 20 | 21 | 22 |
23 | -------------------------------------------------------------------------------- /tests/input/rfc7991.references.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/input/rfc7991.references.txt: -------------------------------------------------------------------------------- 1 | 2 | +--------------------+ 3 | | Included from file | 4 | +--------------------+ 5 | -------------------------------------------------------------------------------- /tests/input/rfc99999.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | ]> 8 | 9 | 10 | Fake RFC 11 | 12 | 13 |
14 | 15 | NZ 16 | 17 | example@example.org 18 |
19 |
20 | 21 | General 22 | 23 | This is not a real RFC. 24 | 25 |
26 | 27 |
28 | Section 31 29 | redacted 30 |
31 |
32 | 33 | 34 | References 35 | 36 | Normative References 37 | 38 | 39 | Prime Directive 40 | 41 | 42 | 43 | Fake reference 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 |
53 | -------------------------------------------------------------------------------- /tests/input/rfc_root.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | Put Your Internet Draft Title 6 | Workgroup 7 | 8 | 10 | Company 11 | 12 |
13 | 14 | 15 | Springfield 16 | IL 17 | US 18 | 19 | 20 | jdoe@example.com 21 |
22 |
23 | 24 | 25 | 26 | 27 | Insert an abstract: MANDATORY. This template is for creating an 28 | Internet-Draft. 29 | 30 |
31 |
32 | -------------------------------------------------------------------------------- /tests/input/slashbreak.xml: -------------------------------------------------------------------------------- 1 |
2 | 3 | The RFC Editor has asked that we provide a list of items 4 | for which there will never be a break around the slash. 5 | The test says that PDF/A and S/MIME should not be broken 6 | when they occur. 7 | 8 | 9 | We also deal with the possiblity of some long items such as 10 | this/is/a/long/test which will not break either. We only match 11 | exact items however so PDF/A/3 will be broken as the algorithm 12 | currently stands. 13 | 14 | 15 | What about addresses: 192.168.20.0/16, 192.168.0.0/24, 16 | 192.168.0.0/30, and prefix length indications like /48 /56 /64 /72 17 | /80 /88 /96 and so on? These should not be broken after the forward 18 | slash. 19 | 20 | 21 |
22 | -------------------------------------------------------------------------------- /tests/input/texttable_small.xml: -------------------------------------------------------------------------------- 1 | 2 | column A 3 | column B 4 | 5 | cell 1A 6 | cell 1B 7 | 8 | cell 2A 9 | cell 2B 10 | 11 | cell 3A 12 | cell 3B 13 | -------------------------------------------------------------------------------- /tests/input/texttable_small_all.xml: -------------------------------------------------------------------------------- 1 | 2 | column A 3 | 4 | column B 5 | 6 | 7 | cell 1A 8 | 9 | cell 1B 10 | 11 | 12 | cell 2A 13 | 14 | cell 2B 15 | 16 | 17 | cell 3A 18 | 19 | cell 3B 20 | -------------------------------------------------------------------------------- /tests/input/texttable_small_full.xml: -------------------------------------------------------------------------------- 1 | 2 | column A 3 | 4 | column B 5 | 6 | 7 | cell 1A 8 | 9 | cell 1B 10 | 11 | 12 | cell 2A 13 | 14 | cell 2B 15 | 16 | 17 | cell 3A 18 | 19 | cell 3B 20 | -------------------------------------------------------------------------------- /tests/input/texttable_small_headers.xml: -------------------------------------------------------------------------------- 1 | 2 | column A 3 | 4 | column B 5 | 6 | 7 | cell 1A 8 | 9 | cell 1B 10 | 11 | 12 | cell 2A 13 | 14 | cell 2B 15 | 16 | 17 | cell 3A 18 | 19 | cell 3B 20 | -------------------------------------------------------------------------------- /tests/input/texttable_small_none.xml: -------------------------------------------------------------------------------- 1 | 2 | column A 3 | 4 | column B 5 | 6 | 7 | cell 1A 8 | 9 | cell 1B 10 | 11 | 12 | cell 2A 13 | 14 | cell 2B 15 | 16 | 17 | cell 3A 18 | 19 | cell 3B 20 | -------------------------------------------------------------------------------- /tests/input/texttable_title.xml: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | Code 5 | 6 | Meaning 7 | 8 | 200 9 | 10 | Success 11 | 12 | 201 13 | 14 | Success with some optional header fields ignored 15 | 16 | 17 | 18 | 19 | Code 20 | 21 | Meaning 22 | 23 | 200 24 | 25 | Success 26 | 27 | 201 28 | 29 | Success with some optional header fields ignored 30 | 31 |
32 | -------------------------------------------------------------------------------- /tests/input/textwrap.xml: -------------------------------------------------------------------------------- 1 |
2 | 3 | Here are some tests for various things which are not sentence 4 | endings, and should not be fixed up with double spaces: Some 5 | titles (which actually shouldn't all have a final dot according to 6 | some grammar rules, but nevermind...): Mr. Jones said hello 7 | to Mrs. Smith and Messrs. Costeau & Filou. We might also 8 | look at some other examples, e.g. (without the correct comma following 9 | the final dot) military titles like Lt. Anderson, and others, 10 | viz. Prof. Foo and Dr. Barbara. We have however been requested to 11 | generate end-of-sentence spacing for things like this sentence: 12 | OCB encryption protects the confidentiality of P and the authenticity 13 | of A, N, and P. This is obviously in conflict with the correct 14 | rendering of Anon Y. Name, so a workaround for that case, with 15 | &nbsp; will have to be used for correct rendering. End of test. 16 | 17 | 18 | 19 | What about addresses: 192.168.20.0/16, 192.168.0.0/24, 20 | 192.168.0.0/30, and prefix length indications like /48 /56 /64 /72 21 | /80 /88 /96 and so on? These should not be broken after the forward 22 | slash. 23 | 24 | 25 | 26 | Either both or neither of body.smime-serial and 27 | body.smime-issuer should be present in an 28 | Authentication-Results header field. body.smime-serial and 29 | body.smime-issuer are used for cases when 30 | body.smime-identifier (email address) can't be derived by the 31 | entity adding the corresponding Authentication-Results header 32 | field. For example this can be used when gatewaying from 33 | X.400. 34 | 35 |
36 | -------------------------------------------------------------------------------- /tests/input/unicode.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | Put Your Internet Draft Title 6 | 7 | 9 | Company 10 | 11 |
12 | 13 | 14 | Springfield 15 | IL 16 | US 17 | 18 | 19 | jdoe@example.com 20 |
21 |
22 | 23 | 24 | 25 | 26 | Insert an abstract: MANDATORY. This template is for creating an 27 | Internet-Draft. With some out of scope characters 28 | in Chinese, by Xing Xing, 这里是中文译本 29 | 30 | 31 |
32 | 33 | 34 |
35 | 36 | Text body needs to deal with funny characters 37 | 38 | 39 | Strange white space character (tab) xxx 40 | 41 | 42 | Pure out of scope 这里是中文译本 43 | 44 | 45 | Some re-mapped characters are ¢ or © 46 | 47 | 48 | More re-mapped characters are ˜ and € and ^ 49 | 50 |
51 |
52 |
53 | -------------------------------------------------------------------------------- /tests/input/utf8.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | Put Your Internet Draft Title 7 | 8 | 10 | Company 11 | 12 |
13 | 14 | 15 | Springfield 16 | IL 17 | US 18 | 19 | 20 | jdoe@example.com 21 |
22 |
23 | 24 | 25 | 26 | 27 | Insert an abstract: MANDATORY. This template is for creating an 28 | Internet-Draft. With some out of scope characters 29 | in Chinese, by Xing Xing, 这里是中文译本 30 | 31 | 32 |
33 | 34 | 35 |
36 | 37 | Text body needs to deal with ‘funny’ characters 38 | 39 | 40 | Pure out of scope 这里是中文译本 41 | 42 | 43 | Some re-mapped characters are ¢ or © 44 | 45 | 46 | More re-mapped characters are ˜ and € and ^ 47 | 48 |
49 |
50 |
51 | -------------------------------------------------------------------------------- /tests/valid/.gitignore: -------------------------------------------------------------------------------- 1 | /attic 2 | -------------------------------------------------------------------------------- /tests/valid/abbreviations.html: -------------------------------------------------------------------------------- 1 |

Various abbreviations which aren't end of sentence: Jr. AND Sr. AND i.e. AND Mr. AND Mrs. etc. -- done. Start of next sentence. Sentence with parentheses (a.k.a. Round brackets) -- done. Start of next sentence. Sentence with brackets [i.e. Square brackets] -- done. Start of next sentence.

2 | -------------------------------------------------------------------------------- /tests/valid/abbreviations.nroff: -------------------------------------------------------------------------------- 1 | .in 3 2 | 3 | Various abbreviations which aren't end of sentence: Jr. AND Sr. AND 4 | i.e. AND Mr. AND Mrs. etc. \%-- done. Start of next sentence. 5 | Sentence with parentheses (a.k.a. Round brackets) \%-- done. Start of 6 | next sentence. Sentence with brackets [i.e. Square brackets] \%-- 7 | done. Start of next sentence. -------------------------------------------------------------------------------- /tests/valid/abbreviations.raw.txt: -------------------------------------------------------------------------------- 1 | Various abbreviations which aren't end of sentence: Jr. AND Sr. AND 2 | i.e. AND Mr. AND Mrs. etc. -- done. Start of next sentence. 3 | Sentence with parentheses (a.k.a. Round brackets) -- done. Start of 4 | next sentence. Sentence with brackets [i.e. Square brackets] -- 5 | done. Start of next sentence. -------------------------------------------------------------------------------- /tests/valid/abbreviations.text: -------------------------------------------------------------------------------- 1 | Various abbreviations which aren't end of sentence: Jr. AND Sr. AND 2 | i.e. AND Mr. AND Mrs. etc. -- done. Start of next sentence. -------------------------------------------------------------------------------- /tests/valid/abbreviations.txt: -------------------------------------------------------------------------------- 1 | Various abbreviations which aren't end of sentence: Jr. AND Sr. AND 2 | i.e. AND Mr. AND Mrs. etc. -- done. Start of next sentence. 3 | Sentence with parentheses (a.k.a. Round brackets) -- done. Start of 4 | next sentence. Sentence with brackets [i.e. Square brackets] -- 5 | done. Start of next sentence. -------------------------------------------------------------------------------- /tests/valid/figure_title.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 |
 6 | 0                   1                   2                   3
 7 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 8 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 9 | |             Version           |            Length             |
10 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
11 | |                           Export Time                         |
12 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
13 | |                       Sequence Number                         |
14 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
15 | |                    Observation Domain ID                      |
16 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
17 |   
18 | 19 |

Figure 1: IP Message Header format 1

20 | 21 |
22 | 0                   1                   2                   3
23 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
24 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
25 | |             Version           |            Length             |
26 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
27 | |                           Export Time                         |
28 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
29 | |                       Sequence Number                         |
30 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
31 | |                    Observation Domain ID                      |
32 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
33 |   
34 | 35 |

IP Message Header format 2

36 | 37 |

38 | -------------------------------------------------------------------------------- /tests/valid/figure_title.nroff: -------------------------------------------------------------------------------- 1 | .nf 2 | 3 | 0 1 2 3 4 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 5 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 6 | | Version | Length | 7 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 8 | | Export Time | 9 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 10 | | Sequence Number | 11 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 12 | | Observation Domain ID | 13 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 14 | .fi 15 | .in 3 16 | .ce 1 17 | 18 | Figure\01: IP Message Header format 1 19 | .in 0 20 | .nf 21 | 22 | 0 1 2 3 23 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 24 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 25 | | Version | Length | 26 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 27 | | Export Time | 28 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 29 | | Sequence Number | 30 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 31 | | Observation Domain ID | 32 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 33 | .fi 34 | .in 3 35 | .ce 1 36 | 37 | IP Message Header format 2 -------------------------------------------------------------------------------- /tests/valid/figure_title.raw.txt: -------------------------------------------------------------------------------- 1 | 0 1 2 3 2 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 3 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4 | | Version | Length | 5 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 6 | | Export Time | 7 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 8 | | Sequence Number | 9 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 10 | | Observation Domain ID | 11 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 12 | 13 | Figure 1: IP Message Header format 1 14 | 15 | 0 1 2 3 16 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 17 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 18 | | Version | Length | 19 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 20 | | Export Time | 21 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 22 | | Sequence Number | 23 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 24 | | Observation Domain ID | 25 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 26 | 27 | IP Message Header format 2 -------------------------------------------------------------------------------- /tests/valid/figure_title.text: -------------------------------------------------------------------------------- 1 | 0 1 2 3 2 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 3 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4 | | Version | Length | 5 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 6 | | Export Time | 7 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 8 | | Sequence Number | 9 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 10 | | Observation Domain ID | 11 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 12 | 13 | Figure 1: IP Message Header format 1 14 | 15 | 0 1 2 3 16 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 17 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 18 | | Version | Length | 19 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 20 | | Export Time | 21 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 22 | | Sequence Number | 23 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 24 | | Observation Domain ID | 25 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 26 | 27 | IP Message Header format 2 -------------------------------------------------------------------------------- /tests/valid/figure_title.txt: -------------------------------------------------------------------------------- 1 | 0 1 2 3 2 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 3 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 4 | | Version | Length | 5 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 6 | | Export Time | 7 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 8 | | Sequence Number | 9 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 10 | | Observation Domain ID | 11 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 12 | 13 | Figure 1: IP Message Header format 1 14 | 15 | 0 1 2 3 16 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 17 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 18 | | Version | Length | 19 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 20 | | Export Time | 21 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 22 | | Sequence Number | 23 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 24 | | Observation Domain ID | 25 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 26 | 27 | IP Message Header format 2 -------------------------------------------------------------------------------- /tests/valid/header_footer_draft.nroff: -------------------------------------------------------------------------------- 1 | Doe Expires June 13, 2011 [Page 1] 2 | 3 | Internet-Draft Abbreviated Title December 2010 -------------------------------------------------------------------------------- /tests/valid/header_footer_draft.txt: -------------------------------------------------------------------------------- 1 | Doe, et al. Expires June 13, 2011 [Page 1] 2 | 3 | Internet-Draft Abbreviated Title December 2010 -------------------------------------------------------------------------------- /tests/valid/header_footer_rfc.nroff: -------------------------------------------------------------------------------- 1 | Doe Best Current Practice [Page 1] 2 | 3 | RFC 9999 Abbreviated Title December 2010 -------------------------------------------------------------------------------- /tests/valid/header_footer_rfc.txt: -------------------------------------------------------------------------------- 1 | Doe Best Current Practice [Page 1] 2 | 3 | RFC 9999 Abbreviated Title December 2010 -------------------------------------------------------------------------------- /tests/valid/ietf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/valid/list_format.html: -------------------------------------------------------------------------------- 1 |

First list:

Different list formatting characters, following what v1 supports:


style="format %i":


style="format (%d)":


style="format %c)":


style="format %C.":


style="format %d.":

2 | 3 |
4 |
R1
5 |
#1
6 |
R2
7 |
#2
8 |
R3
9 |
#3
10 |
11 | 12 |

Specify the indent explicitly so that all the items line up nicely.

13 | 14 |
15 |
i.
16 |
first item
17 |
ii.
18 |
second item
19 |
iii.
20 |
third item
21 |
iv.
22 |
fourth item
23 |
v.
24 |
5:th item
25 |
vi.
26 |
6:th item
27 |
vii.
28 |
7:th item
29 |
viii.
30 |
8:th item
31 |
ix.
32 |
9:th item
33 |
x.
34 |
10:th item
35 |
xi.
36 |
11:th item
37 |
xii.
38 |
12:th item
39 |
xiii.
40 |
13:th item
41 |
xiv.
42 |
14:th item
43 |
44 | 45 |

46 | 47 |
48 |
(1)
49 |
first item
50 |
(2)
51 |
second item
52 |
(3)
53 |
third item
54 |
55 | 56 |

57 | 58 |
59 |
a)
60 |
first item
61 |
b)
62 |
second item
63 |
c)
64 |
third item
65 |
66 | 67 |

68 | 69 |
70 |
A.
71 |
first item
72 |
B.
73 |
second item
74 |
C.
75 |
third item
76 |
77 | 78 |

79 | 80 |
81 |
1.
82 |
first item
83 |
2.
84 |
second item
85 |
3.
86 |
third item

A separate line
    87 |
  1. first sub-item
  2. 88 |
  3. second sub-item
  4. 89 |
  5. third sub-item
  6. 90 |
91 |

92 |
93 |
94 | 95 |

96 | -------------------------------------------------------------------------------- /tests/valid/list_format.nroff: -------------------------------------------------------------------------------- 1 | .in 3 2 | 3 | First list: 4 | .in 7 5 | .ti 3 6 | 7 | R1 #1 8 | .ti 3 9 | 10 | R2 #2 11 | .ti 3 12 | 13 | R3 #3 14 | .in 3 15 | 16 | Specify the indent explicitly so that all the items line up nicely. 17 | .sp 1 18 | Different list formatting characters, following what v1 supports: 19 | .sp 2 20 | style="format %i": 21 | .in 10 22 | .ti 3 23 | 24 | i. first item 25 | .ti 3 26 | 27 | ii. second item 28 | .ti 3 29 | 30 | iii. third item 31 | .ti 3 32 | 33 | iv. fourth item 34 | .ti 3 35 | 36 | v. 5:th item 37 | .ti 3 38 | 39 | vi. 6:th item 40 | .ti 3 41 | 42 | vii. 7:th item 43 | .ti 3 44 | 45 | viii. 8:th item 46 | .ti 3 47 | 48 | ix. 9:th item 49 | .ti 3 50 | 51 | x. 10:th item 52 | .ti 3 53 | 54 | xi. 11:th item 55 | .ti 3 56 | 57 | xii. 12:th item 58 | .ti 3 59 | 60 | xiii. 13:th item 61 | .ti 3 62 | 63 | xiv. 14:th item 64 | .sp 2 65 | .in 3 66 | style="format (%d)": 67 | .in 8 68 | .ti 3 69 | 70 | (1) first item 71 | .ti 3 72 | 73 | (2) second item 74 | .ti 3 75 | 76 | (3) third item 77 | .sp 2 78 | .in 3 79 | style="format %c)": 80 | .in 7 81 | .ti 3 82 | 83 | a) first item 84 | .ti 3 85 | 86 | b) second item 87 | .ti 3 88 | 89 | c) third item 90 | .sp 2 91 | .in 3 92 | style="format %C.": 93 | .in 7 94 | .ti 3 95 | 96 | A. first item 97 | .ti 3 98 | 99 | B. second item 100 | .ti 3 101 | 102 | C. third item 103 | .sp 2 104 | .in 3 105 | style="format %d.": 106 | .in 7 107 | .ti 3 108 | 109 | 1. first item 110 | .ti 3 111 | 112 | 2. second item 113 | .ti 3 114 | 115 | 3. third item 116 | .sp 1 117 | A separate line 118 | .in 11 119 | .ti 7 120 | 121 | A. first \%sub-item 122 | .ti 7 123 | 124 | B. second \%sub-item 125 | .ti 7 126 | 127 | C. third \%sub-item -------------------------------------------------------------------------------- /tests/valid/list_format.raw.txt: -------------------------------------------------------------------------------- 1 | First list: 2 | 3 | R1 #1 4 | 5 | R2 #2 6 | 7 | R3 #3 8 | 9 | Specify the indent explicitly so that all the items line up nicely. 10 | 11 | Different list formatting characters, following what v1 supports: 12 | 13 | 14 | style="format %i": 15 | 16 | i. first item 17 | 18 | ii. second item 19 | 20 | iii. third item 21 | 22 | iv. fourth item 23 | 24 | v. 5:th item 25 | 26 | vi. 6:th item 27 | 28 | vii. 7:th item 29 | 30 | viii. 8:th item 31 | 32 | ix. 9:th item 33 | 34 | x. 10:th item 35 | 36 | xi. 11:th item 37 | 38 | xii. 12:th item 39 | 40 | xiii. 13:th item 41 | 42 | xiv. 14:th item 43 | 44 | 45 | style="format (%d)": 46 | 47 | (1) first item 48 | 49 | (2) second item 50 | 51 | (3) third item 52 | 53 | 54 | style="format %c)": 55 | 56 | a) first item 57 | 58 | b) second item 59 | 60 | c) third item 61 | 62 | 63 | style="format %C.": 64 | 65 | A. first item 66 | 67 | B. second item 68 | 69 | C. third item 70 | 71 | 72 | style="format %d.": 73 | 74 | 1. first item 75 | 76 | 2. second item 77 | 78 | 3. third item 79 | 80 | A separate line 81 | 82 | A. first sub-item 83 | 84 | B. second sub-item 85 | 86 | C. third sub-item -------------------------------------------------------------------------------- /tests/valid/list_format.text: -------------------------------------------------------------------------------- 1 | First list: 2 | 3 | R1 #1 4 | 5 | R2 #2 6 | 7 | R3 #3 8 | 9 | Specify the indent explicitly so that all the items line up nicely. 10 | 11 | Different list formatting characters, following what v1 supports: 12 | 13 | 14 | style="format %i": 15 | 16 | i. first item 17 | 18 | ii. second item 19 | 20 | iii. third item 21 | 22 | iv. fourth item 23 | 24 | v. 5:th item 25 | 26 | vi. 6:th item 27 | 28 | vii. 7:th item 29 | 30 | viii. 8:th item 31 | 32 | ix. 9:th item 33 | 34 | x. 10:th item 35 | 36 | xi. 11:th item 37 | 38 | xii. 12:th item 39 | 40 | xiii. 13:th item 41 | 42 | xiv. 14:th item 43 | 44 | 45 | style="format (%d)": 46 | 47 | (1) first item 48 | 49 | (2) second item 50 | 51 | (3) third item 52 | 53 | 54 | style="format %c)": 55 | 56 | a) first item 57 | 58 | b) second item 59 | 60 | c) third item 61 | 62 | 63 | style="format %C.": 64 | 65 | A. first item 66 | 67 | B. second item 68 | 69 | C. third item 70 | 71 | 72 | style="format %d.": 73 | 74 | 1. first item 75 | 76 | 2. second item 77 | 78 | 3. third item 79 | 80 | A separate line 81 | 82 | A. first sub-item 83 | 84 | B. second sub-item 85 | 86 | C. third sub-item -------------------------------------------------------------------------------- /tests/valid/list_format.txt: -------------------------------------------------------------------------------- 1 | First list: 2 | 3 | R1 #1 4 | 5 | R2 #2 6 | 7 | R3 #3 8 | 9 | Specify the indent explicitly so that all the items line up nicely. 10 | 11 | Different list formatting characters, following what v1 supports: 12 | 13 | 14 | style="format %i": 15 | 16 | i. first item 17 | 18 | ii. second item 19 | 20 | iii. third item 21 | 22 | iv. fourth item 23 | 24 | v. 5:th item 25 | 26 | vi. 6:th item 27 | 28 | vii. 7:th item 29 | 30 | viii. 8:th item 31 | 32 | ix. 9:th item 33 | 34 | x. 10:th item 35 | 36 | xi. 11:th item 37 | 38 | xii. 12:th item 39 | 40 | xiii. 13:th item 41 | 42 | xiv. 14:th item 43 | 44 | 45 | style="format (%d)": 46 | 47 | (1) first item 48 | 49 | (2) second item 50 | 51 | (3) third item 52 | 53 | 54 | style="format %c)": 55 | 56 | a) first item 57 | 58 | b) second item 59 | 60 | c) third item 61 | 62 | 63 | style="format %C.": 64 | 65 | A. first item 66 | 67 | B. second item 68 | 69 | C. third item 70 | 71 | 72 | style="format %d.": 73 | 74 | 1. first item 75 | 76 | 2. second item 77 | 78 | 3. third item 79 | 80 | A separate line 81 | 82 | A. first sub-item 83 | 84 | B. second sub-item 85 | 86 | C. third sub-item -------------------------------------------------------------------------------- /tests/valid/list_hanging.html: -------------------------------------------------------------------------------- 1 |

Lists with 'hanging labels': the list item is indented the amount of the hangIndent:

2 | 3 |
4 |
Item A:
5 |
Here is an example of a setence that follows the "hangText" in a list item in a hanging list.
6 |
Item B with a much longer label:
7 |
Here is an example if the text following the "hangText" is long and wraps, the indent (set to 8 in the XML) is used.
8 |
Item C:
9 |
10 |
Here's an example where a vspace element has been inserted so the text starts on a new line (instead of next to the "hangText".

And something which should look like a new paragraph for the same hangindent item.
11 |
Item D with a very longer label followed by <vspace/>:
12 |
13 |
Here is an example if the text following the "hangText" is long and wraps, the indent (set to 8 in the XML) is used.
14 |
15 | 16 |

17 | 18 |
19 |
RFC 4662, A Session Initiation Protocol (SIP) Event Notification Extension for Resource Lists (S):
20 |
21 | RFC 4662 defines an extension to RFC 6665 that allows a client to subscribe to a list of resources using a single subscription. The server, called a Resource List Server (RLS) will "expand" the subscription and subscribe to each individual member of the list. Its primary usage with presence is to allow subscriptions to "buddy lists". Without RFC 4662, a UA would need to subscribe to each presentity individually. With RFC 4662, they can have a single subscription to all buddies. A user can manage the entries in their buddy list using the provisioning mechanisms in [sec-prov], below.
22 |
23 | 24 |

25 | -------------------------------------------------------------------------------- /tests/valid/list_hanging.nroff: -------------------------------------------------------------------------------- 1 | .in 3 2 | 3 | Lists with 'hanging labels': the list item is indented the amount of 4 | the hangIndent: 5 | .in 11 6 | .ti 3 7 | 8 | Item A: Here is an example of a setence that follows the "hangText" 9 | in a list item in a hanging list. 10 | .ti 3 11 | 12 | Item B with a much longer label: Here is an example if the text 13 | following the "hangText" is long and wraps, the indent (set 14 | to 8 in the XML) is used. 15 | .ti 3 16 | 17 | Item C: 18 | .sp 0 19 | Here's an example where a vspace element has been inserted so 20 | the text starts on a new line (instead of next to the 21 | "hangText". 22 | .sp 1 23 | And something which should look like a new paragraph for the 24 | same hangindent item. 25 | .ti 3 26 | 27 | Item D with a very longer label followed by : 28 | .sp 0 29 | Here is an example if the text following the "hangText" is 30 | long and wraps, the indent (set to 8 in the XML) is used. 31 | .in 6 32 | .ti 3 33 | 34 | RFC 4662, A Session Initiation Protocol (SIP) Event Notification 35 | Extension for Resource Lists (S): RFC 4662 [RFC4662] defines an 36 | extension to RFC 6665 that allows a client to subscribe to a list 37 | of resources using a single subscription. The server, called a 38 | Resource List Server (RLS) will "expand" the subscription and 39 | subscribe to each individual member of the list. Its primary 40 | usage with presence is to allow subscriptions to "buddy lists". 41 | Without RFC 4662, a UA would need to subscribe to each presentity 42 | individually. With RFC 4662, they can have a single subscription 43 | to all buddies. A user can manage the entries in their buddy list 44 | using the provisioning mechanisms in \%[sec-prov], below. -------------------------------------------------------------------------------- /tests/valid/list_hanging.raw.txt: -------------------------------------------------------------------------------- 1 | Lists with 'hanging labels': the list item is indented the amount of 2 | the hangIndent: 3 | 4 | Item A: Here is an example of a setence that follows the "hangText" 5 | in a list item in a hanging list. 6 | 7 | Item B with a much longer label: Here is an example if the text 8 | following the "hangText" is long and wraps, the indent (set 9 | to 8 in the XML) is used. 10 | 11 | Item C: 12 | Here's an example where a vspace element has been inserted so 13 | the text starts on a new line (instead of next to the 14 | "hangText". 15 | 16 | And something which should look like a new paragraph for the 17 | same hangindent item. 18 | 19 | Item D with a very longer label followed by : 20 | Here is an example if the text following the "hangText" is 21 | long and wraps, the indent (set to 8 in the XML) is used. 22 | 23 | RFC 4662, A Session Initiation Protocol (SIP) Event Notification 24 | Extension for Resource Lists (S): RFC 4662 [RFC4662] defines an 25 | extension to RFC 6665 that allows a client to subscribe to a list 26 | of resources using a single subscription. The server, called a 27 | Resource List Server (RLS) will "expand" the subscription and 28 | subscribe to each individual member of the list. Its primary 29 | usage with presence is to allow subscriptions to "buddy lists". 30 | Without RFC 4662, a UA would need to subscribe to each presentity 31 | individually. With RFC 4662, they can have a single subscription 32 | to all buddies. A user can manage the entries in their buddy list 33 | using the provisioning mechanisms in [sec-prov], below. -------------------------------------------------------------------------------- /tests/valid/list_hanging.text: -------------------------------------------------------------------------------- 1 | Lists with 'hanging labels': the list item is indented the amount of 2 | the hangIndent: 3 | 4 | Item A: Here is an example of a setence that follows the "hangText" 5 | in a list item in a hanging list. 6 | 7 | Item B with a much longer label: Here is an example if the text 8 | following the "hangText" is long and wraps, the indent (set 9 | to 8 in the XML) is used. 10 | 11 | Item C: 12 | Here's an example where a vspace element has been inserted so 13 | the text starts on a new line (instead of next to the 14 | "hangText". 15 | 16 | And something which should look like a new paragraph for the 17 | same hangindent item. 18 | 19 | Item D with a very longer label followed by : 20 | Here is an example if the text following the "hangText" is 21 | long and wraps, the indent (set to 8 in the XML) is used. 22 | 23 | RFC 4662, A Session Initiation Protocol (SIP) Event Notification 24 | Extension for Resource Lists (S): RFC 4662 [RFC4662] defines an 25 | extension to RFC 6665 that allows a client to subscribe to a list 26 | of resources using a single subscription. The server, called a 27 | Resource List Server (RLS) will "expand" the subscription and 28 | subscribe to each individual member of the list. Its primary 29 | usage with presence is to allow subscriptions to "buddy lists". 30 | Without RFC 4662, a UA would need to subscribe to each presentity 31 | individually. With RFC 4662, they can have a single subscription 32 | to all buddies. A user can manage the entries in their buddy list 33 | using the provisioning mechanisms in [sec-prov], below. -------------------------------------------------------------------------------- /tests/valid/list_hanging.txt: -------------------------------------------------------------------------------- 1 | Lists with 'hanging labels': the list item is indented the amount of 2 | the hangIndent: 3 | 4 | Item A: Here is an example of a setence that follows the "hangText" 5 | in a list item in a hanging list. 6 | 7 | Item B with a much longer label: Here is an example if the text 8 | following the "hangText" is long and wraps, the indent (set 9 | to 8 in the XML) is used. 10 | 11 | Item C: 12 | Here's an example where a vspace element has been inserted so 13 | the text starts on a new line (instead of next to the 14 | "hangText". 15 | 16 | And something which should look like a new paragraph for the 17 | same hangindent item. 18 | 19 | Item D with a very longer label followed by : 20 | Here is an example if the text following the "hangText" is 21 | long and wraps, the indent (set to 8 in the XML) is used. 22 | 23 | RFC 4662, A Session Initiation Protocol (SIP) Event Notification 24 | Extension for Resource Lists (S): RFC 4662 [RFC4662] defines an 25 | extension to RFC 6665 that allows a client to subscribe to a list 26 | of resources using a single subscription. The server, called a 27 | Resource List Server (RLS) will "expand" the subscription and 28 | subscribe to each individual member of the list. Its primary 29 | usage with presence is to allow subscriptions to "buddy lists". 30 | Without RFC 4662, a UA would need to subscribe to each presentity 31 | individually. With RFC 4662, they can have a single subscription 32 | to all buddies. A user can manage the entries in their buddy list 33 | using the provisioning mechanisms in [sec-prov], below. -------------------------------------------------------------------------------- /tests/valid/list_letters.html: -------------------------------------------------------------------------------- 1 |

Simulating more than one paragraph in a list item using <vspace>:

2 | 3 |
    4 |
  1. First, a short item.
  2. 5 |
  3. Second, a longer list item.

    And something that looks like a separate pargraph.
  4. 6 |
7 | 8 |

9 | -------------------------------------------------------------------------------- /tests/valid/list_letters.nroff: -------------------------------------------------------------------------------- 1 | .in 3 2 | 3 | Simulating more than one paragraph in a list item using : 4 | .in 7 5 | .ti 3 6 | 7 | a. First, a short item. 8 | .ti 3 9 | 10 | b. Second, a longer list item. 11 | .sp 1 12 | And something that looks like a separate pargraph. -------------------------------------------------------------------------------- /tests/valid/list_letters.raw.txt: -------------------------------------------------------------------------------- 1 | Simulating more than one paragraph in a list item using : 2 | 3 | a. First, a short item. 4 | 5 | b. Second, a longer list item. 6 | 7 | And something that looks like a separate pargraph. -------------------------------------------------------------------------------- /tests/valid/list_letters.text: -------------------------------------------------------------------------------- 1 | Simulating more than one paragraph in a list item using : 2 | 3 | a. First, a short item. 4 | 5 | b. Second, a longer list item. 6 | 7 | And something that looks like a separate pargraph. -------------------------------------------------------------------------------- /tests/valid/list_letters.txt: -------------------------------------------------------------------------------- 1 | Simulating more than one paragraph in a list item using : 2 | 3 | a. First, a short item. 4 | 5 | b. Second, a longer list item. 6 | 7 | And something that looks like a separate pargraph. 8 | -------------------------------------------------------------------------------- /tests/valid/no-toc.text: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Network Working Group J. Doe 6 | Internet-Draft May 1, 2022 7 | Intended status: Experimental 8 | Expires: November 2, 2022 9 | 10 | 11 | No Table of contents 12 | draft-no-toc-test-00 13 | 14 | Abstract 15 | 16 | Test no ToC 17 | 18 | Status of This Memo 19 | 20 | This Internet-Draft is submitted in full conformance with the 21 | provisions of BCP 78 and BCP 79. 22 | 23 | Internet-Drafts are working documents of the Internet Engineering 24 | Task Force (IETF). Note that other groups may also distribute 25 | working documents as Internet-Drafts. The list of current Internet- 26 | Drafts is at https://datatracker.ietf.org/drafts/current/. 27 | 28 | Internet-Drafts are draft documents valid for a maximum of six months 29 | and may be updated, replaced, or obsoleted by other documents at any 30 | time. It is inappropriate to use Internet-Drafts as reference 31 | material or to cite them other than as "work in progress." 32 | 33 | This Internet-Draft will expire on November 2, 2022. 34 | 35 | Copyright Notice 36 | 37 | Copyright (c) 2022 IETF Trust and the persons identified as the 38 | document authors. All rights reserved. 39 | 40 | This document is subject to BCP 78 and the IETF Trust's Legal 41 | Provisions Relating to IETF Documents (https://trustee.ietf.org/ 42 | license-info) in effect on the date of publication of this document. 43 | Please review these documents carefully, as they describe your rights 44 | and restrictions with respect to this document. Code Components 45 | extracted from this document must include Revised BSD License text as 46 | described in Section 4.e of the Trust Legal Provisions and are 47 | provided without warranty as described in the Revised BSD License. 48 | 49 | 50 | 1. Introduction 51 | 52 | Test 53 | 54 | Author's Address 55 | 56 | Jane Doe 57 | -------------------------------------------------------------------------------- /tests/valid/references.nroff: -------------------------------------------------------------------------------- 1 | .in 3 2 | 3 | [Erratum3657] 4 | .in 14 5 | RFC Errata, Erratum 3657, RFC 2978. 6 | .in 3 7 | 8 | \%[I-D.ietf-avt-rtcp-port-for-ssm] 9 | .in 14 10 | Begen, A., "RTP Control Protocol (RTCP) Port for \%Source- 11 | Specific Multicast (SSM) Sessions", \%draft-ietf-avt-rtcp- 12 | \%port-for-ssm-04 (work in progress), December 2010. 13 | .in 3 14 | 15 | [INITIALS] 16 | .in 14 17 | Doe, J., Doe, A., Doe, B., Doe, C., Doe, D., Doe, Doe, E., 18 | Doe, F., and G. Doe, "All initial sets, no PI", RFC\07539, 19 | DOI\010.17487/RFC7539, may 2015. 20 | .in 3 21 | 22 | \%[INITIALS-PI] 23 | .in 14 24 | Doe, J., Doe, A., Doe, B. D., Doe, C. D., Doe, D.D., Doe, 25 | Doe, E. D., Doe, F.D., and G. D. Doe, "All initial sets, 26 | with PI", RFC\07539, DOI\010.17487/RFC7539, may 2015. 27 | .in 3 28 | 29 | [INITIALS2] 30 | .in 14 31 | Doe, J. D. and A. Doe, "Lots of authors", RFC\07539, 32 | DOI\010.17487/RFC7539, may 2015. 33 | .in 3 34 | 35 | [INITIALS3] 36 | .in 14 37 | Doe, J. D. and B. D. Doe, "Lots of authors", RFC\07539, 38 | DOI\010.17487/RFC7539, may 2015. 39 | .in 3 40 | 41 | [INITIALS4] 42 | .in 14 43 | Doe, J. D. and Doe, "Lots of authors", RFC\07539, 44 | DOI\010.17487/RFC7539, may 2015. 45 | .ti 3 46 | 47 | [RFC2629] Rose, M., "Writing \%I-Ds and RFCs using XML", RFC\02629, 48 | June 1999. 49 | .ti 3 50 | 51 | [RFC3424] Daigle, L. and IAB, "IAB Considerations for UNilateral 52 | \%Self-Address Fixing (UNSAF) Across Network Address 53 | Translation", RFC\03424, November 2002. 54 | .ti 3 55 | 56 | [RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC 57 | Text on Security Considerations", BCP\072, RFC\03552, July 58 | 2003. 59 | .in 3 60 | 61 | \%[SDO-3GPP] 62 | .in 14 63 | "3GPP Home Page", . 64 | .in 3 65 | 66 | \%[W3C.REC-voicexml20-20040316] 67 | .in 14 68 | Rehor, K., Ferrans, J., Tryphonas, S., Hunt, A., Burnett, 69 | D., Lucas, B., McGlashan, S., Porter, B., Danielsen, P., 70 | and J. Carter, "Voice Extensible Markup Language 71 | (VoiceXML) Version 2.0", World Wide Web Consortium 72 | \%Recommendation\0REC-voicexml20-20040316, March 2004, 73 | \%. -------------------------------------------------------------------------------- /tests/valid/references.raw.txt: -------------------------------------------------------------------------------- 1 | [Erratum3657] 2 | RFC Errata, Erratum 3657, RFC 2978. 3 | 4 | [I-D.ietf-avt-rtcp-port-for-ssm] 5 | Begen, A., "RTP Control Protocol (RTCP) Port for Source- 6 | Specific Multicast (SSM) Sessions", draft-ietf-avt-rtcp- 7 | port-for-ssm-04 (work in progress), December 2010. 8 | 9 | [INITIALS] 10 | Doe, J., Doe, A., Doe, B., Doe, C., Doe, D., Doe, Doe, E., 11 | Doe, F., and G. Doe, "All initial sets, no PI", RFC 7539, 12 | DOI 10.17487/RFC7539, may 2015. 13 | 14 | [INITIALS-PI] 15 | Doe, J., Doe, A., Doe, B. D., Doe, C. D., Doe, D.D., Doe, 16 | Doe, E. D., Doe, F.D., and G. D. Doe, "All initial sets, 17 | with PI", RFC 7539, DOI 10.17487/RFC7539, may 2015. 18 | 19 | [INITIALS2] 20 | Doe, J. D. and A. Doe, "Lots of authors", RFC 7539, 21 | DOI 10.17487/RFC7539, may 2015. 22 | 23 | [INITIALS3] 24 | Doe, J. D. and B. D. Doe, "Lots of authors", RFC 7539, 25 | DOI 10.17487/RFC7539, may 2015. 26 | 27 | [INITIALS4] 28 | Doe, J. D. and Doe, "Lots of authors", RFC 7539, 29 | DOI 10.17487/RFC7539, may 2015. 30 | 31 | [RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629, 32 | June 1999. 33 | 34 | [RFC3424] Daigle, L. and IAB, "IAB Considerations for UNilateral 35 | Self-Address Fixing (UNSAF) Across Network Address 36 | Translation", RFC 3424, November 2002. 37 | 38 | [RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC 39 | Text on Security Considerations", BCP 72, RFC 3552, July 40 | 2003. 41 | 42 | [SDO-3GPP] 43 | "3GPP Home Page", . 44 | 45 | [W3C.REC-voicexml20-20040316] 46 | Rehor, K., Ferrans, J., Tryphonas, S., Hunt, A., Burnett, 47 | D., Lucas, B., McGlashan, S., Porter, B., Danielsen, P., 48 | and J. Carter, "Voice Extensible Markup Language 49 | (VoiceXML) Version 2.0", World Wide Web Consortium 50 | Recommendation REC-voicexml20-20040316, March 2004, 51 | . -------------------------------------------------------------------------------- /tests/valid/references.text: -------------------------------------------------------------------------------- 1 | [Erratum3657] 2 | RFC Errata, Erratum 3657, RFC 2978. 3 | 4 | [I-D.ietf-avt-rtcp-port-for-ssm] 5 | Begen, A., "RTP Control Protocol (RTCP) Port for Source- 6 | Specific Multicast (SSM) Sessions", draft-ietf-avt-rtcp- 7 | port-for-ssm-04 (work in progress), December 2010. 8 | 9 | [INITIALS] 10 | Doe, J., Doe, A., Doe, B., Doe, C., Doe, D., Doe, Doe, E., 11 | Doe, F., and G. Doe, "All initial sets, no PI", RFC 7539, 12 | DOI 10.17487/RFC7539, may 2015. 13 | 14 | [INITIALS-PI] 15 | Doe, J., Doe, A., Doe, B. D., Doe, C. D., Doe, D.D., Doe, 16 | Doe, E. D., Doe, F.D., and G. D. Doe, "All initial sets, 17 | with PI", RFC 7539, DOI 10.17487/RFC7539, may 2015. 18 | 19 | [INITIALS2] 20 | Doe, J. D. and A. Doe, "Lots of authors", RFC 7539, 21 | DOI 10.17487/RFC7539, may 2015. 22 | 23 | [INITIALS3] 24 | Doe, J. D. and B. D. Doe, "Lots of authors", RFC 7539, 25 | DOI 10.17487/RFC7539, may 2015. 26 | 27 | [INITIALS4] 28 | Doe, J. D. and Doe, "Lots of authors", RFC 7539, 29 | DOI 10.17487/RFC7539, may 2015. 30 | 31 | [RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629, 32 | June 1999. 33 | 34 | [RFC3424] Daigle, L. and IAB, "IAB Considerations for UNilateral 35 | Self-Address Fixing (UNSAF) Across Network Address 36 | Translation", RFC 3424, November 2002. 37 | 38 | [RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC 39 | Text on Security Considerations", BCP 72, RFC 3552, July 40 | 2003. 41 | 42 | [SDO-3GPP] 43 | "3GPP Home Page", . 44 | 45 | [W3C.REC-voicexml20-20040316] 46 | Rehor, K., Ferrans, J., Tryphonas, S., Hunt, A., Burnett, 47 | D., Lucas, B., McGlashan, S., Porter, B., Danielsen, P., 48 | and J. Carter, "Voice Extensible Markup Language 49 | (VoiceXML) Version 2.0", World Wide Web Consortium 50 | Recommendation REC-voicexml20-20040316, March 2004, 51 | . -------------------------------------------------------------------------------- /tests/valid/references.txt: -------------------------------------------------------------------------------- 1 | [Erratum3657] 2 | RFC Errata, Erratum 3657, RFC 2978. 3 | 4 | [I-D.ietf-avt-rtcp-port-for-ssm] 5 | Begen, A., "RTP Control Protocol (RTCP) Port for Source- 6 | Specific Multicast (SSM) Sessions", draft-ietf-avt-rtcp- 7 | port-for-ssm-04 (work in progress), December 2010. 8 | 9 | [INITIALS] 10 | Doe, J., Doe, A., Doe, B., Doe, C., Doe, D., Doe, Doe, E., 11 | Doe, F., and G. Doe, "All initial sets, no PI", RFC 7539, 12 | DOI 10.17487/RFC7539, may 2015. 13 | 14 | [INITIALS-PI] 15 | Doe, J., Doe, A., Doe, B. D., Doe, C. D., Doe, D.D., Doe, 16 | Doe, E. D., Doe, F.D., and G. D. Doe, "All initial sets, 17 | with PI", RFC 7539, DOI 10.17487/RFC7539, may 2015. 18 | 19 | [INITIALS2] 20 | Doe, J. D. and A. Doe, "Lots of authors", RFC 7539, 21 | DOI 10.17487/RFC7539, may 2015. 22 | 23 | [INITIALS3] 24 | Doe, J. D. and B. D. Doe, "Lots of authors", RFC 7539, 25 | DOI 10.17487/RFC7539, may 2015. 26 | 27 | [INITIALS4] 28 | Doe, J. D. and Doe, "Lots of authors", RFC 7539, 29 | DOI 10.17487/RFC7539, may 2015. 30 | 31 | [RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629, 32 | June 1999. 33 | 34 | [RFC3424] Daigle, L. and IAB, "IAB Considerations for UNilateral 35 | Self-Address Fixing (UNSAF) Across Network Address 36 | Translation", RFC 3424, November 2002. 37 | 38 | [RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC 39 | Text on Security Considerations", BCP 72, RFC 3552, July 40 | 2003. 41 | 42 | [SDO-3GPP] 43 | "3GPP Home Page", . 44 | 45 | [W3C.REC-voicexml20-20040316] 46 | Rehor, K., Ferrans, J., Tryphonas, S., Hunt, A., Burnett, 47 | D., Lucas, B., McGlashan, S., Porter, B., Danielsen, P., 48 | and J. Carter, "Voice Extensible Markup Language 49 | (VoiceXML) Version 2.0", World Wide Web Consortium 50 | Recommendation REC-voicexml20-20040316, March 2004, 51 | . 52 | -------------------------------------------------------------------------------- /tests/valid/rfc99999.exp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Fake RFC 6 | 7 | 8 |
9 | 10 | NZ 11 | 12 | example@example.org 13 |
14 |
15 | 16 | General 17 | 18 | This is not a real RFC. 19 | 20 |
21 | 22 |
23 | Section 31 24 | redacted 25 |
26 |
27 | 28 | 29 | References 30 | 31 | Normative References 32 | 33 | 34 | Prime Directive 35 | 36 | 37 | 38 | Fake reference 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
48 | -------------------------------------------------------------------------------- /tests/valid/rfc99999.pages.text: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Internet Engineering Task Force (IETF) J. Doe 6 | Request for Comments: 99999 October 2024 7 | Category: Best Current Practice 8 | ISSN: 2070-1721 9 | 10 | 11 | Fake RFC 12 | 13 | Abstract 14 | 15 | This is not a real RFC. 16 | 17 | Status of This Memo 18 | 19 | This memo documents an Internet Best Current Practice. 20 | 21 | This document is a product of the Internet Engineering Task Force 22 | (IETF). It represents the consensus of the IETF community. It has 23 | received public review and has been approved for publication by the 24 | Internet Engineering Steering Group (IESG). Further information on 25 | BCPs is available in Section 2 of RFC 7841. 26 | 27 | Information about the current status of this document, any errata, 28 | and how to provide feedback on it may be obtained at 29 | https://www.rfc-editor.org/info/rfc99999. 30 | 31 | Copyright Notice 32 | 33 | Copyright (c) 2024 IETF Trust and the persons identified as the 34 | document authors. All rights reserved. 35 | 36 | This document is subject to BCP 78 and the IETF Trust's Legal 37 | Provisions Relating to IETF Documents 38 | (https://trustee.ietf.org/license-info) in effect on the date of 39 | publication of this document. Please review these documents 40 | carefully, as they describe your rights and restrictions with respect 41 | to this document. Code Components extracted from this document must 42 | include Revised BSD License text as described in Section 4.e of the 43 | Trust Legal Provisions and are provided without warranty as described 44 | in the Revised BSD License. 45 | 46 | Table of Contents 47 | 48 | 1. Section 31 49 | 2. References 50 | 2.1. Normative References 51 | Author's Address 52 | 53 | 1. Section 31 54 | 55 | redacted [RFC99998] 56 | 57 | 2. References 58 | 59 | 2.1. Normative References 60 | 61 | [RFC99998] Doe, J., "Prime Directive", RFC 99998, 62 | DOI 10.17487/RFC99998, October 2024, 63 | . 64 | 65 | Author's Address 66 | 67 | Jane Doe 68 | New Zealand 69 | Email: example@example.org 70 | -------------------------------------------------------------------------------- /tests/valid/rfc99999.text: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Internet Engineering Task Force (IETF) J. Doe 6 | Request for Comments: 99999 October 2024 7 | Category: Best Current Practice 8 | ISSN: 2070-1721 9 | 10 | 11 | Fake RFC 12 | 13 | Abstract 14 | 15 | This is not a real RFC. 16 | 17 | Status of This Memo 18 | 19 | This memo documents an Internet Best Current Practice. 20 | 21 | This document is a product of the Internet Engineering Task Force 22 | (IETF). It represents the consensus of the IETF community. It has 23 | received public review and has been approved for publication by the 24 | Internet Engineering Steering Group (IESG). Further information on 25 | BCPs is available in Section 2 of RFC 7841. 26 | 27 | Information about the current status of this document, any errata, 28 | and how to provide feedback on it may be obtained at 29 | https://www.rfc-editor.org/info/rfc99999. 30 | 31 | Copyright Notice 32 | 33 | Copyright (c) 2024 IETF Trust and the persons identified as the 34 | document authors. All rights reserved. 35 | 36 | This document is subject to BCP 78 and the IETF Trust's Legal 37 | Provisions Relating to IETF Documents 38 | (https://trustee.ietf.org/license-info) in effect on the date of 39 | publication of this document. Please review these documents 40 | carefully, as they describe your rights and restrictions with respect 41 | to this document. Code Components extracted from this document must 42 | include Revised BSD License text as described in Section 4.e of the 43 | Trust Legal Provisions and are provided without warranty as described 44 | in the Revised BSD License. 45 | 46 | Table of Contents 47 | 48 | 1. Section 31 49 | 2. References 50 | 2.1. Normative References 51 | Author's Address 52 | 53 | 1. Section 31 54 | 55 | redacted [RFC99998] 56 | 57 | 2. References 58 | 59 | 2.1. Normative References 60 | 61 | [RFC99998] Doe, J., "Prime Directive", RFC 99998, 62 | DOI 10.17487/RFC99998, October 2024, 63 | . 64 | 65 | Author's Address 66 | 67 | Jane Doe 68 | New Zealand 69 | Email: example@example.org 70 | -------------------------------------------------------------------------------- /tests/valid/rfc99999.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Internet Engineering Task Force (IETF) J. Doe 6 | Request for Comments: 99999 October 2024 7 | Category: Best Current Practice 8 | ISSN: 2070-1721 9 | 10 | 11 | Fake RFC 12 | 13 | Abstract 14 | 15 | This is not a real RFC. 16 | 17 | Status of This Memo 18 | 19 | This memo documents an Internet Best Current Practice. 20 | 21 | This document is a product of the Internet Engineering Task Force 22 | (IETF). It represents the consensus of the IETF community. It has 23 | received public review and has been approved for publication by the 24 | Internet Engineering Steering Group (IESG). Further information on 25 | BCPs is available in Section 2 of RFC 7841. 26 | 27 | Information about the current status of this document, any errata, 28 | and how to provide feedback on it may be obtained at 29 | https://www.rfc-editor.org/info/rfc99999. 30 | 31 | Copyright Notice 32 | 33 | Copyright (c) 2024 IETF Trust and the persons identified as the 34 | document authors. All rights reserved. 35 | 36 | This document is subject to BCP 78 and the IETF Trust's Legal 37 | Provisions Relating to IETF Documents 38 | (https://trustee.ietf.org/license-info) in effect on the date of 39 | publication of this document. Please review these documents 40 | carefully, as they describe your rights and restrictions with respect 41 | to this document. Code Components extracted from this document must 42 | include Revised BSD License text as described in Section 4.e of the 43 | Trust Legal Provisions and are provided without warranty as described 44 | in the Revised BSD License. 45 | 46 | Table of Contents 47 | 48 | 1. Section 31 49 | 2. References 50 | 2.1. Normative References 51 | Author's Address 52 | 53 | 1. Section 31 54 | 55 | redacted [RFC99998] 56 | 57 | 2. References 58 | 59 | 2.1. Normative References 60 | 61 | [RFC99998] Doe, J., "Prime Directive", RFC 99998, 62 | DOI 10.17487/RFC99998, October 2024, 63 | . 64 | 65 | Author's Address 66 | 67 | Jane Doe 68 | New Zealand 69 | Email: example@example.org 70 | -------------------------------------------------------------------------------- /tests/valid/rfc99999.v2v3.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | ]> 8 | 9 | 10 | Fake RFC 11 | 12 | 13 |
14 | 15 | NZ 16 | 17 | example@example.org 18 |
19 |
20 | 21 | General 22 | 23 | This is not a real RFC. 24 | 25 |
26 | 27 |
28 | Section 31 29 | redacted 30 |
31 |
32 | 33 | 34 | References 35 | 36 | Normative References 37 | 38 | 39 | 40 | 41 |
42 | -------------------------------------------------------------------------------- /tests/valid/slashbreak.html: -------------------------------------------------------------------------------- 1 |

The RFC Editor has asked that we provide a list of items for which there will never be a break around the slash. The test says that PDF⁠/⁠A and S⁠/⁠MIME should not be broken when they occur.

2 | 3 |

We also deal with the possiblity of some long items such as this⁠/⁠is⁠/⁠a⁠/⁠long⁠/⁠test which will not break either. We only match exact items however so PDF/A/3 will be broken as the algorithm currently stands.

4 | 5 |

What about addresses: 192.168.20.0/16, 192.168.0.0/24, 192.168.0.0/30, and prefix length indications like /48 /56 /64 /72 /80 /88 /96 and so on? These should not be broken after the forward slash.

6 | -------------------------------------------------------------------------------- /tests/valid/slashbreak.nroff: -------------------------------------------------------------------------------- 1 | .in 3 2 | 3 | The RFC Editor has asked that we provide a list of items for which 4 | there will never be a break around the slash. The test says that 5 | PDF/A and S/MIME should not be broken when they occur. 6 | 7 | We also deal with the possiblity of some long items such as 8 | this/is/a/long/test which will not break either. We only match exact 9 | items however so PDF/A/3 will be broken as the algorithm currently 10 | stands. 11 | 12 | What about addresses: 192.168.20.0/16, 192.168.0.0/24, 13 | 192.168.0.0/30, and prefix length indications like /48 /56 /64 /72 14 | /80 /88 /96 and so on? These should not be broken after the forward 15 | slash. 16 | -------------------------------------------------------------------------------- /tests/valid/slashbreak.raw.txt: -------------------------------------------------------------------------------- 1 | The RFC Editor has asked that we provide a list of items for which 2 | there will never be a break around the slash. The test says that 3 | PDF/A and S/MIME should not be broken when they occur. 4 | 5 | We also deal with the possiblity of some long items such as 6 | this/is/a/long/test which will not break either. We only match exact 7 | items however so PDF/A/3 will be broken as the algorithm currently 8 | stands. 9 | 10 | What about addresses: 192.168.20.0/16, 192.168.0.0/24, 11 | 192.168.0.0/30, and prefix length indications like /48 /56 /64 /72 12 | /80 /88 /96 and so on? These should not be broken after the forward 13 | slash. 14 | -------------------------------------------------------------------------------- /tests/valid/slashbreak.text: -------------------------------------------------------------------------------- 1 | The RFC Editor has asked that we provide a list of items for which 2 | there will never be a break around the slash. The test says that 3 | PDF/A and S/MIME should not be broken when they occur. 4 | 5 | We also deal with the possiblity of some long items such as 6 | this/is/a/long/test which will not break either. We only match exact 7 | items however so PDF/A/3 will be broken as the algorithm currently 8 | stands. 9 | 10 | What about addresses: 192.168.20.0/16, 192.168.0.0/24, 11 | 192.168.0.0/30, and prefix length indications like /48 /56 /64 /72 12 | /80 /88 /96 and so on? These should not be broken after the forward 13 | slash. 14 | -------------------------------------------------------------------------------- /tests/valid/slashbreak.txt: -------------------------------------------------------------------------------- 1 | The RFC Editor has asked that we provide a list of items for which 2 | there will never be a break around the slash. The test says that 3 | PDF/A and S/MIME should not be broken when they occur. 4 | 5 | We also deal with the possiblity of some long items such as 6 | this/is/a/long/test which will not break either. We only match exact 7 | items however so PDF/A/3 will be broken as the algorithm currently 8 | stands. 9 | 10 | What about addresses: 192.168.20.0/16, 192.168.0.0/24, 11 | 192.168.0.0/30, and prefix length indications like /48 /56 /64 /72 12 | /80 /88 /96 and so on? These should not be broken after the forward 13 | slash. 14 | -------------------------------------------------------------------------------- /tests/valid/status_iab_exp.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for examination, experimental implementation, and evaluation. 22 | 23 | This document defines an Experimental Protocol for the Internet 24 | community. This document is a product of the Internet Architecture 25 | Board (IAB) and represents information that the IAB has deemed valuable 26 | to provide for permanent record. Documents approved for publication by 27 | the IAB are not candidates for any level of Internet Standard; see 28 | Section 2 of RFC 5741. 29 | 30 | Information about the current status of this document, any errata, and 31 | how to provide feedback on it may be obtained at 32 | http://www.rfc-editor.org/info/rfc9999. 33 | -------------------------------------------------------------------------------- /tests/valid/status_iab_exp.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for examination, experimental implementation, and 5 | evaluation. 6 | 7 | This document defines an Experimental Protocol for the Internet 8 | community. This document is a product of the Internet Architecture 9 | Board (IAB) and represents information that the IAB has deemed 10 | valuable to provide for permanent record. Documents approved for 11 | publication by the IAB are not candidates for any level of Internet 12 | Standard; see Section 2 of RFC 5741. 13 | 14 | Information about the current status of this document, any errata, 15 | and how to provide feedback on it may be obtained at 16 | http://www.rfc-editor.org/info/rfc9999. 17 | -------------------------------------------------------------------------------- /tests/valid/status_iab_historic.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for the historical record. 22 | 23 | This document defines a Historic Document for the Internet community. 24 | This document is a product of the Internet Architecture Board (IAB) and 25 | represents information that the IAB has deemed valuable to provide for 26 | permanent record. Documents approved for publication by the IAB are not 27 | candidates for any level of Internet Standard; see Section 2 of RFC 28 | 5741. 29 | 30 | Information about the current status of this document, any errata, and 31 | how to provide feedback on it may be obtained at 32 | http://www.rfc-editor.org/info/rfc9999. 33 | -------------------------------------------------------------------------------- /tests/valid/status_iab_historic.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for the historical record. 5 | 6 | This document defines a Historic Document for the Internet community. 7 | This document is a product of the Internet Architecture Board (IAB) 8 | and represents information that the IAB has deemed valuable to 9 | provide for permanent record. Documents approved for publication by 10 | the IAB are not candidates for any level of Internet Standard; see 11 | Section 2 of RFC 5741. 12 | 13 | Information about the current status of this document, any errata, 14 | and how to provide feedback on it may be obtained at 15 | http://www.rfc-editor.org/info/rfc9999. 16 | -------------------------------------------------------------------------------- /tests/valid/status_iab_info.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for informational purposes. 22 | 23 | This document is a product of the Internet Architecture Board (IAB) and 24 | represents information that the IAB has deemed valuable to provide for 25 | permanent record. Documents approved for publication by the IAB are not 26 | candidates for any level of Internet Standard; see Section 2 of RFC 27 | 5741. 28 | 29 | Information about the current status of this document, any errata, and 30 | how to provide feedback on it may be obtained at 31 | http://www.rfc-editor.org/info/rfc9999. 32 | -------------------------------------------------------------------------------- /tests/valid/status_iab_info.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for informational purposes. 5 | 6 | This document is a product of the Internet Architecture Board (IAB) 7 | and represents information that the IAB has deemed valuable to 8 | provide for permanent record. Documents approved for publication by 9 | the IAB are not candidates for any level of Internet Standard; see 10 | Section 2 of RFC 5741. 11 | 12 | Information about the current status of this document, any errata, 13 | and how to provide feedback on it may be obtained at 14 | http://www.rfc-editor.org/info/rfc9999. 15 | -------------------------------------------------------------------------------- /tests/valid/status_ietf_bcp_yes.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This memo documents an Internet Best Current Practice. 21 | 22 | This document is a product of the Internet Engineering Task Force 23 | (IETF). It represents the consensus of the IETF community. It has 24 | received public review and has been approved for publication by the 25 | Internet Engineering Steering Group (IESG). Further information on BCPs 26 | is available in Section 2 of RFC 5741. 27 | 28 | Information about the current status of this document, any errata, and 29 | how to provide feedback on it may be obtained at 30 | http://www.rfc-editor.org/info/rfc9999. -------------------------------------------------------------------------------- /tests/valid/status_ietf_bcp_yes.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This memo documents an Internet Best Current Practice. 4 | 5 | This document is a product of the Internet Engineering Task Force 6 | (IETF). It represents the consensus of the IETF community. It has 7 | received public review and has been approved for publication by the 8 | Internet Engineering Steering Group (IESG). Further information on 9 | BCPs is available in Section 2 of RFC 5741. 10 | 11 | Information about the current status of this document, any errata, 12 | and how to provide feedback on it may be obtained at 13 | http://www.rfc-editor.org/info/rfc9999. 14 | -------------------------------------------------------------------------------- /tests/valid/status_ietf_exp_no.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for examination, experimental implementation, and evaluation. 22 | 23 | This document defines an Experimental Protocol for the Internet 24 | community. This document is a product of the Internet Engineering Task 25 | Force (IETF). It has been approved for publication by the Internet 26 | Engineering Steering Group (IESG). Not all documents approved by the 27 | IESG are candidates for any level of Internet Standard; see Section 2 28 | of RFC 5741. 29 | 30 | Information about the current status of this document, any errata, and 31 | how to provide feedback on it may be obtained at 32 | http://www.rfc-editor.org/info/rfc9999. 33 | -------------------------------------------------------------------------------- /tests/valid/status_ietf_exp_no.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for examination, experimental implementation, and 5 | evaluation. 6 | 7 | This document defines an Experimental Protocol for the Internet 8 | community. This document is a product of the Internet Engineering 9 | Task Force (IETF). It has been approved for publication by the 10 | Internet Engineering Steering Group (IESG). Not all documents 11 | approved by the IESG are candidates for any level of Internet 12 | Standard; see Section 2 of RFC 5741. 13 | 14 | Information about the current status of this document, any errata, 15 | and how to provide feedback on it may be obtained at 16 | http://www.rfc-editor.org/info/rfc9999. 17 | -------------------------------------------------------------------------------- /tests/valid/status_ietf_exp_yes.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for examination, experimental implementation, and 5 | evaluation. 6 | 7 | This document defines an Experimental Protocol for the Internet 8 | community. This document is a product of the Internet Engineering 9 | Task Force (IETF). It represents the consensus of the IETF 10 | community. It has received public review and has been approved for 11 | publication by the Internet Engineering Steering Group (IESG). Not 12 | all documents approved by the IESG are candidates for any level of 13 | Internet Standard; see Section 2 of RFC 5741. 14 | 15 | Information about the current status of this document, any errata, 16 | and how to provide feedback on it may be obtained at 17 | http://www.rfc-editor.org/info/rfc9999. 18 | -------------------------------------------------------------------------------- /tests/valid/status_ietf_historic_no.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for the historical record. 22 | 23 | This document defines a Historic Document for the Internet community. 24 | This document is a product of the Internet Engineering Task Force 25 | (IETF). It has been approved for publication by the Internet 26 | Engineering Steering Group (IESG). Not all documents approved by the 27 | IESG are candidates for any level of Internet Standard; see Section 2 28 | of RFC 5741. 29 | 30 | Information about the current status of this document, any errata, and 31 | how to provide feedback on it may be obtained at 32 | http://www.rfc-editor.org/info/rfc9999. 33 | -------------------------------------------------------------------------------- /tests/valid/status_ietf_historic_no.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for the historical record. 5 | 6 | This document defines a Historic Document for the Internet community. 7 | This document is a product of the Internet Engineering Task Force 8 | (IETF). It has been approved for publication by the Internet 9 | Engineering Steering Group (IESG). Not all documents approved by the 10 | IESG are candidates for any level of Internet Standard; see Section 2 11 | of RFC 5741. 12 | 13 | Information about the current status of this document, any errata, 14 | and how to provide feedback on it may be obtained at 15 | http://www.rfc-editor.org/info/rfc9999. -------------------------------------------------------------------------------- /tests/valid/status_ietf_historic_yes.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for the historical record. 22 | 23 | This document defines a Historic Document for the Internet community. 24 | This document is a product of the Internet Engineering Task Force 25 | (IETF). It represents the consensus of the IETF community. It has 26 | received public review and has been approved for publication by the 27 | Internet Engineering Steering Group (IESG). Not all documents approved 28 | by the IESG are candidates for any level of Internet Standard; see 29 | Section 2 of RFC 5741. 30 | 31 | Information about the current status of this document, any errata, and 32 | how to provide feedback on it may be obtained at 33 | http://www.rfc-editor.org/info/rfc9999. 34 | -------------------------------------------------------------------------------- /tests/valid/status_ietf_historic_yes.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for the historical record. 5 | 6 | This document defines a Historic Document for the Internet community. 7 | This document is a product of the Internet Engineering Task Force 8 | (IETF). It represents the consensus of the IETF community. It has 9 | received public review and has been approved for publication by the 10 | Internet Engineering Steering Group (IESG). Not all documents 11 | approved by the IESG are candidates for any level of Internet 12 | Standard; see Section 2 of RFC 5741. 13 | 14 | Information about the current status of this document, any errata, 15 | and how to provide feedback on it may be obtained at 16 | http://www.rfc-editor.org/info/rfc9999. 17 | -------------------------------------------------------------------------------- /tests/valid/status_ietf_info_no.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for informational purposes. 22 | 23 | This document is a product of the Internet Engineering Task Force 24 | (IETF). It has been approved for publication by the Internet 25 | Engineering Steering Group (IESG). Not all documents approved by the 26 | IESG are candidates for any level of Internet Standard; see Section 2 27 | of RFC 5741. 28 | 29 | Information about the current status of this document, any errata, and 30 | how to provide feedback on it may be obtained at 31 | http://www.rfc-editor.org/info/rfc9999. 32 | -------------------------------------------------------------------------------- /tests/valid/status_ietf_info_no.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for informational purposes. 5 | 6 | This document is a product of the Internet Engineering Task Force 7 | (IETF). It has been approved for publication by the Internet 8 | Engineering Steering Group (IESG). Not all documents approved by the 9 | IESG are candidates for any level of Internet Standard; see Section 2 10 | of RFC 5741. 11 | 12 | Information about the current status of this document, any errata, 13 | and how to provide feedback on it may be obtained at 14 | http://www.rfc-editor.org/info/rfc9999. -------------------------------------------------------------------------------- /tests/valid/status_ietf_info_yes.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for informational purposes. 22 | 23 | This document is a product of the Internet Engineering Task Force 24 | (IETF). It represents the consensus of the IETF community. It has 25 | received public review and has been approved for publication by the 26 | Internet Engineering Steering Group (IESG). Not all documents approved 27 | by the IESG are candidates for any level of Internet Standard; see 28 | Section 2 of RFC 5741. 29 | 30 | Information about the current status of this document, any errata, and 31 | how to provide feedback on it may be obtained at 32 | http://www.rfc-editor.org/info/rfc9999. 33 | -------------------------------------------------------------------------------- /tests/valid/status_ietf_info_yes.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for informational purposes. 5 | 6 | This document is a product of the Internet Engineering Task Force 7 | (IETF). It represents the consensus of the IETF community. It has 8 | received public review and has been approved for publication by the 9 | Internet Engineering Steering Group (IESG). Not all documents 10 | approved by the IESG are candidates for any level of Internet 11 | Standard; see Section 2 of RFC 5741. 12 | 13 | Information about the current status of this document, any errata, 14 | and how to provide feedback on it may be obtained at 15 | http://www.rfc-editor.org/info/rfc9999. 16 | -------------------------------------------------------------------------------- /tests/valid/status_ietf_std_yes.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This is an Internet Standards Track document. 21 | 22 | This document is a product of the Internet Engineering Task Force 23 | (IETF). It represents the consensus of the IETF community. It has 24 | received public review and has been approved for publication by the 25 | Internet Engineering Steering Group (IESG). Further information on 26 | Internet Standards is available in Section 2 of RFC 5741. 27 | 28 | Information about the current status of this document, any errata, and 29 | how to provide feedback on it may be obtained at 30 | http://www.rfc-editor.org/info/rfc9999. -------------------------------------------------------------------------------- /tests/valid/status_ietf_std_yes.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This is an Internet Standards Track document. 4 | 5 | This document is a product of the Internet Engineering Task Force 6 | (IETF). It represents the consensus of the IETF community. It has 7 | received public review and has been approved for publication by the 8 | Internet Engineering Steering Group (IESG). Further information on 9 | Internet Standards is available in Section 2 of RFC 5741. 10 | 11 | Information about the current status of this document, any errata, 12 | and how to provide feedback on it may be obtained at 13 | http://www.rfc-editor.org/info/rfc9999. 14 | -------------------------------------------------------------------------------- /tests/valid/status_independent_exp.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for examination, experimental implementation, and evaluation. 22 | 23 | This document defines an Experimental Protocol for the Internet 24 | community. This is a contribution to the RFC Series, independently of 25 | any other RFC stream. The RFC Editor has chosen to publish this 26 | document at its discretion and makes no statement about its value for 27 | implementation or deployment. Documents approved for publication by the 28 | RFC Editor are not candidates for any level of Internet Standard; see 29 | Section 2 of RFC 5741. 30 | 31 | Information about the current status of this document, any errata, and 32 | how to provide feedback on it may be obtained at 33 | http://www.rfc-editor.org/info/rfc9999. 34 | -------------------------------------------------------------------------------- /tests/valid/status_independent_exp.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for examination, experimental implementation, and 5 | evaluation. 6 | 7 | This document defines an Experimental Protocol for the Internet 8 | community. This is a contribution to the RFC Series, independently 9 | of any other RFC stream. The RFC Editor has chosen to publish this 10 | document at its discretion and makes no statement about its value for 11 | implementation or deployment. Documents approved for publication by 12 | the RFC Editor are not candidates for any level of Internet Standard; 13 | see Section 2 of RFC 5741. 14 | 15 | Information about the current status of this document, any errata, 16 | and how to provide feedback on it may be obtained at 17 | http://www.rfc-editor.org/info/rfc9999. -------------------------------------------------------------------------------- /tests/valid/status_independent_historic.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for the historical record. 22 | 23 | This document defines a Historic Document for the Internet community. 24 | This is a contribution to the RFC Series, independently of any other RFC 25 | stream. The RFC Editor has chosen to publish this document at its 26 | discretion and makes no statement about its value for implementation or 27 | deployment. Documents approved for publication by the RFC Editor are 28 | not candidates for any level of Internet Standard; see Section 2 of RFC 29 | 5741. 30 | 31 | Information about the current status of this document, any errata, and 32 | how to provide feedback on it may be obtained at 33 | http://www.rfc-editor.org/info/rfc9999. 34 | -------------------------------------------------------------------------------- /tests/valid/status_independent_historic.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for the historical record. 5 | 6 | This document defines a Historic Document for the Internet community. 7 | This is a contribution to the RFC Series, independently of any other 8 | RFC stream. The RFC Editor has chosen to publish this document at 9 | its discretion and makes no statement about its value for 10 | implementation or deployment. Documents approved for publication by 11 | the RFC Editor are not candidates for any level of Internet Standard; 12 | see Section 2 of RFC 5741. 13 | 14 | Information about the current status of this document, any errata, 15 | and how to provide feedback on it may be obtained at 16 | http://www.rfc-editor.org/info/rfc9999. -------------------------------------------------------------------------------- /tests/valid/status_independent_info.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for informational purposes. 22 | 23 | This is a contribution to the RFC Series, independently of any other RFC 24 | stream. The RFC Editor has chosen to publish this document at its 25 | discretion and makes no statement about its value for implementation or 26 | deployment. Documents approved for publication by the RFC Editor are 27 | not candidates for any level of Internet Standard; see Section 2 of RFC 28 | 5741. 29 | 30 | Information about the current status of this document, any errata, and 31 | how to provide feedback on it may be obtained at 32 | http://www.rfc-editor.org/info/rfc9999. 33 | -------------------------------------------------------------------------------- /tests/valid/status_independent_info.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for informational purposes. 5 | 6 | This is a contribution to the RFC Series, independently of any other 7 | RFC stream. The RFC Editor has chosen to publish this document at 8 | its discretion and makes no statement about its value for 9 | implementation or deployment. Documents approved for publication by 10 | the RFC Editor are not candidates for any level of Internet Standard; 11 | see Section 2 of RFC 5741. 12 | 13 | Information about the current status of this document, any errata, 14 | and how to provide feedback on it may be obtained at 15 | http://www.rfc-editor.org/info/rfc9999. -------------------------------------------------------------------------------- /tests/valid/status_irtf_exp_no.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for examination, experimental implementation, and evaluation. 22 | 23 | This document defines an Experimental Protocol for the Internet 24 | community. This document is a product of the Internet Research Task 25 | Force (IRTF). The IRTF publishes the results of Internet-related 26 | research and development activities. These results might not be 27 | suitable for deployment. This RFC represents the individual opinion(s) 28 | of one or more members of the Workgroup Research Group of the Internet 29 | Research Task Force (IRTF). Documents approved for publication by the 30 | IRSG are not candidates for any level of Internet Standard; see Section 31 | 2 of RFC 5741. 32 | 33 | Information about the current status of this document, any errata, and 34 | how to provide feedback on it may be obtained at 35 | http://www.rfc-editor.org/info/rfc9999. 36 | -------------------------------------------------------------------------------- /tests/valid/status_irtf_exp_no.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for examination, experimental implementation, and 5 | evaluation. 6 | 7 | This document defines an Experimental Protocol for the Internet 8 | community. This document is a product of the Internet Research Task 9 | Force (IRTF). The IRTF publishes the results of Internet-related 10 | research and development activities. These results might not be 11 | suitable for deployment. This RFC represents the individual 12 | opinion(s) of one or more members of the Workgroup Research Group of 13 | the Internet Research Task Force (IRTF). Documents approved for 14 | publication by the IRSG are not candidates for any level of Internet 15 | Standard; see Section 2 of RFC 5741. 16 | 17 | Information about the current status of this document, any errata, 18 | and how to provide feedback on it may be obtained at 19 | http://www.rfc-editor.org/info/rfc9999. 20 | -------------------------------------------------------------------------------- /tests/valid/status_irtf_exp_nowg.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for examination, experimental implementation, and evaluation. 22 | 23 | This document defines an Experimental Protocol for the Internet 24 | community. This document is a product of the Internet Research Task 25 | Force (IRTF). The IRTF publishes the results of Internet-related 26 | research and development activities. These results might not be 27 | suitable for deployment. Documents approved for publication by the IRSG 28 | are not candidates for any level of Internet Standard; see Section 2 of 29 | RFC 5741. 30 | 31 | Information about the current status of this document, any errata, and 32 | how to provide feedback on it may be obtained at 33 | http://www.rfc-editor.org/info/rfc9999. 34 | -------------------------------------------------------------------------------- /tests/valid/status_irtf_exp_nowg.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for examination, experimental implementation, and 5 | evaluation. 6 | 7 | This document defines an Experimental Protocol for the Internet 8 | community. This document is a product of the Internet Research Task 9 | Force (IRTF). The IRTF publishes the results of Internet-related 10 | research and development activities. These results might not be 11 | suitable for deployment. Documents approved for publication by the 12 | IRSG are not candidates for any level of Internet Standard; see 13 | Section 2 of RFC 5741. 14 | 15 | Information about the current status of this document, any errata, 16 | and how to provide feedback on it may be obtained at 17 | http://www.rfc-editor.org/info/rfc9999. 18 | -------------------------------------------------------------------------------- /tests/valid/status_irtf_exp_yes.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for examination, experimental implementation, and evaluation. 22 | 23 | This document defines an Experimental Protocol for the Internet 24 | community. This document is a product of the Internet Research Task 25 | Force (IRTF). The IRTF publishes the results of Internet-related 26 | research and development activities. These results might not be 27 | suitable for deployment. This RFC represents the consensus of the 28 | Workgroup Research Group of the Internet Research Task Force (IRTF). 29 | Documents approved for publication by the IRSG are not candidates for 30 | any level of Internet Standard; see Section 2 of RFC 5741. 31 | 32 | Information about the current status of this document, any errata, and 33 | how to provide feedback on it may be obtained at 34 | http://www.rfc-editor.org/info/rfc9999. 35 | -------------------------------------------------------------------------------- /tests/valid/status_irtf_exp_yes.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for examination, experimental implementation, and 5 | evaluation. 6 | 7 | This document defines an Experimental Protocol for the Internet 8 | community. This document is a product of the Internet Research Task 9 | Force (IRTF). The IRTF publishes the results of Internet-related 10 | research and development activities. These results might not be 11 | suitable for deployment. This RFC represents the consensus of the 12 | Workgroup Research Group of the Internet Research Task Force (IRTF). 13 | Documents approved for publication by the IRSG are not candidates for 14 | any level of Internet Standard; see Section 2 of RFC 5741. 15 | 16 | Information about the current status of this document, any errata, 17 | and how to provide feedback on it may be obtained at 18 | http://www.rfc-editor.org/info/rfc9999. -------------------------------------------------------------------------------- /tests/valid/status_irtf_historic_no.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for the historical record. 22 | 23 | This document defines a Historic Document for the Internet community. 24 | This document is a product of the Internet Research Task Force (IRTF). 25 | The IRTF publishes the results of Internet-related research and 26 | development activities. These results might not be suitable for 27 | deployment. This RFC represents the individual opinion(s) of one or 28 | more members of the Workgroup Research Group of the Internet Research 29 | Task Force (IRTF). Documents approved for publication by the IRSG are 30 | not candidates for any level of Internet Standard; see Section 2 of RFC 31 | 5741. 32 | 33 | Information about the current status of this document, any errata, and 34 | how to provide feedback on it may be obtained at 35 | http://www.rfc-editor.org/info/rfc9999. 36 | -------------------------------------------------------------------------------- /tests/valid/status_irtf_historic_no.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for the historical record. 5 | 6 | This document defines a Historic Document for the Internet community. 7 | This document is a product of the Internet Research Task Force 8 | (IRTF). The IRTF publishes the results of Internet-related research 9 | and development activities. These results might not be suitable for 10 | deployment. This RFC represents the individual opinion(s) of one or 11 | more members of the Workgroup Research Group of the Internet Research 12 | Task Force (IRTF). Documents approved for publication by the IRSG 13 | are not candidates for any level of Internet Standard; see Section 2 14 | of RFC 5741. 15 | 16 | Information about the current status of this document, any errata, 17 | and how to provide feedback on it may be obtained at 18 | http://www.rfc-editor.org/info/rfc9999. 19 | -------------------------------------------------------------------------------- /tests/valid/status_irtf_historic_nowg.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for the historical record. 22 | 23 | This document defines a Historic Document for the Internet community. 24 | This document is a product of the Internet Research Task Force (IRTF). 25 | The IRTF publishes the results of Internet-related research and 26 | development activities. These results might not be suitable for 27 | deployment. Documents approved for publication by the IRSG are not a 28 | candidate for any level of Internet Standard; see Section 2 of RFC 5741. 29 | 30 | Information about the current status of this document, any errata, and 31 | how to provide feedback on it may be obtained at 32 | http://www.rfc-editor.org/info/rfc9999. -------------------------------------------------------------------------------- /tests/valid/status_irtf_historic_nowg.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for the historical record. 5 | 6 | This document defines a Historic Document for the Internet community. 7 | This document is a product of the Internet Research Task Force 8 | (IRTF). The IRTF publishes the results of Internet-related research 9 | and development activities. These results might not be suitable for 10 | deployment. Documents approved for publication by the IRSG are not 11 | candidates for any level of Internet Standard; see Section 2 of RFC 12 | 5741. 13 | 14 | Information about the current status of this document, any errata, 15 | and how to provide feedback on it may be obtained at 16 | http://www.rfc-editor.org/info/rfc9999. -------------------------------------------------------------------------------- /tests/valid/status_irtf_historic_yes.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for the historical record. 22 | 23 | This document defines a Historic Document for the Internet community. 24 | This document is a product of the Internet Research Task Force (IRTF). 25 | The IRTF publishes the results of Internet-related research and 26 | development activities. These results might not be suitable for 27 | deployment. This RFC represents the consensus of the Workgroup Research 28 | Group of the Internet Research Task Force (IRTF). Documents approved 29 | for publication by the IRSG are not candidates for any level of 30 | Internet Standard; see Section 2 of RFC 5741. 31 | 32 | Information about the current status of this document, any errata, and 33 | how to provide feedback on it may be obtained at 34 | http://www.rfc-editor.org/info/rfc9999. 35 | -------------------------------------------------------------------------------- /tests/valid/status_irtf_historic_yes.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for the historical record. 5 | 6 | This document defines a Historic Document for the Internet community. 7 | This document is a product of the Internet Research Task Force 8 | (IRTF). The IRTF publishes the results of Internet-related research 9 | and development activities. These results might not be suitable for 10 | deployment. This RFC represents the consensus of the Workgroup 11 | Research Group of the Internet Research Task Force (IRTF). Documents 12 | approved for publication by the IRSG are not candidates for any level 13 | of Internet Standard; see Section 2 of RFC 5741. 14 | 15 | Information about the current status of this document, any errata, 16 | and how to provide feedback on it may be obtained at 17 | http://www.rfc-editor.org/info/rfc9999. -------------------------------------------------------------------------------- /tests/valid/status_irtf_info_no.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for informational purposes. 22 | 23 | This document is a product of the Internet Research Task Force (IRTF). 24 | The IRTF publishes the results of Internet-related research and 25 | development activities. These results might not be suitable for 26 | deployment. This RFC represents the individual opinion(s) of one or 27 | more members of the Workgroup Research Group of the Internet Research 28 | Task Force (IRTF). Documents approved for publication by the IRSG are 29 | not candidates for any level of Internet Standard; see Section 2 of RFC 30 | 5741. 31 | 32 | Information about the current status of this document, any errata, and 33 | how to provide feedback on it may be obtained at 34 | http://www.rfc-editor.org/info/rfc9999. 35 | -------------------------------------------------------------------------------- /tests/valid/status_irtf_info_no.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for informational purposes. 5 | 6 | This document is a product of the Internet Research Task Force 7 | (IRTF). The IRTF publishes the results of Internet-related research 8 | and development activities. These results might not be suitable for 9 | deployment. This RFC represents the individual opinion(s) of one or 10 | more members of the Workgroup Research Group of the Internet Research 11 | Task Force (IRTF). Documents approved for publication by the IRSG 12 | are not candidates for any level of Internet Standard; see Section 2 13 | of RFC 5741. 14 | 15 | Information about the current status of this document, any errata, 16 | and how to provide feedback on it may be obtained at 17 | http://www.rfc-editor.org/info/rfc9999. 18 | -------------------------------------------------------------------------------- /tests/valid/status_irtf_info_nowg.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for informational purposes. 22 | 23 | This document is a product of the Internet Research Task Force (IRTF). 24 | The IRTF publishes the results of Internet-related research and 25 | development activities. These results might not be suitable for 26 | deployment. Documents approved for publication by the IRSG are not a 27 | candidate for any level of Internet Standard; see Section 2 of RFC 5741. 28 | 29 | Information about the current status of this document, any errata, and 30 | how to provide feedback on it may be obtained at 31 | http://www.rfc-editor.org/info/rfc9999. -------------------------------------------------------------------------------- /tests/valid/status_irtf_info_nowg.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for informational purposes. 5 | 6 | This document is a product of the Internet Research Task Force 7 | (IRTF). The IRTF publishes the results of Internet-related research 8 | and development activities. These results might not be suitable for 9 | deployment. Documents approved for publication by the IRSG are not 10 | candidates for any level of Internet Standard; see Section 2 of RFC 11 | 5741. 12 | 13 | Information about the current status of this document, any errata, 14 | and how to provide feedback on it may be obtained at 15 | http://www.rfc-editor.org/info/rfc9999. -------------------------------------------------------------------------------- /tests/valid/status_irtf_info_yes.nroff: -------------------------------------------------------------------------------- 1 | .pl 10.0i 2 | .po 0 3 | .ll 7.2i 4 | .lt 7.2i 5 | .nr LL 7.2i 6 | .nr LT 7.2i 7 | .hy 0 8 | .ad l 9 | .ds LH RFC 9999 10 | .ds CH Abbreviated Title 11 | .ds RH December 2010 12 | .ds LF Doe 13 | .ds CF Best Current Practice 14 | .ds RF FORMFEED[Page %] 15 | 16 | .ti 0 17 | Status of This Memo 18 | 19 | .in 3 20 | This document is not an Internet Standards Track specification; it is 21 | published for informational purposes. 22 | 23 | This document is a product of the Internet Research Task Force (IRTF). 24 | The IRTF publishes the results of Internet-related research and 25 | development activities. These results might not be suitable for 26 | deployment. This RFC represents the consensus of the Workgroup Research 27 | Group of the Internet Research Task Force (IRTF). Documents approved 28 | for publication by the IRSG are not candidates for any level of 29 | Internet Standard; see Section 2 of RFC 5741. 30 | 31 | Information about the current status of this document, any errata, and 32 | how to provide feedback on it may be obtained at 33 | http://www.rfc-editor.org/info/rfc9999. 34 | -------------------------------------------------------------------------------- /tests/valid/status_irtf_info_yes.txt: -------------------------------------------------------------------------------- 1 | Status of This Memo 2 | 3 | This document is not an Internet Standards Track specification; it is 4 | published for informational purposes. 5 | 6 | This document is a product of the Internet Research Task Force 7 | (IRTF). The IRTF publishes the results of Internet-related research 8 | and development activities. These results might not be suitable for 9 | deployment. This RFC represents the consensus of the Workgroup 10 | Research Group of the Internet Research Task Force (IRTF). Documents 11 | approved for publication by the IRSG are not candidates for any level 12 | of Internet Standard; see Section 2 of RFC 5741. 13 | 14 | Information about the current status of this document, any errata, 15 | and how to provide feedback on it may be obtained at 16 | http://www.rfc-editor.org/info/rfc9999. -------------------------------------------------------------------------------- /tests/valid/texttable_small.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
column Acolumn B
cell 1Acell 1B
cell 2Acell 2B
cell 3Acell 3B
21 | -------------------------------------------------------------------------------- /tests/valid/texttable_small.nroff: -------------------------------------------------------------------------------- 1 | .nf 2 | 3 | +----------+----------+ 4 | | column A | column B | 5 | +----------+----------+ 6 | | cell 1A | cell 1B | 7 | | | | 8 | | cell 2A | cell 2B | 9 | | | | 10 | | cell 3A | cell 3B | 11 | +----------+----------+ 12 | .fi 13 | .in 3 -------------------------------------------------------------------------------- /tests/valid/texttable_small.raw.txt: -------------------------------------------------------------------------------- 1 | +----------+----------+ 2 | | column A | column B | 3 | +----------+----------+ 4 | | cell 1A | cell 1B | 5 | | | | 6 | | cell 2A | cell 2B | 7 | | | | 8 | | cell 3A | cell 3B | 9 | +----------+----------+ -------------------------------------------------------------------------------- /tests/valid/texttable_small.text: -------------------------------------------------------------------------------- 1 | +----------+----------+ 2 | | column A | column B | 3 | +----------+----------+ 4 | | cell 1A | cell 1B | 5 | | | | 6 | | cell 2A | cell 2B | 7 | | | | 8 | | cell 3A | cell 3B | 9 | +----------+----------+ -------------------------------------------------------------------------------- /tests/valid/texttable_small.txt: -------------------------------------------------------------------------------- 1 | +----------+----------+ 2 | | column A | column B | 3 | +----------+----------+ 4 | | cell 1A | cell 1B | 5 | | | | 6 | | cell 2A | cell 2B | 7 | | | | 8 | | cell 3A | cell 3B | 9 | +----------+----------+ -------------------------------------------------------------------------------- /tests/valid/texttable_small_all.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
column Acolumn B
cell 1Acell 1B
cell 2Acell 2B
cell 3Acell 3B
21 | -------------------------------------------------------------------------------- /tests/valid/texttable_small_all.nroff: -------------------------------------------------------------------------------- 1 | .nf 2 | 3 | +----------+----------+ 4 | | column A | column B | 5 | +----------+----------+ 6 | | cell 1A | cell 1B | 7 | +----------+----------+ 8 | | cell 2A | cell 2B | 9 | +----------+----------+ 10 | | cell 3A | cell 3B | 11 | +----------+----------+ 12 | .fi 13 | .in 3 -------------------------------------------------------------------------------- /tests/valid/texttable_small_all.raw.txt: -------------------------------------------------------------------------------- 1 | +----------+----------+ 2 | | column A | column B | 3 | +----------+----------+ 4 | | cell 1A | cell 1B | 5 | +----------+----------+ 6 | | cell 2A | cell 2B | 7 | +----------+----------+ 8 | | cell 3A | cell 3B | 9 | +----------+----------+ -------------------------------------------------------------------------------- /tests/valid/texttable_small_all.text: -------------------------------------------------------------------------------- 1 | +----------+----------+ 2 | | column A | column B | 3 | +----------+----------+ 4 | | cell 1A | cell 1B | 5 | +----------+----------+ 6 | | cell 2A | cell 2B | 7 | +----------+----------+ 8 | | cell 3A | cell 3B | 9 | +----------+----------+ -------------------------------------------------------------------------------- /tests/valid/texttable_small_all.txt: -------------------------------------------------------------------------------- 1 | +----------+----------+ 2 | | column A | column B | 3 | +----------+----------+ 4 | | cell 1A | cell 1B | 5 | +----------+----------+ 6 | | cell 2A | cell 2B | 7 | +----------+----------+ 8 | | cell 3A | cell 3B | 9 | +----------+----------+ -------------------------------------------------------------------------------- /tests/valid/texttable_small_full.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
column Acolumn B
cell 1Acell 1B
cell 2Acell 2B
cell 3Acell 3B
21 | -------------------------------------------------------------------------------- /tests/valid/texttable_small_full.nroff: -------------------------------------------------------------------------------- 1 | .nf 2 | 3 | +----------+----------+ 4 | | column A | column B | 5 | +----------+----------+ 6 | | cell 1A | cell 1B | 7 | | | | 8 | | cell 2A | cell 2B | 9 | | | | 10 | | cell 3A | cell 3B | 11 | +----------+----------+ 12 | .fi 13 | .in 3 -------------------------------------------------------------------------------- /tests/valid/texttable_small_full.raw.txt: -------------------------------------------------------------------------------- 1 | +----------+----------+ 2 | | column A | column B | 3 | +----------+----------+ 4 | | cell 1A | cell 1B | 5 | | | | 6 | | cell 2A | cell 2B | 7 | | | | 8 | | cell 3A | cell 3B | 9 | +----------+----------+ -------------------------------------------------------------------------------- /tests/valid/texttable_small_full.text: -------------------------------------------------------------------------------- 1 | +----------+----------+ 2 | | column A | column B | 3 | +----------+----------+ 4 | | cell 1A | cell 1B | 5 | | | | 6 | | cell 2A | cell 2B | 7 | | | | 8 | | cell 3A | cell 3B | 9 | +----------+----------+ -------------------------------------------------------------------------------- /tests/valid/texttable_small_full.txt: -------------------------------------------------------------------------------- 1 | +----------+----------+ 2 | | column A | column B | 3 | +----------+----------+ 4 | | cell 1A | cell 1B | 5 | | | | 6 | | cell 2A | cell 2B | 7 | | | | 8 | | cell 3A | cell 3B | 9 | +----------+----------+ -------------------------------------------------------------------------------- /tests/valid/texttable_small_headers.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
column Acolumn B
cell 1Acell 1B
cell 2Acell 2B
cell 3Acell 3B
21 | -------------------------------------------------------------------------------- /tests/valid/texttable_small_headers.nroff: -------------------------------------------------------------------------------- 1 | .nf 2 | 3 | column A column B 4 | -------- -------- 5 | cell 1A cell 1B 6 | 7 | cell 2A cell 2B 8 | 9 | cell 3A cell 3B 10 | .fi 11 | .in 3 -------------------------------------------------------------------------------- /tests/valid/texttable_small_headers.raw.txt: -------------------------------------------------------------------------------- 1 | column A column B 2 | -------- -------- 3 | cell 1A cell 1B 4 | 5 | cell 2A cell 2B 6 | 7 | cell 3A cell 3B -------------------------------------------------------------------------------- /tests/valid/texttable_small_headers.text: -------------------------------------------------------------------------------- 1 | column A column B 2 | -------- -------- 3 | cell 1A cell 1B 4 | 5 | cell 2A cell 2B 6 | 7 | cell 3A cell 3B -------------------------------------------------------------------------------- /tests/valid/texttable_small_headers.txt: -------------------------------------------------------------------------------- 1 | column A column B 2 | -------- -------- 3 | cell 1A cell 1B 4 | 5 | cell 2A cell 2B 6 | 7 | cell 3A cell 3B -------------------------------------------------------------------------------- /tests/valid/texttable_small_none.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
column Acolumn B
cell 1Acell 1B
cell 2Acell 2B
cell 3Acell 3B
21 | -------------------------------------------------------------------------------- /tests/valid/texttable_small_none.nroff: -------------------------------------------------------------------------------- 1 | .nf 2 | 3 | column A column B 4 | 5 | cell 1A cell 1B 6 | cell 2A cell 2B 7 | cell 3A cell 3B 8 | .fi 9 | .in 3 -------------------------------------------------------------------------------- /tests/valid/texttable_small_none.raw.txt: -------------------------------------------------------------------------------- 1 | column A column B 2 | 3 | cell 1A cell 1B 4 | cell 2A cell 2B 5 | cell 3A cell 3B -------------------------------------------------------------------------------- /tests/valid/texttable_small_none.text: -------------------------------------------------------------------------------- 1 | column A column B 2 | 3 | cell 1A cell 1B 4 | cell 2A cell 2B 5 | cell 3A cell 3B -------------------------------------------------------------------------------- /tests/valid/texttable_small_none.txt: -------------------------------------------------------------------------------- 1 | column A column B 2 | 3 | cell 1A cell 1B 4 | cell 2A cell 2B 5 | cell 3A cell 3B -------------------------------------------------------------------------------- /tests/valid/texttable_title.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
Success (2xx)
CodeMeaning
200Success
201Success with some optional header fields ignored
22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
Success (2xx)
CodeMeaning
200Success
201Success with some optional header fields ignored
40 | -------------------------------------------------------------------------------- /tests/valid/texttable_title.nroff: -------------------------------------------------------------------------------- 1 | .nf 2 | 3 | +------------+--------------------------------------------------+ 4 | | Code | Meaning | 5 | +------------+--------------------------------------------------+ 6 | | 200 | Success | 7 | | | | 8 | | 201 | Success with some optional header fields ignored | 9 | +------------+--------------------------------------------------+ 10 | .fi 11 | .in 3 12 | .ce 1 13 | 14 | Table\01: Success (2xx) 15 | .in 0 16 | .nf 17 | 18 | +------------+--------------------------------------------------+ 19 | | Code | Meaning | 20 | +------------+--------------------------------------------------+ 21 | | 200 | Success | 22 | | | | 23 | | 201 | Success with some optional header fields ignored | 24 | +------------+--------------------------------------------------+ 25 | .fi 26 | .in 3 27 | .ce 1 28 | 29 | Success (2xx) -------------------------------------------------------------------------------- /tests/valid/texttable_title.raw.txt: -------------------------------------------------------------------------------- 1 | +------------+--------------------------------------------------+ 2 | | Code | Meaning | 3 | +------------+--------------------------------------------------+ 4 | | 200 | Success | 5 | | | | 6 | | 201 | Success with some optional header fields ignored | 7 | +------------+--------------------------------------------------+ 8 | 9 | Table 1: Success (2xx) 10 | 11 | +------------+--------------------------------------------------+ 12 | | Code | Meaning | 13 | +------------+--------------------------------------------------+ 14 | | 200 | Success | 15 | | | | 16 | | 201 | Success with some optional header fields ignored | 17 | +------------+--------------------------------------------------+ 18 | 19 | Success (2xx) -------------------------------------------------------------------------------- /tests/valid/texttable_title.text: -------------------------------------------------------------------------------- 1 | +------------+--------------------------------------------------+ 2 | | Code | Meaning | 3 | +------------+--------------------------------------------------+ 4 | | 200 | Success | 5 | | | | 6 | | 201 | Success with some optional header fields ignored | 7 | +------------+--------------------------------------------------+ 8 | 9 | Table 1: Success (2xx) 10 | 11 | +------------+--------------------------------------------------+ 12 | | Code | Meaning | 13 | +------------+--------------------------------------------------+ 14 | | 200 | Success | 15 | | | | 16 | | 201 | Success with some optional header fields ignored | 17 | +------------+--------------------------------------------------+ 18 | 19 | Success (2xx) -------------------------------------------------------------------------------- /tests/valid/texttable_title.txt: -------------------------------------------------------------------------------- 1 | +------------+--------------------------------------------------+ 2 | | Code | Meaning | 3 | +------------+--------------------------------------------------+ 4 | | 200 | Success | 5 | | | | 6 | | 201 | Success with some optional header fields ignored | 7 | +------------+--------------------------------------------------+ 8 | 9 | Table 1: Success (2xx) 10 | 11 | +------------+--------------------------------------------------+ 12 | | Code | Meaning | 13 | +------------+--------------------------------------------------+ 14 | | 200 | Success | 15 | | | | 16 | | 201 | Success with some optional header fields ignored | 17 | +------------+--------------------------------------------------+ 18 | 19 | Success (2xx) -------------------------------------------------------------------------------- /tests/valid/textwrap.html: -------------------------------------------------------------------------------- 1 |

Here are some tests for various things which are not sentence endings, and should not be fixed up with double spaces: Some titles (which actually shouldn't all have a final dot according to some grammar rules, but nevermind...): Mr. Jones said hello to Mrs. Smith and Messrs. Costeau & Filou. We might also look at some other examples, e.g. (without the correct comma following the final dot) military titles like Lt. Anderson, and others, viz. Prof. Foo and Dr. Barbara. We have however been requested to generate end-of-sentence spacing for things like this sentence: OCB encryption protects the confidentiality of P and the authenticity of A, N, and P. This is obviously in conflict with the correct rendering of Anon Y. Name, so a workaround for that case, with &nbsp; will have to be used for correct rendering. End of test.

2 | 3 |

What about addresses: 192.168.20.0/16, 192.168.0.0/24, 192.168.0.0/30, and prefix length indications like /48 /56 /64 /72 /80 /88 /96 and so on? These should not be broken after the forward slash.

4 | 5 |

Either both or neither of body.smime-serial and body.smime-issuer should be present in an Authentication-Results header field. body.smime-serial and body.smime-issuer are used for cases when body.smime-identifier (email address) can't be derived by the entity adding the corresponding Authentication-Results header field. For example this can be used when gatewaying from X.400.

6 | -------------------------------------------------------------------------------- /tests/valid/textwrap.nroff: -------------------------------------------------------------------------------- 1 | .in 3 2 | 3 | Here are some tests for various things which are not sentence 4 | endings, and should not be fixed up with double spaces: Some titles 5 | (which actually shouldn't all have a final dot according to some 6 | grammar rules, but nevermind...): Mr. Jones said hello to Mrs. Smith 7 | and Messrs. Costeau & Filou. We might also look at some other 8 | examples, e.g. (without the correct comma following the final dot) 9 | military titles like Lt. Anderson, and others, viz. Prof. Foo and Dr. 10 | Barbara. We have however been requested to generate \%end-of-sentence 11 | spacing for things like this sentence: OCB encryption protects the 12 | confidentiality of P and the authenticity of A, N, and P. This is 13 | obviously in conflict with the correct rendering of Anon Y. Name, so 14 | a workaround for that case, with   will have to be used for 15 | correct rendering. End of test. 16 | 17 | What about addresses: 192.168.20.0/16, 192.168.0.0/24, 18 | 192.168.0.0/30, and prefix length indications like /48 /56 /64 /72 19 | /80 /88 /96 and so on? These should not be broken after the forward 20 | slash. 21 | 22 | Either both or neither of \%body.smime-serial and \%body.smime-issuer 23 | should be present in an \%Authentication-Results header field. 24 | \%body.smime-serial and \%body.smime-issuer are used for cases when 25 | \%body.smime-identifier (email address) can't be derived by the entity 26 | adding the corresponding \%Authentication-Results header field. For 27 | example this can be used when gatewaying from X.400. -------------------------------------------------------------------------------- /tests/valid/textwrap.raw.txt: -------------------------------------------------------------------------------- 1 | Here are some tests for various things which are not sentence 2 | endings, and should not be fixed up with double spaces: Some titles 3 | (which actually shouldn't all have a final dot according to some 4 | grammar rules, but nevermind...): Mr. Jones said hello to Mrs. Smith 5 | and Messrs. Costeau & Filou. We might also look at some other 6 | examples, e.g. (without the correct comma following the final dot) 7 | military titles like Lt. Anderson, and others, viz. Prof. Foo and Dr. 8 | Barbara. We have however been requested to generate end-of-sentence 9 | spacing for things like this sentence: OCB encryption protects the 10 | confidentiality of P and the authenticity of A, N, and P. This is 11 | obviously in conflict with the correct rendering of Anon Y. Name, so 12 | a workaround for that case, with   will have to be used for 13 | correct rendering. End of test. 14 | 15 | What about addresses: 192.168.20.0/16, 192.168.0.0/24, 16 | 192.168.0.0/30, and prefix length indications like /48 /56 /64 /72 17 | /80 /88 /96 and so on? These should not be broken after the forward 18 | slash. 19 | 20 | Either both or neither of body.smime-serial and body.smime-issuer 21 | should be present in an Authentication-Results header field. 22 | body.smime-serial and body.smime-issuer are used for cases when 23 | body.smime-identifier (email address) can't be derived by the entity 24 | adding the corresponding Authentication-Results header field. For 25 | example this can be used when gatewaying from X.400. -------------------------------------------------------------------------------- /tests/valid/textwrap.text: -------------------------------------------------------------------------------- 1 | Here are some tests for various things which are not sentence 2 | endings, and should not be fixed up with double spaces: Some titles 3 | (which actually shouldn't all have a final dot according to some 4 | grammar rules, but nevermind...): Mr. Jones said hello to Mrs. Smith 5 | and Messrs. Costeau & Filou. We might also look at some other 6 | examples, e.g. (without the correct comma following the final dot) 7 | military titles like Lt. Anderson, and others, viz. Prof. Foo and Dr. 8 | Barbara. We have however been requested to generate end-of-sentence 9 | spacing for things like this sentence: OCB encryption protects the 10 | confidentiality of P and the authenticity of A, N, and P. This is 11 | obviously in conflict with the correct rendering of Anon Y. Name, so 12 | a workaround for that case, with   will have to be used for 13 | correct rendering. End of test. 14 | 15 | What about addresses: 192.168.20.0/16, 192.168.0.0/24, 16 | 192.168.0.0/30, and prefix length indications like /48 /56 /64 /72 17 | /80 /88 /96 and so on? These should not be broken after the forward 18 | slash. 19 | 20 | Either both or neither of body.smime-serial and body.smime-issuer 21 | should be present in an Authentication-Results header field. 22 | body.smime-serial and body.smime-issuer are used for cases when 23 | body.smime-identifier (email address) can't be derived by the entity 24 | adding the corresponding Authentication-Results header field. For 25 | example this can be used when gatewaying from X.400. -------------------------------------------------------------------------------- /tests/valid/textwrap.txt: -------------------------------------------------------------------------------- 1 | Here are some tests for various things which are not sentence 2 | endings, and should not be fixed up with double spaces: Some titles 3 | (which actually shouldn't all have a final dot according to some 4 | grammar rules, but nevermind...): Mr. Jones said hello to Mrs. Smith 5 | and Messrs. Costeau & Filou. We might also look at some other 6 | examples, e.g. (without the correct comma following the final dot) 7 | military titles like Lt. Anderson, and others, viz. Prof. Foo and Dr. 8 | Barbara. We have however been requested to generate end-of-sentence 9 | spacing for things like this sentence: OCB encryption protects the 10 | confidentiality of P and the authenticity of A, N, and P. This is 11 | obviously in conflict with the correct rendering of Anon Y. Name, so 12 | a workaround for that case, with   will have to be used for 13 | correct rendering. End of test. 14 | 15 | What about addresses: 192.168.20.0/16, 192.168.0.0/24, 16 | 192.168.0.0/30, and prefix length indications like /48 /56 /64 /72 17 | /80 /88 /96 and so on? These should not be broken after the forward 18 | slash. 19 | 20 | Either both or neither of body.smime-serial and body.smime-issuer 21 | should be present in an Authentication-Results header field. 22 | body.smime-serial and body.smime-issuer are used for cases when 23 | body.smime-identifier (email address) can't be derived by the entity 24 | adding the corresponding Authentication-Results header field. For 25 | example this can be used when gatewaying from X.400. -------------------------------------------------------------------------------- /tests/valid/top_draft.nroff: -------------------------------------------------------------------------------- 1 | 2 | .pl 10.0i 3 | .po 0 4 | .ll 7.2i 5 | .lt 7.2i 6 | .nr LL 7.2i 7 | .nr LT 7.2i 8 | .hy 0 9 | .ad l 10 | .ds LH Internet-Draft 11 | .ds CH Abbreviated Title 12 | .ds RH December 2010 13 | .ds LF Doe 14 | .ds CF Expires June 13, 2011 15 | .ds RF FORMFEED[Page %] 16 | 17 | 18 | 19 | .nf 20 | Network Working Group J. Doe, Ed. 21 | Internet-Draft Company 22 | Intended status: Informational December 10, 2010 23 | Expires: June 13, 2011 24 | .fi 25 | -------------------------------------------------------------------------------- /tests/valid/top_draft.txt: -------------------------------------------------------------------------------- 1 | 2 | Network Working Group J. Doe, Ed. 3 | Internet-Draft Company 4 | Intended status: Informational J. Roe 5 | Expires: June 13, 2011 6 | D. Doe 7 | 8 | P. Coe 9 | Q. Coe 10 | Company 11 | December 10, 2010 12 | -------------------------------------------------------------------------------- /tests/valid/top_rfc.nroff: -------------------------------------------------------------------------------- 1 | 2 | .pl 10.0i 3 | .po 0 4 | .ll 7.2i 5 | .lt 7.2i 6 | .nr LL 7.2i 7 | .nr LT 7.2i 8 | .hy 0 9 | .ad l 10 | .ds LH RFC 9999 11 | .ds CH Abbreviated Title 12 | .ds RH December 2010 13 | .ds LF Doe 14 | .ds CF Best Current Practice 15 | .ds RF FORMFEED[Page %] 16 | 17 | 18 | 19 | .nf 20 | Internet Engineering Task Force (IETF) J. Doe, Ed. 21 | Request for Comments: 9999 Company 22 | BCP: 999 December 10, 2010 23 | Obsoletes: 1111 24 | Category: Best Current Practice 25 | ISSN: 2070-1721 26 | .fi 27 | -------------------------------------------------------------------------------- /tests/valid/top_rfc.txt: -------------------------------------------------------------------------------- 1 | 2 | Internet Engineering Task Force (IETF) J. Doe, Ed. 3 | Request for Comments: 9999 Company 4 | BCP: 999 December 10, 2010 5 | Obsoletes: 1111, 2222, 3333, 4444, 5555, 6 | 6666 7 | Category: Best Current Practice 8 | ISSN: 2070-1721 9 | -------------------------------------------------------------------------------- /tests/valid/unicode.exp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Put Your Internet Draft Title 6 | 7 | Company 8 |
9 | 10 | 11 | Springfield 12 | IL 13 | US 14 | 15 | jdoe@example.com 16 |
17 |
18 | 19 | 20 | Insert an abstract: MANDATORY. This template is for creating an 21 | Internet-Draft. With some out of scope characters 22 | in Chinese, by Xing Xing, 这里是中文译本 23 | 24 | 25 |
26 | 27 |
28 | 29 | Text body needs to deal with funny characters 30 | 31 | 32 | Strange white space character (tab) xxx 33 | 34 | 35 | Pure out of scope 这里是中文译本 36 | 37 | 38 | Some re-mapped characters are ¢ or © 39 | 40 | 41 | More re-mapped characters are ˜ and € and ^ 42 | 43 |
44 |
45 |
46 | -------------------------------------------------------------------------------- /tests/valid/unicode.raw.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Network Working Group J. Doe, Ed. 7 | Internet-Draft Company 8 | Intended status: Informational December 10, 2010 9 | Expires: June 13, 2011 10 | 11 | 12 | Put Your Internet Draft Title 13 | draft-sample-input-00 14 | 15 | Abstract 16 | 17 | Insert an abstract: MANDATORY. This template is for creating an 18 | Internet-Draft. With some out of scope characters in Chinese, by 19 | Xing Xing, 这里是中文译本 20 | 21 | Status of This Memo 22 | 23 | This Internet-Draft is submitted in full conformance with the 24 | provisions of BCP 78 and BCP 79. 25 | 26 | Internet-Drafts are working documents of the Internet Engineering 27 | Task Force (IETF). Note that other groups may also distribute 28 | working documents as Internet-Drafts. The list of current Internet- 29 | Drafts is at http://datatracker.ietf.org/drafts/current/. 30 | 31 | Internet-Drafts are draft documents valid for a maximum of six months 32 | and may be updated, replaced, or obsoleted by other documents at any 33 | time. It is inappropriate to use Internet-Drafts as reference 34 | material or to cite them other than as "work in progress." 35 | 36 | This Internet-Draft will expire on June 13, 2011. 37 | 38 | Copyright Notice 39 | 40 | Copyright (c) 2010 IETF Trust and the persons identified as the 41 | document authors. All rights reserved. 42 | 43 | This document is subject to BCP 78 and the IETF Trust's Legal 44 | Provisions Relating to IETF Documents 45 | (http://trustee.ietf.org/license-info) in effect on the date of 46 | publication of this document. Please review these documents 47 | carefully, as they describe your rights and restrictions with respect 48 | to this document. Code Components extracted from this document must 49 | include Simplified BSD License text as described in Section 4.e of 50 | the Trust Legal Provisions and are provided without warranty as 51 | described in the Simplified BSD License. 52 | 53 | 1. Some unicode strings 54 | 55 | Text body needs to deal with funny characters 56 | 57 | Strange white space character (tab) xxx 58 | 59 | Pure out of scope 60 | 这里是中文译本 61 | 62 | Some re-mapped characters are [cents] or (C) 63 | 64 | More re-mapped characters are ~ and EUR and ^ 65 | 66 | Author's Address 67 | 68 | John Doe (editor) 69 | Company 70 | Springfield, IL 71 | US 72 | 73 | Email: jdoe@example.com 74 | 75 | -------------------------------------------------------------------------------- /tests/valid/unicode.text: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Network Working Group J. Doe, Ed. 7 | Internet-Draft Company 8 | Intended status: Informational December 10, 2010 9 | Expires: June 13, 2011 10 | 11 | 12 | Put Your Internet Draft Title 13 | draft-sample-input-00 14 | 15 | Abstract 16 | 17 | Insert an abstract: MANDATORY. This template is for creating an 18 | Internet-Draft. With some out of scope characters in Chinese, by 19 | Xing Xing, 这里是中文译本 20 | 21 | Status of This Memo 22 | 23 | This Internet-Draft is submitted in full conformance with the 24 | provisions of BCP 78 and BCP 79. 25 | 26 | Internet-Drafts are working documents of the Internet Engineering 27 | Task Force (IETF). Note that other groups may also distribute 28 | working documents as Internet-Drafts. The list of current Internet- 29 | Drafts is at http://datatracker.ietf.org/drafts/current/. 30 | 31 | Internet-Drafts are draft documents valid for a maximum of six months 32 | and may be updated, replaced, or obsoleted by other documents at any 33 | time. It is inappropriate to use Internet-Drafts as reference 34 | material or to cite them other than as "work in progress." 35 | 36 | This Internet-Draft will expire on June 13, 2011. 37 | 38 | Copyright Notice 39 | 40 | Copyright (c) 2010 IETF Trust and the persons identified as the 41 | document authors. All rights reserved. 42 | 43 | This document is subject to BCP 78 and the IETF Trust's Legal 44 | Provisions Relating to IETF Documents 45 | (http://trustee.ietf.org/license-info) in effect on the date of 46 | publication of this document. Please review these documents 47 | carefully, as they describe your rights and restrictions with respect 48 | to this document. Code Components extracted from this document must 49 | include Simplified BSD License text as described in Section 4.e of 50 | the Trust Legal Provisions and are provided without warranty as 51 | described in the Simplified BSD License. 52 | 53 | 1. Some unicode strings 54 | 55 | Text body needs to deal with funny characters 56 | 57 | Strange white space character (tab) xxx 58 | 59 | Pure out of scope 60 | 这里是中文译本 61 | 62 | Some re-mapped characters are [cents] or (C) 63 | 64 | More re-mapped characters are ~ and EUR and ^ 65 | 66 | Author's Address 67 | 68 | John Doe (editor) 69 | Company 70 | Springfield, IL 71 | US 72 | 73 | Email: jdoe@example.com 74 | 75 | -------------------------------------------------------------------------------- /tests/valid/unicode.v2v3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Put Your Internet Draft Title 6 | 7 | 8 | Company 9 |
10 | 11 | 12 | Springfield 13 | IL 14 | US 15 | 16 | jdoe@example.com 17 |
18 |
19 | 20 | 21 | Insert an abstract: MANDATORY. This template is for creating an 22 | Internet-Draft. With some out of scope characters 23 | in Chinese, by Xing Xing, 这里是中文译本 24 | 25 | 26 |
27 | 28 |
29 | Some unicode strings 30 | 31 | Text body needs to deal with funny characters 32 | 33 | 34 | Strange white space character (tab) xxx 35 | 36 | 37 | Pure out of scope 这里是中文译本 38 | 39 | 40 | Some re-mapped characters are ¢ or © 41 | 42 | 43 | More re-mapped characters are ˜ and € and ^ 44 | 45 |
46 |
47 |
48 | -------------------------------------------------------------------------------- /tests/valid/utf8.exp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Put Your Internet Draft Title 7 | 8 | 9 | Company 10 | 11 |
12 | 13 | 14 | Springfield 15 | IL 16 | US 17 | 18 | 19 | jdoe@example.com 20 |
21 |
22 | 23 | 24 | 25 | 26 | Insert an abstract: MANDATORY. This template is for creating an 27 | Internet-Draft. With some out of scope characters 28 | in Chinese, by Xing Xing, 这里是中文译本 29 | 30 | 31 |
32 | 33 | 34 |
35 | 36 | Text body needs to deal with ‘funny’ characters 37 | 38 | 39 | Pure out of scope 这里是中文译本 40 | 41 | 42 | Some re-mapped characters are ¢ or © 43 | 44 | 45 | More re-mapped characters are ˜ and € and ^ 46 | 47 |
48 |
49 |
50 | -------------------------------------------------------------------------------- /tests/valid/utf8.raw.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Network Working Group J. Doe, Ed. 7 | Internet-Draft Company 8 | Intended status: Informational December 10, 2010 9 | Expires: June 13, 2011 10 | 11 | 12 | Put Your Internet Draft Title 13 | draft-sample-input-00 14 | 15 | Abstract 16 | 17 | Insert an abstract: MANDATORY. This template is for creating an 18 | Internet-Draft. With some out of scope characters in Chinese, by 19 | Xing Xing, 这里是中文译本 20 | 21 | Status of This Memo 22 | 23 | This Internet-Draft is submitted in full conformance with the 24 | provisions of BCP 78 and BCP 79. 25 | 26 | Internet-Drafts are working documents of the Internet Engineering 27 | Task Force (IETF). Note that other groups may also distribute 28 | working documents as Internet-Drafts. The list of current Internet- 29 | Drafts is at http://datatracker.ietf.org/drafts/current/. 30 | 31 | Internet-Drafts are draft documents valid for a maximum of six months 32 | and may be updated, replaced, or obsoleted by other documents at any 33 | time. It is inappropriate to use Internet-Drafts as reference 34 | material or to cite them other than as "work in progress." 35 | 36 | This Internet-Draft will expire on June 13, 2011. 37 | 38 | Copyright Notice 39 | 40 | Copyright (c) 2010 IETF Trust and the persons identified as the 41 | document authors. All rights reserved. 42 | 43 | This document is subject to BCP 78 and the IETF Trust's Legal 44 | Provisions Relating to IETF Documents 45 | (http://trustee.ietf.org/license-info) in effect on the date of 46 | publication of this document. Please review these documents 47 | carefully, as they describe your rights and restrictions with respect 48 | to this document. Code Components extracted from this document must 49 | include Simplified BSD License text as described in Section 4.e of 50 | the Trust Legal Provisions and are provided without warranty as 51 | described in the Simplified BSD License. 52 | 53 | 1. Some unicode strings 54 | 55 | Text body needs to deal with 'funny' characters 56 | 57 | Pure out of scope 58 | 这里是中文译本 59 | 60 | Some re-mapped characters are [cents] or (C) 61 | 62 | More re-mapped characters are ~ and EUR and ^ 63 | 64 | Author's Address 65 | 66 | John Doe (editor) 67 | Company 68 | Springfield, IL 69 | US 70 | 71 | Email: jdoe@example.com 72 | 73 | -------------------------------------------------------------------------------- /tests/valid/utf8.text: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Network Working Group J. Doe, Ed. 7 | Internet-Draft Company 8 | Intended status: Informational December 10, 2010 9 | Expires: June 13, 2011 10 | 11 | 12 | Put Your Internet Draft Title 13 | draft-sample-input-00 14 | 15 | Abstract 16 | 17 | Insert an abstract: MANDATORY. This template is for creating an 18 | Internet-Draft. With some out of scope characters in Chinese, by 19 | Xing Xing, 这里是中文译本 20 | 21 | Status of This Memo 22 | 23 | This Internet-Draft is submitted in full conformance with the 24 | provisions of BCP 78 and BCP 79. 25 | 26 | Internet-Drafts are working documents of the Internet Engineering 27 | Task Force (IETF). Note that other groups may also distribute 28 | working documents as Internet-Drafts. The list of current Internet- 29 | Drafts is at http://datatracker.ietf.org/drafts/current/. 30 | 31 | Internet-Drafts are draft documents valid for a maximum of six months 32 | and may be updated, replaced, or obsoleted by other documents at any 33 | time. It is inappropriate to use Internet-Drafts as reference 34 | material or to cite them other than as "work in progress." 35 | 36 | This Internet-Draft will expire on June 13, 2011. 37 | 38 | Copyright Notice 39 | 40 | Copyright (c) 2010 IETF Trust and the persons identified as the 41 | document authors. All rights reserved. 42 | 43 | This document is subject to BCP 78 and the IETF Trust's Legal 44 | Provisions Relating to IETF Documents 45 | (http://trustee.ietf.org/license-info) in effect on the date of 46 | publication of this document. Please review these documents 47 | carefully, as they describe your rights and restrictions with respect 48 | to this document. Code Components extracted from this document must 49 | include Simplified BSD License text as described in Section 4.e of 50 | the Trust Legal Provisions and are provided without warranty as 51 | described in the Simplified BSD License. 52 | 53 | 1. Some unicode strings 54 | 55 | Text body needs to deal with funny characters 56 | 57 | Pure out of scope 这里是中文译本 58 | 59 | Some re-mapped characters are ¢ or © 60 | 61 | More re-mapped characters are ˜ and € and ^ 62 | 63 | Author's Address 64 | 65 | John Doe (editor) 66 | Company 67 | Springfield, IL 68 | US 69 | 70 | Email: jdoe@example.com 71 | 72 | -------------------------------------------------------------------------------- /tests/valid/utf8.v2v3.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | ]> 8 | 9 | 10 | 11 | 12 | Put Your Internet Draft Title 13 | 14 | 15 | Company 16 |
17 | 18 | 19 | Springfield 20 | IL 21 | US 22 | 23 | jdoe@example.com 24 |
25 |
26 | 27 | 28 | Insert an abstract: MANDATORY. This template is for creating an 29 | Internet-Draft. With some out of scope characters 30 | in Chinese, by Xing Xing, 这里是中文译本 31 | 32 | 33 |
34 | 35 |
36 | Some unicode strings 37 | 38 | Text body needs to deal with ‘funny’ characters 39 | 40 | 41 | Pure out of scope 这里是中文译本 42 | 43 | 44 | Some re-mapped characters are ¢ or © 45 | 46 | 47 | More re-mapped characters are ˜ and € and ^ 48 | 49 |
50 |
51 |
52 | -------------------------------------------------------------------------------- /tox.ini: -------------------------------------------------------------------------------- 1 | # Tox (https://tox.testrun.org/) is a tool for running tests 2 | # in multiple virtualenvs. This configuration file will run the 3 | # test suite on all supported python versions. To use it, "pip install tox" 4 | # and then run "tox" from this directory. 5 | 6 | [tox] 7 | envlist = py{39,310,311,312,313}-{linux,macos,windows} 8 | isolated_build = True 9 | 10 | [gh-actions] 11 | python = 12 | 3.9: py39 13 | 3.10: py310 14 | 3.11: py311 15 | 3.12: py312 16 | 3.13: py313 17 | 18 | [gh-actions:env] 19 | PLATFORM = 20 | ubuntu-latest: linux 21 | macos-latest: macos 22 | windows-latest: windows 23 | 24 | [testenv] 25 | commands = 26 | python --version 27 | make {posargs} 28 | 29 | allowlist_externals = 30 | make 31 | diff 32 | groff 33 | 34 | deps = 35 | pyflakes 36 | decorator 37 | dict2xml 38 | pypdf>=4.1.0 39 | weasyprint==64.1 40 | -------------------------------------------------------------------------------- /xml2rfc/.gitignore: -------------------------------------------------------------------------------- 1 | /__pycache__ 2 | /unix.tag 3 | -------------------------------------------------------------------------------- /xml2rfc/boilerplate_id_guidelines.py: -------------------------------------------------------------------------------- 1 | # Copyright The IETF Trust 2017, All Rights Reserved 2 | # -*- coding: utf-8 -*- 3 | from __future__ import unicode_literals, print_function 4 | 5 | # The following text entries were taken from 6 | # https://www.ietf.org/ietf-ftp/1id-guidelines.txt 7 | 8 | boilerplate_draft_status_of_memo = [ 9 | """ 10 | This Internet-Draft is submitted in full conformance with the 11 | provisions of BCP 78 and BCP 79. 12 | """, 13 | """ 14 | Internet-Drafts are working documents of the Internet Engineering Task 15 | Force (IETF). Note that other groups may also distribute working 16 | documents as Internet-Drafts. The list of current Internet-Drafts is 17 | at . 18 | """, 19 | """ 20 | Internet-Drafts are draft documents valid for a maximum of six months 21 | and may be updated, replaced, or obsoleted by other documents at any 22 | time. It is inappropriate to use Internet-Drafts as reference 23 | material or to cite them other than as "work in progress." 24 | """, 25 | """ 26 | This Internet-Draft will expire on {expiration_date}. 27 | """, 28 | ] 29 | -------------------------------------------------------------------------------- /xml2rfc/data/referencegroup.rnc: -------------------------------------------------------------------------------- 1 | namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" 2 | 3 | # xml2rfc grammar 4 | 5 | referencegroup = 6 | element referencegroup { 7 | attribute xml:base { text }?, 8 | attribute xml:lang { text }?, 9 | attribute anchor { xsd:ID }, 10 | attribute derivedAnchor { text }?, 11 | attribute target { text }?, 12 | reference+ 13 | } 14 | include "reference.rnc" 15 | 16 | start |= referencegroup 17 | -------------------------------------------------------------------------------- /xml2rfc/data/xml2rfc.js: -------------------------------------------------------------------------------- 1 | const toc = document.getElementById("toc"); 2 | toc.querySelector("h2").addEventListener("click", e => { 3 | toc.classList.toggle("active"); 4 | }); 5 | toc.querySelector("nav").addEventListener("click", e => { 6 | toc.classList.remove("active"); 7 | }); 8 | -------------------------------------------------------------------------------- /xml2rfc/log.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------- 2 | # Copyright The IETF Trust 2011, All Rights Reserved 3 | # -------------------------------------------------- 4 | 5 | """ Module Singleton which handles output of warnings and errors to 6 | stdout/stderr, or alternatively to specified file paths. 7 | 8 | If warn_error is set, then any warnings submitted will raise a 9 | python exception. 10 | """ 11 | 12 | import sys 13 | 14 | quiet = False 15 | verbose = False 16 | 17 | write_out = sys.stdout 18 | write_err = sys.stderr 19 | 20 | 21 | def write_on_line(*args): 22 | """ Writes a message without ending the line, i.e. in a loading bar """ 23 | write_err.write(' '.join(args)) 24 | write_err.flush() 25 | 26 | def write(*args): 27 | """ Prints a message to write_out """ 28 | write_err.write(' '.join(args)) 29 | write_err.write('\n') 30 | 31 | def note(*args): 32 | if verbose and not quiet: 33 | write(' ', *args) 34 | 35 | def warn(*args): 36 | """ Prints a warning message unless quiet """ 37 | if not quiet: 38 | write_err.write('Warning: ' + ' '.join(args).strip()) 39 | write_err.write('\n') 40 | 41 | def error(*args): 42 | """ This is typically called after an exception was already raised. """ 43 | write_err.write('Error: ' + ' '.join(args)) 44 | write_err.write('\n') 45 | 46 | def exception(message, list): 47 | error(message) 48 | if isinstance(list, Exception): 49 | list = [ list ] 50 | for e in list: 51 | attr = dict( [ (n,str(getattr(e, n)).replace("\n"," ")) for n in dir(e) if not n.startswith("_") ] ) 52 | if attr["message"].endswith(", got "): 53 | attr["message"] += "nothing." 54 | write_err.write(" %(filename)s: Line %(line)s: %(message)s\n" % attr ) 55 | -------------------------------------------------------------------------------- /xml2rfc/scripts.py: -------------------------------------------------------------------------------- 1 | # Copyright The IETF Trust 2017, All Rights Reserved 2 | # -*- coding: utf-8 -*- 3 | from __future__ import unicode_literals, print_function 4 | 5 | import intervaltree 6 | import os 7 | from codecs import open 8 | 9 | try: 10 | import debug 11 | debug.debug = True 12 | except ImportError: 13 | pass 14 | 15 | scripts = intervaltree.IntervalTree() 16 | 17 | def init(): 18 | # Clocked to less than 0.2 seconds on a 2GHz core 08 Feb 2018 19 | fn = os.path.join(os.path.dirname(__file__), 'data', 'Scripts.txt') 20 | with open(fn, encoding='utf-8') as f: 21 | text = f.read() 22 | for line in text.splitlines(): 23 | if line.startswith('#'): 24 | continue 25 | if not line: 26 | continue 27 | line = line.strip() 28 | data, comment = line.split('#', 1) 29 | codepoints, script = data.split(';', 1) 30 | if '..' in codepoints: 31 | start, stop = [ int(x.strip(), base=16) for x in codepoints.split('..') ] 32 | scripts[start:stop+1] = script.strip() 33 | else: 34 | start = int(codepoints.strip(), base=16) 35 | scripts[start:start+1] = script.strip() 36 | 37 | def get_scripts(text): 38 | """"Return the unicode scripts used in text. 39 | 40 | Assumes that ascii characters are common in the input. 41 | Clocked to about 0.5 seconds per million characters 42 | on a 2Ghz core given input with about 60% ascii. 43 | """ 44 | scriptset = set() 45 | for i, c in enumerate(text): 46 | o = ord(c) 47 | if i < 100 or o > 127: 48 | scriptset |= scripts[o] 49 | return set([ s.data for s in scriptset ]) 50 | 51 | init() 52 | 53 | -------------------------------------------------------------------------------- /xml2rfc/strings.py: -------------------------------------------------------------------------------- 1 | # Copyright The IETF Trust 2017, All Rights Reserved 2 | # -*- coding: utf-8 -*- 3 | from __future__ import unicode_literals, print_function 4 | 5 | series_name = { 6 | 'std': 'STD', 7 | 'bcp': 'BCP', 8 | 'info': 'FYI', 9 | } 10 | 11 | category_name = { 12 | 'rfc': 'Request for Comments', 13 | 'std': 'Standards Track', 14 | 'bcp': 'Best Current Practice', 15 | 'exp': 'Experimental', 16 | 'info': 'Informational', 17 | 'historic': 'Historic', 18 | } 19 | 20 | stream_name = { 21 | 'IETF': 'Internet Engineering Task Force (IETF)', 22 | 'IAB': 'Internet Architecture Board (IAB)', 23 | 'IRTF': 'Internet Research Task Force (IRTF)', 24 | 'independent': 'Independent Submission', 25 | 'editorial': 'Editorial Stream', 26 | } 27 | -------------------------------------------------------------------------------- /xml2rfc/templates/address_card.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | $fullname $role 5 | 8 | 9 | $organization 10 | 11 | $street_spans 12 | 13 | $locality$locality_sep 14 | $region$region_sep 15 | $code 16 | 17 | $country 18 | 19 | $contact_spans 20 |
21 |
-------------------------------------------------------------------------------- /xml2rfc/uniscripts/README.md: -------------------------------------------------------------------------------- 1 | Simple Python 3 module to query Unicode UCD script metadata (see UAX #24). 2 | 3 | This module is useful for querying if a text is made of Latin characters, 4 | Arabic, hiragana, kanji (han), and so on. It works for all scripts supported 5 | by the Unicode character database. 6 | 7 | This module is dumb and slow. If you need speed, you probably want to 8 | implement your own functions. See e.g. `man pcreunicode`, `man pcrepattern` 9 | (`grep -P` supports `\p`). As of this writing, the next-generation of Python 10 | regexes, available as the pypi library `regex`, also supports `\p`. 11 | 12 | Sample usage: 13 | 14 | >>> import uniscripts 15 | >>> uniscripts.is_script('A', 'Latin') 16 | True 17 | 18 | # if you pass it a string, all characters must match 19 | >>> uniscripts.is_script('はるはあけぼの', 'Hiragana') 20 | True 21 | 22 | >>> uniscripts.is_script('はるはAkebono', 'Hiragana') 23 | False 24 | 25 | # ...but by default, it ignores 'Common' characters, such as punctuation. 26 | >>> uniscripts.is_script('はるは:あけぼの', 'Hiragana') 27 | True 28 | 29 | >>> uniscripts.is_script('中華人民共和国', 'Han') # 'Han' = kanji or hànzì 30 | True 31 | 32 | >>> uniscripts.which_scripts('z') 33 | ['Latin'] 34 | 35 | >>> uniscripts.which_scripts('は') 36 | ['Hiragana'] 37 | 38 | >>> uniscripts.which_scripts('ー') # U+30FC 39 | ['Common', 'Katakana', 'Hiragana', 'Hangul', 'Han', 'Bopomofo', 'Yi'] 40 | 41 | See docstrings for `is_script()`, `which_scripts()`. 42 | -------------------------------------------------------------------------------- /xml2rfc/uniscripts/update/make_unidata.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | Scripts='Scripts.txt' 4 | ScriptExtensions='ScriptExtensions.txt' 5 | PropertyValueAliases='PropertyValueAliases.txt' 6 | 7 | SCRIPT_ABBREVS = {} 8 | 9 | with open(PropertyValueAliases, 'r') as f: 10 | for line in f: 11 | line = line.strip() 12 | if len(line) == 0 or line[0] == '#': 13 | continue 14 | 15 | if line[0:2] != 'sc': 16 | continue 17 | 18 | if '#' in line: 19 | line = line[0 : line.index('#')] 20 | 21 | fields = line.split(';') 22 | fields = [field.strip() for field in fields] 23 | 24 | if fields[0] != 'sc': 25 | continue 26 | 27 | SCRIPT_ABBREVS[fields[1]] = fields[2] 28 | 29 | 30 | RANGES={} 31 | def parse_uni_range(range_str): 32 | '''Convert Unicode range notation to Python ranges. 33 | 34 | Single codepoints are converted to single-number ranges. That is: 35 | 36 | '0001..0003' -> range(1, 4) 37 | '0001' -> range(1, 2) 38 | ''' 39 | start_stop_strs = range_str.split('..') 40 | start = int(start_stop_strs[0], 16) 41 | 42 | if len(start_stop_strs) > 1: 43 | end = int(start_stop_strs[1], 16) 44 | else: 45 | end = start + 1 46 | 47 | char_range = range(start, end+1) 48 | return(char_range) 49 | 50 | 51 | with open(Scripts, 'r') as f: 52 | for line in f: 53 | line = line.strip() 54 | 55 | if len(line) == 0 or line[0] == '#': 56 | continue 57 | 58 | if '#' in line: 59 | line = line[0 : line.index('#')] 60 | 61 | fields = line.split(';') 62 | fields = [field.strip() for field in fields] 63 | 64 | if fields[1] not in RANGES.keys(): 65 | RANGES[fields[1]] = [] 66 | 67 | RANGES[fields[1]].append(parse_uni_range(fields[0])) 68 | 69 | with open(ScriptExtensions, 'r') as f: 70 | for line in f: 71 | line = line.strip() 72 | 73 | if len(line) == 0 or line[0] == '#': 74 | continue 75 | 76 | if '#' in line: 77 | line = line[0 : line.index('#')] 78 | 79 | fields = line.split(';') 80 | fields = [field.strip() for field in fields] 81 | 82 | char_range = parse_uni_range(fields[0]) 83 | scripts = fields[1].split() 84 | 85 | for script_shortname in scripts: 86 | longname = SCRIPT_ABBREVS[script_shortname] 87 | RANGES[longname].append(char_range) 88 | 89 | # this facilitates tests later on 90 | if 'Unknown' not in RANGES.keys(): 91 | RANGES['Unknown'] = [] 92 | 93 | print('RANGES = ' + repr(RANGES)) 94 | print('SCRIPT_ABBREVS = ' + repr(SCRIPT_ABBREVS)) 95 | -------------------------------------------------------------------------------- /xml2rfc/util/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright The IETF Trust 2017, All Rights Reserved 2 | # -*- coding: utf-8 -*- 3 | from __future__ import unicode_literals, print_function 4 | 5 | from xml2rfc.util import name, num, date, postal, file 6 | 7 | __all__ = [ 8 | "name", 9 | "num", 10 | "date", 11 | "postal", 12 | "file", 13 | ] 14 | -------------------------------------------------------------------------------- /xml2rfc/util/file.py: -------------------------------------------------------------------------------- 1 | # Copyright The IETF Trust 2025, All Rights Reserved 2 | # -*- coding: utf-8 -*- 3 | import os 4 | import re 5 | 6 | 7 | class FileAccessError(Exception): 8 | """File access error""" 9 | 10 | pass 11 | 12 | 13 | def can_access(options, source, path, access_templates=False): 14 | # templates can be always accessed 15 | template_path = os.path.abspath(os.path.join(options.template_dir, path)) 16 | if ( 17 | access_templates 18 | and template_path.startswith(options.template_dir) 19 | and os.path.exists(template_path) 20 | ): 21 | return True 22 | 23 | # user allowed access? 24 | if not options.allow_local_file_access: 25 | raise FileAccessError( 26 | f"Can not access local file: {path}. Use --allow-local-file-access enable access." 27 | ) 28 | 29 | # does it have shell meta-chars? 30 | shellmeta = re.compile("[><*[`$|;&(#]") 31 | if shellmeta.search(path): 32 | raise FileAccessError(f"Found disallowed shell meta-characters in {path}") 33 | 34 | # file is within the source dir? 35 | dir = os.path.abspath(os.path.dirname(source)) 36 | path = os.path.abspath(os.path.join(dir, path)) 37 | if not path.startswith(dir): 38 | raise FileAccessError( 39 | f"Expected a file located beside or below the .xml source (in {dir}), but found a reference to {path}" 40 | ) 41 | 42 | # does it exists? 43 | if not os.path.exists(path): 44 | raise FileAccessError(f"Expected a file at '{path}', but no such file exists") 45 | 46 | return True 47 | -------------------------------------------------------------------------------- /xml2rfc/util/fonts.py: -------------------------------------------------------------------------------- 1 | # Copyright The IETF Trust 2018, All Rights Reserved 2 | # -*- coding: utf-8 -*- 3 | from __future__ import unicode_literals, print_function, division 4 | 5 | # ---------------------------------------------------------------------- 6 | # Font operations 7 | 8 | def get_noto_serif_family_for_script(script): 9 | """ 10 | This translates from the official unicode script names to the fonts 11 | actually available in the Noto font family. The set of fonts known 12 | to have serif versions is up-to-date as of 05 Dec 2018, for the 13 | Noto font pack built on 2017-10-24, available as 14 | https://noto-website-2.storage.googleapis.com/pkgs/Noto-unhinted.zip 15 | """ 16 | fontname = { 17 | 'Latin': 'Noto Serif', 18 | 'Common': 'Noto Serif', 19 | 'Greek': 'Noto Serif', 20 | 'Cyrillic': 'Noto Serif', 21 | 'Tai_Viet': 'Noto Serif', 22 | # Script names that don't match font names 23 | 'Han': 'Noto Serif CJK SC', 24 | 'Hangul': 'Noto Serif CJK KR', 25 | 'Hiragana': 'Noto Serif CJK JP', 26 | 'Katakana': 'Noto Serif CJK JP', 27 | # Script names available in Serif 28 | 'Armenian': 'Noto Serif Armenian', 29 | 'Bengali': 'Noto Serif Bengali', 30 | 'Devanagari':'Noto Serif Devanagari', 31 | 'Display': 'Noto Serif Display', 32 | 'Ethiopic': 'Noto Serif Ethiopic', 33 | 'Georgian': 'Noto Serif Georgian', 34 | 'Gujarati': 'Noto Serif Gujarati', 35 | 'Hebrew': 'Noto Serif Hebrew', 36 | 'Kannada': 'Noto Serif Kannada', 37 | 'Khmer': 'Noto Serif Khmer', 38 | 'Lao': 'Noto Serif Lao', 39 | 'Malayalam':'Noto Serif Malayalam', 40 | 'Myanmar': 'Noto Serif Myanmar', 41 | 'Sinhala': 'Noto Serif Sinhala', 42 | 'Tamil': 'Noto Serif Tamil', 43 | 'Telugu': 'Noto Serif Telugu', 44 | 'Thai': 'Noto Serif Thai', 45 | # Other names may be available in Sans 46 | } 47 | if script in fontname: 48 | family = "%s" % fontname[script] 49 | else: 50 | script = script.replace('_', ' ') 51 | family = "Noto Sans %s" % script 52 | return family 53 | -------------------------------------------------------------------------------- /xml2rfc/writers/.gitignore: -------------------------------------------------------------------------------- 1 | /__pycache__ 2 | -------------------------------------------------------------------------------- /xml2rfc/writers/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | from xml2rfc.writers.base import RfcWriterError 3 | from xml2rfc.writers.base import BaseRfcWriter 4 | from xml2rfc.writers.raw_txt import RawTextRfcWriter 5 | from xml2rfc.writers.paginated_txt import PaginatedTextRfcWriter 6 | from xml2rfc.writers.legacy_html import HtmlRfcWriter 7 | from xml2rfc.writers.nroff import NroffRfcWriter 8 | from xml2rfc.writers.expanded_xml import ExpandedXmlWriter 9 | from xml2rfc.writers.v2v3 import V2v3XmlWriter 10 | from xml2rfc.writers.preptool import PrepToolWriter 11 | from xml2rfc.writers.text import TextWriter 12 | from xml2rfc.writers.html import HtmlWriter 13 | from xml2rfc.writers.expand import ExpandV3XmlWriter 14 | from xml2rfc.writers.pdf import PdfWriter 15 | from xml2rfc.writers.unprep import UnPrepWriter 16 | from xml2rfc.writers.doc import DocWriter 17 | from xml2rfc.writers.bib import DatatrackerToBibConverter 18 | 19 | # This defines what 'from xml2rfc.writers import *' actually imports: 20 | __all__ = ['BaseRfcWriter', 'RawTextRfcWriter', 'PaginatedTextRfcWriter', 21 | 'HtmlRfcWriter', 'NroffRfcWriter', 'ExpandedXmlWriter', 22 | 'RfcWriterError', 'V2v3XmlWriter', 'PrepToolWriter', 'TextWriter', 23 | 'HtmlWriter', 'PdfWriter', 'ExpandV3XmlWriter', 'UnPrepWriter', 24 | 'DocWriter', 'DatatrackerToBibConverter', 25 | ] 26 | -------------------------------------------------------------------------------- /xml2rfc/writers/bib.py: -------------------------------------------------------------------------------- 1 | # Copyright The IETF Trust 2024, All Rights Reserved 2 | # -*- coding: utf-8 -*- 3 | from __future__ import unicode_literals, print_function, division 4 | 5 | from io import open 6 | from lxml import etree 7 | from urllib.parse import urlparse 8 | 9 | from xml2rfc.writers.preptool import PrepToolWriter 10 | 11 | 12 | class DatatrackerToBibConverter(PrepToolWriter): 13 | """Writes a duplicate XML file but with datratracker references replaced with bib.ietf.org""" 14 | 15 | def write(self, filename): 16 | """Public method to write the XML document to a file""" 17 | self.convert() 18 | with open(filename, "w", encoding="utf-8") as file: 19 | text = etree.tostring(self.tree, encoding="unicode") 20 | file.write("\n") 21 | file.write(text) 22 | if not self.options.quiet: 23 | self.log(" Created file %s" % filename) 24 | 25 | def convert(self): 26 | version = self.root.get("version", "3") 27 | if version not in [ 28 | "3", 29 | ]: 30 | self.die(self.root, 'Expected version="3", but found "%s"' % version) 31 | self.convert_xincludes() 32 | 33 | def convert_xincludes(self): 34 | ns = {"xi": b"http://www.w3.org/2001/XInclude"} 35 | xincludes = self.root.xpath("//xi:include", namespaces=ns) 36 | for xinclude in xincludes: 37 | href = urlparse(xinclude.get("href")) 38 | 39 | if href.netloc == "datatracker.ietf.org": 40 | reference_file = href.path.split("/")[-1] 41 | xinclude.set( 42 | "href", f"https://bib.ietf.org/public/rfc/bibxml-ids/{reference_file}" 43 | ) 44 | -------------------------------------------------------------------------------- /xml2rfc/writers/expand.py: -------------------------------------------------------------------------------- 1 | # Copyright The IETF Trust 2018, All Rights Reserved 2 | # -*- coding: utf-8 -*- 3 | from __future__ import unicode_literals, print_function, division 4 | 5 | from io import open 6 | from lxml import etree 7 | 8 | from xml2rfc.writers.preptool import PrepToolWriter 9 | 10 | class ExpandV3XmlWriter(PrepToolWriter): 11 | """ Writes a duplicate XML file but with all includes expanded """ 12 | 13 | # Note -- we don't need to subclass BaseRfcWriter because the behavior 14 | # is so different and so trivial 15 | 16 | def write(self, filename): 17 | """ Public method to write the XML document to a file """ 18 | self.expand() 19 | with open(filename, 'w', encoding='utf-8') as file: 20 | # Use lxml's built-in serialization 21 | text = etree.tostring(self.tree, 22 | encoding='unicode', 23 | doctype='', 24 | pretty_print=True) 25 | 26 | # Use entities for some selected unicode code points, for later 27 | # editing readability and convenience 28 | text = text.replace(u'\u00A0', u' ') 29 | text = text.replace(u'\u200B', u'&zwsp;') 30 | text = text.replace(u'\u2011', u'&nbhy;') 31 | text = text.replace(u'\u2028', u'&br;') 32 | text = text.replace(u'\u2060', u'&wj;') 33 | 34 | file.write(u"\n") 35 | file.write(text) 36 | if not self.options.quiet: 37 | self.log(' Created file %s' % filename) 38 | 39 | def expand(self): 40 | version = self.root.get('version', '3') 41 | if version not in ['3', ]: 42 | self.die(self.root, 'Expected version="3", but found "%s"' % version) 43 | self.xinclude() 44 | self.dispatch(self.selectors) 45 | 46 | selectors = [ 47 | './/artwork', 48 | './/sourcecode', 49 | '.;pretty_print_prep()', 50 | ] 51 | 52 | -------------------------------------------------------------------------------- /xml2rfc/writers/expanded_xml.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------- 2 | # Copyright The IETF Trust 2011, All Rights Reserved 3 | # -------------------------------------------------- 4 | 5 | import lxml.etree 6 | import xml2rfc 7 | from io import open 8 | from xml2rfc.writers.base import default_options 9 | 10 | class ExpandedXmlWriter: 11 | """ Writes a duplicate XML file but with all references expanded """ 12 | 13 | # Note -- we don't need to subclass BaseRfcWriter because the behavior 14 | # is so different and so trivial 15 | 16 | def __init__(self, xmlrfc, quiet=None, options=default_options, date=None): 17 | if not quiet is None: 18 | options.quiet = quiet 19 | self.root = xmlrfc.getroot() 20 | self.options = options 21 | 22 | def post_process_lines(self, lines): 23 | output = [ line.replace(u'\u00A0', ' ') for line in lines ] 24 | return output 25 | 26 | def write(self, filename): 27 | """ Public method to write the XML document to a file """ 28 | 29 | with open(filename, 'w', encoding='ascii') as file: 30 | # Use lxml's built-in serialization 31 | text = lxml.etree.tostring(self.root.getroottree(), 32 | xml_declaration=True, 33 | encoding='ascii', 34 | doctype='', 35 | pretty_print=True) 36 | file.write(text.decode('ascii')) 37 | 38 | if not self.options.quiet: 39 | xml2rfc.log.write(' Created file', filename) 40 | --------------------------------------------------------------------------------