Giter VIP home page Giter VIP logo

nuttx-website's Introduction

How to update the project's web site

Running locally

Before opening a pull request, you can preview your contributions by running from within the directory:

export GEM_HOME=$HOME/.gem # Adjust this path as you want
export PATH=$PATH:$GEM_HOME/bin
bundle exec jekyll serve
Open [http://localhost:4000](http://localhost:4000)

Note: The Gemfile.lock may contain some platform specific pins you may want to regenerate this by deleting Gemfile.lock and running bundle update. This is currently locked for x86_64-linux, darwin, and freebsd by using the bundle lock --add-platform foo command.

Pushing to site

Site is updated by a CI job that runs the publish.sh script. Once this runs it the results will be visible here.

Force Deployment

If a dependency has changed such as the external documentation you may need to force the deployment CI to run. This can be done from the CI Actions tab and selecting Run workflow -> Branch: master --> Run workflow

Trigger Workflow

Adding contributors

To add a contributor to the project, or to modify existing contributors, edit site/_data/contributors.yml. The project members list will re-generate.

nuttx-website's People

Contributors

acassis avatar btashton avatar cederom avatar davids5 avatar dependabot[bot] avatar guidingli avatar hartmannathan avatar huahang avatar jbampton avatar jerpelea avatar julianhyde avatar justinmclean avatar liuguo09 avatar lresende avatar lupyuen avatar ouss4 avatar protobits avatar stain avatar tmedicci avatar wei-1 avatar xiaoxiang781216 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nuttx-website's Issues

run sphinx for each release branch/tag

Documentation should be built for each release branch/tag into a subdirectory of the web root with a name identifying the release. Depending on how we want to pass the set of documentation versions to the sphinx build (so they are accessible as links from the sidebar), each job should also receive, via an environment variable, the list of release names we want to offer. This way, each build can generate links to all other versions.

_sass/_base.scss: use of obsolete .slash() function.

While building the local preview of the website jekyll serve complains about invalid use of .slash() function. Some remarks on removing .slash() here jekyll/minima#709.

Using:

  • clean Gemfile.lock.
  • rubygem-jekyll-4.3.2_1 system package.
  • rubygem-jekyll-sass-converter-2.2.0 system package.
  • rubygem-jekyll-feed-0.17.0 system package.
  • FreeBSD 13.2-RELEASE AMD64.

Detailed output below:

% bundle exec jekyll serve
Configuration file: /XXX/nuttx-website.git/_config.yml
            Source: /XXX/nuttx-website.git
       Destination: /XXX/nuttx-website.git/target
 Incremental build: disabled. Enable with --incremental
      Generating...
     Build Warning: Layout 'news_item' requested in _posts/2019-12-19-hello.md does not exist.
  Conversion error: Jekyll::Converters::Scss encountered an error while converting 'css/main.scss':
                    Error: Invalid CSS after "...ont-weight list": expected expression (e.g. 1px, bold), was ".slash($base-font-s" on line 19:33 of _sass/_base.scss from line 46:1 of main.scss >> font: $base-font-weight list.slash($base-font-size, $base-line-height) $ --------------------------------^
                    ------------------------------------------------
      Jekyll 4.3.2   Please append `--trace` to the `serve` command
                     for any additional information or backtrace.
                    ------------------------------------------------
/usr/local/lib/ruby/gems/3.1/gems/jekyll-sass-converter-2.2.0/lib/jekyll/converters/scss.rb:200:in `rescue in sass_convert': Error: Invalid CSS after "...ont-weight list": expected expression (e.g. 1px, bold), was ".slash($base-font-s" (Jekyll::Converters::Scss::SyntaxError)
        on line 19:33 of _sass/_base.scss
        from line 46:1 of main.scss
>>     font: $base-font-weight list.slash($base-font-size, $base-line-height) $
   --------------------------------^
        from /usr/local/lib/ruby/gems/3.1/gems/jekyll-sass-converter-2.2.0/lib/jekyll/converters/scss.rb:192:in `sass_convert'
        from /usr/local/lib/ruby/gems/3.1/gems/jekyll-sass-converter-2.2.0/lib/jekyll/converters/scss.rb:186:in `convert'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/renderer.rb:105:in `block in convert'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/renderer.rb:104:in `each'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/renderer.rb:104:in `reduce'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/renderer.rb:104:in `convert'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/renderer.rb:84:in `render_document'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/renderer.rb:63:in `run'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/site.rb:572:in `render_regenerated'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/site.rb:564:in `block in render_pages'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/site.rb:563:in `each'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/site.rb:563:in `render_pages'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/site.rb:211:in `render'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/site.rb:80:in `process'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/command.rb:28:in `process_site'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/commands/build.rb:65:in `build'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/commands/build.rb:36:in `process'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/command.rb:91:in `block in process_with_graceful_fail'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/command.rb:91:in `each'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/command.rb:91:in `process_with_graceful_fail'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/commands/serve.rb:86:in `block (2 levels) in init_with_program'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `block in execute'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `each'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `execute'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/mercenary-0.4.0/lib/mercenary/program.rb:44:in `go'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/mercenary-0.4.0/lib/mercenary.rb:21:in `program'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/exe/jekyll:15:in `<top (required)>'
        from /usr/local/bin/jekyll:25:in `load'
        from /usr/local/bin/jekyll:25:in `<top (required)>'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/cli/exec.rb:58:in `load'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/cli/exec.rb:58:in `kernel_load'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/cli/exec.rb:23:in `run'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/cli.rb:492:in `exec'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/cli.rb:34:in `dispatch'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/cli.rb:28:in `start'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/exe/bundle:37:in `block in <top (required)>'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/exe/bundle:29:in `<top (required)>'
        from /usr/local/bin/bundle:25:in `load'
        from /usr/local/bin/bundle:25:in `<main>'
/zraid/data/cederom/work/CeDeROM/lab/embedded/nuttx/nuttx-website.git/_sass/_base.scss:19: Error: Invalid CSS after "...ont-weight list": expected expression (e.g. 1px, bold), was ".slash($base-font-s" (SassC::SyntaxError)
        on line 19:33 of _sass/_base.scss
        from line 46:1 of main.scss
>>     font: $base-font-weight list.slash($base-font-size, $base-line-height) $
   --------------------------------^
        from /usr/local/lib/ruby/gems/3.1/gems/sassc-2.4.0/lib/sassc/engine.rb:50:in `render'
        from /usr/local/lib/ruby/gems/3.1/gems/jekyll-sass-converter-2.2.0/lib/jekyll/converters/scss.rb:195:in `sass_convert'
        from /usr/local/lib/ruby/gems/3.1/gems/jekyll-sass-converter-2.2.0/lib/jekyll/converters/scss.rb:186:in `convert'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/renderer.rb:105:in `block in convert'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/renderer.rb:104:in `each'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/renderer.rb:104:in `reduce'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/renderer.rb:104:in `convert'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/renderer.rb:84:in `render_document'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/renderer.rb:63:in `run'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/site.rb:572:in `render_regenerated'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/site.rb:564:in `block in render_pages'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/site.rb:563:in `each'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/site.rb:563:in `render_pages'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/site.rb:211:in `render'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/site.rb:80:in `process'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/command.rb:28:in `process_site'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/commands/build.rb:65:in `build'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/commands/build.rb:36:in `process'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/command.rb:91:in `block in process_with_graceful_fail'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/command.rb:91:in `each'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/command.rb:91:in `process_with_graceful_fail'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/lib/jekyll/commands/serve.rb:86:in `block (2 levels) in init_with_program'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `block in execute'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `each'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `execute'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/mercenary-0.4.0/lib/mercenary/program.rb:44:in `go'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/mercenary-0.4.0/lib/mercenary.rb:21:in `program'
        from /usr/home/cederom/.local/share/gem/ruby/3.1/gems/jekyll-4.3.2/exe/jekyll:15:in `<top (required)>'
        from /usr/local/bin/jekyll:25:in `load'
        from /usr/local/bin/jekyll:25:in `<top (required)>'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/cli/exec.rb:58:in `load'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/cli/exec.rb:58:in `kernel_load'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/cli/exec.rb:23:in `run'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/cli.rb:492:in `exec'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/cli.rb:34:in `dispatch'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/cli.rb:28:in `start'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/exe/bundle:37:in `block in <top (required)>'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
        from /usr/local/lib/ruby/gems/3.1/gems/bundler-2.4.20/exe/bundle:29:in `<top (required)>'
        from /usr/local/bin/bundle:25:in `load'
        from /usr/local/bin/bundle:25:in `<main>'

local build / sass-embedded (1.71.0) install problem on FreeBSD

Hey there @btashton :-)

I have problem building local preview of the website on FreeBSD 13.2 - cannot install sass-embedded (1.71.0). Would it be possible to resolve / update version conflicts please? :-)

% uname -a
FreeBSD octagon 13.2-RELEASE-p10 FreeBSD 13.2-RELEASE-p10 GENERIC amd64

I am following instructions from README:

export GEM_HOME=$HOME/.gem # Adjust this path as you want
export PATH=$PATH:$GEM_HOME/bin
bundle exec jekyll serve

Result is:

% bundle exec jekyll serve
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
Could not find jekyll-4.3.2 in any of the sources
Run `bundle install` to install missing gems.

then:

% bundle install
Calling `DidYouMean::SPELL_CHECKERS.merge!(error_name => spell_checker)' has been deprecated. Please call `DidYouMean.correct_error(error_name, spell_checker)' instead.
Fetching gem metadata from https://rubygems.org/
Fetching gem metadata from https://rubygems.org/...........
Using rake 13.0.6
Using public_suffix 5.0.1
Using bundler 2.2.22
Using rb-fsevent 0.11.2
Using concurrent-ruby 1.2.2
Using rexml 3.2.5
Using mercenary 0.4.0
Using ffi 1.15.5
Using safe_yaml 1.0.5
Using google-protobuf 3.23.0
Using colorator 1.1.0
Using webrick 1.8.1
Using i18n 1.13.0
Using http_parser.rb 0.8.0
Using rouge 4.1.0
Using forwardable-extended 2.6.0
Using kramdown 2.4.0
Using rb-inotify 0.10.1
Using unicode-display_width 2.4.2
Using liquid 4.0.4
Using addressable 2.8.4
Using eventmachine 1.2.7
Using listen 3.8.0
Using em-websocket 0.5.3
Using kramdown-parser-gfm 1.1.0
Using terminal-table 3.0.2
Fetching sass-embedded 1.62.1
Using pathutil 0.16.2
Using jekyll-watch 2.2.1
Installing sass-embedded 1.62.1 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /usr/home/cederom/.local/share/gem/ruby/3.1/ruby/3.1/gems/sass-embedded-1.62.1/ext/sass
/usr/local/bin/ruby31 -rrubygems /usr/home/cederom/.local/share/gem/ruby/3.1/ruby/3.1/gems/rake-13.1.0/exe/rake
RUBYARCHDIR\=/usr/home/cederom/.local/share/gem/ruby/3.1/ruby/3.1/extensions/amd64-freebsd-13/3.1/sass-embedded-1.62.1
RUBYLIBDIR\=/usr/home/cederom/.local/share/gem/ruby/3.1/ruby/3.1/extensions/amd64-freebsd-13/3.1/sass-embedded-1.62.1
rake aborted!
NotImplementedError: sass_embedded for x86_64-freebsd13 not available at
https://github.com/sass/dart-sass-embedded/releases/tag/1.62.1
/usr/home/cederom/.local/share/gem/ruby/3.1/ruby/3.1/gems/sass-embedded-1.62.1/ext/sass/Rakefile:249:in
`default_sass_embedded'
/usr/home/cederom/.local/share/gem/ruby/3.1/ruby/3.1/gems/sass-embedded-1.62.1/ext/sass/Rakefile:21:in `block (2
levels) in <top (required)>'
/usr/home/cederom/.local/share/gem/ruby/3.1/ruby/3.1/gems/sass-embedded-1.62.1/ext/sass/Rakefile:21:in `fetch'
/usr/home/cederom/.local/share/gem/ruby/3.1/ruby/3.1/gems/sass-embedded-1.62.1/ext/sass/Rakefile:21:in `block in <top
(required)>'
/usr/home/cederom/.local/share/gem/ruby/3.1/ruby/3.1/gems/rake-13.1.0/exe/rake:27:in `<main>'
Tasks: TOP => default => install => embedded.rb => sass_embedded
(See full trace by running task with --trace)

rake failed, exit code 1

Gem files will remain installed in /usr/home/cederom/.local/share/gem/ruby/3.1/ruby/3.1/gems/sass-embedded-1.62.1 for
inspection.
Results logged to
/usr/home/cederom/.local/share/gem/ruby/3.1/ruby/3.1/extensions/amd64-freebsd-13/3.1/sass-embedded-1.62.1/gem_make.out

An error occurred while installing sass-embedded (1.62.1), and Bundler cannot continue.
Make sure that `gem install sass-embedded -v '1.62.1' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  jekyll-feed was resolved to 0.17.0, which depends on
    jekyll was resolved to 4.3.2, which depends on
      jekyll-sass-converter was resolved to 3.0.0, which depends on
        sass-embedded

Website has "incubator" in URLs for mail list archives

The Community web page has URLs for the mailing list that includes "incubator" but these do not work.
An example is the subscribe, unsubscribe, and archive links for the dev list.

[email protected] is for people who want to contribute code to NuttX. subscribe, unsubscribe, archives
[email protected] is for commit messages and patches to NuttX. subscribe, unsubscribe, archives

Each of the links should be @nuttx.apache.org instead of @nuttx.incubator.apache.org.

Cheers,
Merlin.

scheduled CI gets eventually disabled

I realized the doc website wasn't being updated and found this on this repo:

image

It seems that we can't really rely on this to keep docs up to date. I know the correct solution is to get a token for the repo and trigger the build from the main site, however infra didn't move on this despite our repeated requests. I'm not sure how to solve this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.