Merge branch 'next'

This commit is contained in:
Jim Derry 2021-07-10 16:53:56 -04:00
commit dfad115417
1496 changed files with 37336 additions and 1096 deletions

101
.github/workflows/build_and_test.yml vendored Normal file
View file

@ -0,0 +1,101 @@
################################################################################
# Build and Test tidy on the latest versions of all of the major platforms.
#
# - Build on multiple operating systems, and where possible, multiple
# architectures. On Windows, we will also build and test MingGW in
# addition to MSVC.
#
# - Report the version number for each binary that is built.
#
# - Run each binary against the regression test suite.
#
################################################################################
name: Build and Test
on:
push:
paths:
- 'src/**'
- 'include/**'
- '.github/workflows/**'
pull_request:
paths:
- 'src/**'
- 'include/**'
- '.github/workflows/**'
jobs:
build_and_test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
flags:
vers_command: "./tidy --version"
test_command: "ruby test.rb test"
- os: macOS-latest
flags: "'-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64'"
vers_command: "./tidy --version"
test_command: "ruby test.rb test"
- os: windows-latest
flags:
vers_command: "./tidy.exe --version"
test_command: "ruby test.rb test"
- os: windows-2016
flags: "-G 'MinGW Makefiles'"
vers_command: "./tidy --version"
test_command: "ruby test.rb test"
steps:
- uses: actions/checkout@v2
# We'll use the windows-2016 instance to perform a MinGW build.
# Of course, we only want to install if this is the correct target.
- name: Install MinGW-w64
if: ${{matrix.os == 'windows-2016'}}
uses: egor-tensin/setup-mingw@v2
with:
platform: x64
- name: Build
working-directory: ${{github.workspace}}/build/cmake
run: cmake ../.. -DCMAKE_BUILD_TYPE=Release ${{matrix.flags}}
- name: Make
working-directory: ${{github.workspace}}/build/cmake
run: cmake --build . --config Release
# Windows MSVC is the only oddball here; why does it install the
# binary into a subfolder, unlike all of the other builds? Let's
# make everything else easier by relocating it to the same spot
# as all the other build locations.
- name: Move the exe to someplace sensible
if: ${{matrix.os == 'windows-latest'}}
run: move-item -path "${{github.workspace}}/build/cmake/Release/tidy.exe" -destination "${{github.workspace}}/build/cmake/"
- name: Show Version
working-directory: ${{github.workspace}}/build/cmake
run: ${{matrix.vers_command}}
- uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7
bundler-cache: true
- name: Bundle Install
working-directory: ${{github.workspace}}/regression_testing
run: bundle install
- name: Run Regression Test
working-directory: ${{github.workspace}}/regression_testing
run: ${{matrix.test_command}}

1
.gitignore vendored
View file

@ -16,3 +16,4 @@ temp*
.DS_Store
.idea
*.old
/regression_testing/cases/*-results/

View file

@ -54,6 +54,7 @@ if (LIBTIDY_VERSION)
list(GET VERSION_LIST 0 TIDY_MAJOR_VERSION)
list(GET VERSION_LIST 1 TIDY_MINOR_VERSION)
list(GET VERSION_LIST 2 TIDY_POINT_VERSION)
set(TIDY_SO_VERSION "${TIDY_MAJOR_VERSION}${TIDY_MINOR_VERSION}")
else ()
message(FATAL_ERROR "*** FAILED to get a VERSION from version.txt!")
endif ()
@ -68,6 +69,21 @@ else ()
message(FATAL_ERROR "*** FAILED to get a DATE from version.txt!")
endif ()
# Establish SOVERSION. Tidy uses a weird form of semantic versioning,
# wherein even minor versions are stable versions with SONAMEs, and
# odd minor versions are `next` versions that should NOT be released,
# are NOT stable, and should NOT have a valid SONAME.
if (TIDY_SO_VERSION)
math(EXPR NO_SONAME "${TIDY_SO_VERSION} % 2")
if ( NO_SONAME EQUAL 0)
message("-> TIDY_SO_VERSION = ${TIDY_SO_VERSION}. This is an EVEN (stable) release.")
else ()
message("-> TIDY_SO_VERSION = ${TIDY_SO_VERSION}. This is an ODD (development) release.")
endif ()
else ()
message(FATAL_ERROR "*** FAILED to build a TIDY_SO_VERSION!")
endif ()
#------------------------------------------------------------------------
# Library Types and Linking
@ -383,8 +399,14 @@ endif ()
#------------------------------------------------------------------------
set(name tidy-static)
add_library ( ${name} STATIC ${CFILES} ${HFILES} ${LIBHFILES} )
set_target_properties( ${name} PROPERTIES
OUTPUT_NAME ${LIB_NAME}s )
if (WIN32)
set_target_properties( ${name} PROPERTIES
OUTPUT_NAME ${LIB_NAME}_static )
else ()
set_target_properties( ${name} PROPERTIES
OUTPUT_NAME ${LIB_NAME} )
endif ()
if (NOT TIDY_CONSOLE_SHARED) # user wants default static linkage
list ( APPEND add_LIBS ${name} )
endif ()
@ -394,7 +416,11 @@ install(TARGETS ${name}
LIBRARY DESTINATION ${LIB_INSTALL_DIR}
)
install( FILES ${HFILES} DESTINATION ${INCLUDE_INSTALL_DIR} )
if(MSVC)
# install(FILES $<TARGET_PDB_FILE:${name}> DESTINATION lib OPTIONAL)
INSTALL(FILES ${PROJECT_BINARY_DIR}/${name}.dir/Debug/${name}.pdb
DESTINATION lib CONFIGURATIONS Debug )
endif()
#------------------------------------------------------------------------
# Dynamic Library
@ -410,11 +436,10 @@ if (BUILD_SHARED_LIB)
OUTPUT_NAME ${LIB_NAME} )
set_target_properties( ${name} PROPERTIES
VERSION ${LIBTIDY_VERSION}
SOVERSION ${TIDY_MAJOR_VERSION} )
SOVERSION ${TIDY_SO_VERSION}
NO_SONAME ${NO_SONAME} )
set_target_properties( ${name} PROPERTIES
COMPILE_FLAGS "-DBUILD_SHARED_LIB" )
set_target_properties( ${name} PROPERTIES
COMPILE_FLAGS "-DBUILDING_SHARED_LIB" )
COMPILE_FLAGS "-DBUILD_SHARED_LIB -DBUILDING_SHARED_LIB")
install(TARGETS ${name}
RUNTIME DESTINATION ${BIN_INSTALL_DIR}
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
@ -440,7 +465,12 @@ if (SUPPORT_CONSOLE_APP)
set_target_properties( ${name} PROPERTIES DEBUG_POSTFIX d )
endif ()
if (APPLE)
target_link_options(${name} PRIVATE LINKER:-sectcreate,__TEXT,__info_plist,${CMAKE_CURRENT_SOURCE_DIR}/console/Info.plist)
string(TIMESTAMP CURRENT_YEAR "%Y")
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/console/Info.plist.in
${CMAKE_CURRENT_BINARY_DIR}/Info.plist
)
target_link_options(${name} PRIVATE LINKER:-sectcreate,__TEXT,__info_plist,Info.plist)
endif ()
if (NOT TIDY_CONSOLE_SHARED)
set_target_properties( ${name} PROPERTIES

View file

@ -32,13 +32,14 @@ When youre ready to add a great new feature, these write-ups may be useful.
- Discover how to add new tags to Tidy in [README/TAGS.md][130].
- If you want to add new messages to Tidy, read [README/MESSAGE.md][150].
- Configuration options can be added according to [README/OPTIONS.md][155].
- Pull Requests must pass all existing regression tests, or you must change existing regression test expectations with a good explanation. New features require that you add new regression tests. See [README/TESTING.md][165] for more details.
### Language Localization Guides
Tidy supports localization, and welcomes translations into various languages. Please read up on how to localize HTML Tidy.
- The general README for localizing can be found in [/README/LOCALIZE.md][140].
- And [/localize/README.md][145] contains specific instructions for localizing.
- The general README for localizing can be found in [README/LOCALIZE.md][140].
- And [localize/README.md][145] contains specific instructions for localizing.
## Other Important Links
@ -49,6 +50,7 @@ Tidy supports localization, and welcomes translations into various languages. Pl
- bugs: [https://github.com/htacg/tidy-html5/issues][7]
- list: [https://lists.w3.org/Archives/Public/html-tidy/][8]
- api and quickref: [http://api.html-tidy.org/][9]
- Wikidata: [https://www.wikidata.org/wiki/Q1566084][10]
[4]: http://www.html-tidy.org/
[5]: https://github.com/htacg/tidy-html5
@ -56,6 +58,7 @@ Tidy supports localization, and welcomes translations into various languages. Pl
[7]: https://github.com/htacg/tidy-html5/issues
[8]: https://lists.w3.org/Archives/Public/html-tidy/
[9]: http://api.html-tidy.org/
[10]: https://www.wikidata.org/wiki/Q1566084
## History
@ -88,9 +91,10 @@ HTML Tidy and LibTidy are free and open source software with a permissive licens
[125]: README/CONTRIBUTING.md
[130]: README/TAGS.md
[135]: README/LICENSE.md
[140]: /README/LOCALIZE.md
[145]: /localize/README.md
[140]: README/LOCALIZE.md
[145]: localize/README.md
[150]: README/MESSAGE.md
[155]: README/OPTIONS.md
[160]: README/VERSION.md
[165]: README/TESTING.md

View file

@ -6,7 +6,7 @@ Starting with **HTML Tidy** 5.4.0, HTACG will adopt a new branch management stra
As described thoroughly in our [VERSION.md](VERSION.md) document, this means that **master** will always consist of an even-numbered minor version, and activity will remain relatively quiet unless we backport a critical bug fix from **next**.
The **next** branch, then will host the majority of our development activity, and any contributions and PRs should be again this branch. This means that **next** will always consist of an odd minor version number.
The **next** branch, then will host the majority of our development activity, and any contributions and PRs should be against this branch. This means that **next** will always consist of an odd minor version number.
## About Versioning

View file

@ -19,24 +19,44 @@ In Windows CMake offers various versions for MSVC. Again below only the command
## Build the tidy library and command line tool
1. `cd build/cmake`
### macOS/Linux/Unix
2. `cmake ../.. -DCMAKE_BUILD_TYPE=Release [-DCMAKE_INSTALL_PREFIX=/path/for/install]`
~~~
cd build/cmake
cmake ../.. -DCMAKE_BUILD_TYPE=Release [-DCMAKE_INSTALL_PREFIX=/path/for/install]
make
[sudo] make install
~~~
3. Windows: `cmake --build . --config Release`
Unix/OS X: `make`
### macOS (multi-architecture)
4. Install, if desired:
Windows: `cmake --build . --config Release --target INSTALL`
Unix/OS X: `[sudo] make install`
~~~
cd build/cmake
cmake ../.. -DCMAKE_BUILD_TYPE=Release "-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64"
make
[sudo] make install
~~~
By default cmake sets the install path to `/usr/local/bin` in Unix. If you wanted the binary in say `/usr/bin` instead, then in 2. above use `-DCMAKE_INSTALL_PREFIX=/usr`.
### Windows
Also, in Unix if you want to build the release library without any debug `assert` in the code then add `-DCMAKE_BUILD_TYPE=Release` in step 2. This adds a `-DNDEBUG` macro to the compile switches. This is normally added in windows build for the `Release` config.
~~~
cd build/cmake
cmake ../.. -DCMAKE_BUILD_TYPE=Release [-DCMAKE_INSTALL_PREFIX=/path/for/install]
cmake --build . --config Release
cmake --build . --config Release --target INSTALL
~~~
### Build options
By default cmake sets the install path to `/usr/local/bin` in Unix. If you wanted the binary in say `/usr/bin` instead, then in the second step, use `-DCMAKE_INSTALL_PREFIX=/usr`.
Also, in Unix if you want to build the release library without any debug `assert` in the code then add `-DCMAKE_BUILD_TYPE=Release` in the second step. This adds a `-DNDEBUG` macro to the compile switches. This is normally added in windows build for the `Release` config.
In Windows the default install is to `C:\Program Files\tidy`, or `C:/Program Files (x86)/tidy`, which is not very useful. After the build the `tidy.exe` is in the `Release` directory, and can be copied to any directory in your `PATH` environment variable for global use.
If you do **not** need the tidy library built as a 'shared' (DLL) library, then in 2. add the command `-DBUILD_SHARED_LIB:BOOL=OFF`. This option is **ON** by default. The static library is always built and linked with the command line tool for convenience in Windows, and so the binary can be run as part of the man page build without the shared library being installed in unix.
On macOS, you can build for both Intel and Apple Silicon by adding "-DCMAKE_OSX_ARCHITECTURES=x86_64;arm64" in the second step.
If you do **not** need the tidy library built as a 'shared' (DLL) library, then in the second step add the command `-DBUILD_SHARED_LIB:BOOL=OFF`. This option is **ON** by default. The static library is always built and linked with the command line tool for convenience in Windows, and so the binary can be run as part of the man page build without the shared library being installed in unix.
See the `CMakeLists.txt` file for other CMake **options** offered.
@ -50,7 +70,7 @@ See the `CMakeLists.txt` file for other CMake **options** offered.
## Build PHP with the tidy-html5 library
Due to API changes in the PHP source, `buffio.h` needs to be renamed to `tidybuffio.h` in the file `ext/tidy/tidy.c` in PHP's source.
Before PHP 7.1, due to API changes in the PHP source, `buffio.h` needs to be renamed to `tidybuffio.h` in the file `ext/tidy/tidy.c` in PHP's source.
That is - prior to configuring PHP run this in the PHP source directory:
~~~

246
README/CHANGELOG.md Normal file
View file

@ -0,0 +1,246 @@
# Changelog
## [5.8.0](https://github.com/htacg/tidy-html5/tree/5.8.0) (2021-07-10)
[Full Changelog](https://github.com/htacg/tidy-html5/compare/5.6.0...5.8.0)
**Fixed bugs:**
- Details open, Value added to Attribute [\#925](https://github.com/htacg/tidy-html5/issues/925)
- Fix handling of percent symbols in CheckLength validation routine [\#910](https://github.com/htacg/tidy-html5/issues/910)
- What is the true purpose and use case of the --bare option? [\#896](https://github.com/htacg/tidy-html5/issues/896)
- Warning about missing \</summary\> [\#895](https://github.com/htacg/tidy-html5/issues/895)
- DecodeMacRoman\(\) is missing an upper bounds check before indexing into Mac2Unicode array [\#891](https://github.com/htacg/tidy-html5/issues/891)
- Can't disable wrap [\#858](https://github.com/htacg/tidy-html5/issues/858)
- Recursion limit exceeded [\#850](https://github.com/htacg/tidy-html5/issues/850)
- template tag should be allowed in head [\#836](https://github.com/htacg/tidy-html5/issues/836)
- tag\_defs + AdjustTags\(\) and ResetTags\(\) during parsing is not thread-safe \(tags.c\) [\#816](https://github.com/htacg/tidy-html5/issues/816)
- Unexpected parsing with uppercase DOCTYPE [\#815](https://github.com/htacg/tidy-html5/issues/815)
- bugfix for messageobj.c for windows vc++ [\#800](https://github.com/htacg/tidy-html5/issues/800)
- Tidy 5.7.20 GetSurrogatePair can use uninitialised value processing malformed entity refs [\#798](https://github.com/htacg/tidy-html5/issues/798)
- regression tests fail if /etc/tidy.conf or ~/.tidyrc exists [\#778](https://github.com/htacg/tidy-html5/issues/778)
- AddByte allocAmt overflows for large input files [\#761](https://github.com/htacg/tidy-html5/issues/761)
- --strict-tags-attributes no doesn't ignore \<td align\> [\#729](https://github.com/htacg/tidy-html5/issues/729)
- "Too many title elements in \<title\>" should say "Too many title elements in \<head\>" [\#692](https://github.com/htacg/tidy-html5/issues/692)
- Tidy 5.6.0 on Mac says Not a file when file is not writeable [\#681](https://github.com/htacg/tidy-html5/issues/681)
- Tidy fails if html contains a section \<!\[endif\]—\> [\#487](https://github.com/htacg/tidy-html5/issues/487)
- "Malformed" Word 2000 sequence may cause Tidy to skip document content [\#462](https://github.com/htacg/tidy-html5/issues/462)
- Change open tag to Boolean [\#932](https://github.com/htacg/tidy-html5/pull/932) (@arrmo)
- Is \#729 - Show 'warnings' in all td cases [\#928](https://github.com/htacg/tidy-html5/pull/928) (@geoffmcl)
- Issue \#692 - too many titles [\#927](https://github.com/htacg/tidy-html5/pull/927) (@geoffmcl)
- Is. \#681 - read-only files, and dirs [\#926](https://github.com/htacg/tidy-html5/pull/926) (@geoffmcl)
- Free attributes before return NULL [\#899](https://github.com/htacg/tidy-html5/pull/899) (@ltx2018)
- Is. \#896 - make 'bear' docs match code [\#898](https://github.com/htacg/tidy-html5/pull/898) (@geoffmcl)
- Correction for issue-895 [\#897](https://github.com/htacg/tidy-html5/pull/897) (@arrmo)
- fix memleak in GetTokenFromStream [\#884](https://github.com/htacg/tidy-html5/pull/884) (@ltx2018)
- Protect against NULL in PruneSection. [\#853](https://github.com/htacg/tidy-html5/pull/853) (@esclim)
- Is \#815 - Use case-insensitive test 'html' [\#832](https://github.com/htacg/tidy-html5/pull/832) (@geoffmcl)
- Is. \#761 - just deal with the 'uint' wrap [\#830](https://github.com/htacg/tidy-html5/pull/830) (@geoffmcl)
- Tidy 5.7.20 crashes if allocator replaced [\#797](https://github.com/htacg/tidy-html5/issues/797)
- --mute should suppress non-zero exit code [\#794](https://github.com/htacg/tidy-html5/issues/794)
- Seems tidy.c has sprung a leak [\#791](https://github.com/htacg/tidy-html5/issues/791)
- Cannot handle read-only html files \(possibly regression?\) [\#789](https://github.com/htacg/tidy-html5/issues/789)
- setlocale\( LC\_ALL, ""\) changes the locale for the entire application [\#770](https://github.com/htacg/tidy-html5/issues/770)
- mute in ~/.tidyrc runs fine but triggers exit\(1\) [\#752](https://github.com/htacg/tidy-html5/issues/752)
- Duplicate IDs are not detected if the ID has an uppercase letter [\#726](https://github.com/htacg/tidy-html5/issues/726)
- Tidy gets confused with a \<span\> around a block element [\#709](https://github.com/htacg/tidy-html5/issues/709)
- Tidy seems to get confused by HTML strings in JavaScript blocks. [\#700](https://github.com/htacg/tidy-html5/issues/700)
- tidy indent+wrap breaks \<pre\> formatting [\#697](https://github.com/htacg/tidy-html5/issues/697)
- -export-config creates invalid configuration file [\#679](https://github.com/htacg/tidy-html5/issues/679)
- Segmentation Fault [\#656](https://github.com/htacg/tidy-html5/issues/656)
- Maybe a problem with some vsnprintf implementations? [\#655](https://github.com/htacg/tidy-html5/issues/655)
- Why is libtidy complaining \<data\> isnt approved by W3C? [\#649](https://github.com/htacg/tidy-html5/issues/649)
- Is. \#791 - free some allocations [\#809](https://github.com/htacg/tidy-html5/pull/809) (@geoffmcl)
- Issue 726 upper case anchors [\#731](https://github.com/htacg/tidy-html5/pull/731) (@geoffmcl)
- Is \#673 - Revert 350f7b4 and 86e62db AdjustConfig logic [\#705](https://github.com/htacg/tidy-html5/pull/705) (@geoffmcl)
- Issue \#655 - Fix unsafe use of output buffer as input param [\#662](https://github.com/htacg/tidy-html5/pull/662) (@geoffmcl)
- Issue \#656 - protect against NULL node set in loop [\#661](https://github.com/htacg/tidy-html5/pull/661) (@geoffmcl)
**Closed issues:**
- No NPM? [\#960](https://github.com/htacg/tidy-html5/issues/960)
- Where can I find the list of known tags? [\#958](https://github.com/htacg/tidy-html5/issues/958)
- fix non-standard static library name [\#952](https://github.com/htacg/tidy-html5/issues/952)
- Lot of config options; but where are the defaults specified [\#948](https://github.com/htacg/tidy-html5/issues/948)
- Any Windows Binaries for 5.7.28, just like 5.6? [\#947](https://github.com/htacg/tidy-html5/issues/947)
- Setup continuous integration and testing [\#944](https://github.com/htacg/tidy-html5/issues/944)
- Linux binaries for latest releases [\#939](https://github.com/htacg/tidy-html5/issues/939)
- Outdated warnings [\#938](https://github.com/htacg/tidy-html5/issues/938)
- Umlauts/special characters not converted to correct html entities [\#936](https://github.com/htacg/tidy-html5/issues/936)
- tidy hanging [\#935](https://github.com/htacg/tidy-html5/issues/935)
- Tidy catches repeated attributes, but misses identical ids [\#924](https://github.com/htacg/tidy-html5/issues/924)
- drop-empty-elements is not removing empty Table elements [\#923](https://github.com/htacg/tidy-html5/issues/923)
- Tag "main" is shown as error [\#922](https://github.com/htacg/tidy-html5/issues/922)
- Unexpected parsing a tag in table [\#919](https://github.com/htacg/tidy-html5/issues/919)
- beginner on windows -- tidy reports: document: "a0.htm" is not a file! -- But it is [\#918](https://github.com/htacg/tidy-html5/issues/918)
- tidy says this misplaced \</dl\> is OK [\#917](https://github.com/htacg/tidy-html5/issues/917)
- Tidy can't deal with \<中文\> XML tags [\#913](https://github.com/htacg/tidy-html5/issues/913)
- Support extended color names in HTML 5 [\#908](https://github.com/htacg/tidy-html5/issues/908)
- Unknown type uint trying to use the shared lib. [\#906](https://github.com/htacg/tidy-html5/issues/906)
- \</select\> ending tag missing [\#904](https://github.com/htacg/tidy-html5/issues/904)
- SVG attributes flagged as proprietary [\#903](https://github.com/htacg/tidy-html5/issues/903)
- tidy-mark option is not working [\#901](https://github.com/htacg/tidy-html5/issues/901)
- Need help controlling output [\#894](https://github.com/htacg/tidy-html5/issues/894)
- Say how to deal with XHTML input [\#893](https://github.com/htacg/tidy-html5/issues/893)
- Help output refers to a non-existent -options option [\#892](https://github.com/htacg/tidy-html5/issues/892)
- Tidy gets confused with u tags and underline styles [\#890](https://github.com/htacg/tidy-html5/issues/890)
- how to forbid auto insert tag? [\#889](https://github.com/htacg/tidy-html5/issues/889)
- Incorrectly changing — to - \(emdash \[alt 0151\]\) to hypens. [\#885](https://github.com/htacg/tidy-html5/issues/885)
- html-tidy site does not work with https [\#883](https://github.com/htacg/tidy-html5/issues/883)
- Use with TextPad 8 [\#882](https://github.com/htacg/tidy-html5/issues/882)
- Translation: TidyKeepTabs [\#880](https://github.com/htacg/tidy-html5/issues/880)
- \<img\> proprietary attribute "loading" [\#879](https://github.com/htacg/tidy-html5/issues/879)
- Versioning seems a bit off [\#877](https://github.com/htacg/tidy-html5/issues/877)
- --quote-ampersand yes doesn't work [\#876](https://github.com/htacg/tidy-html5/issues/876)
- Convert spaces to non-breaking space [\#875](https://github.com/htacg/tidy-html5/issues/875)
- Tidy 5.6.0 mangled html / php code. [\#872](https://github.com/htacg/tidy-html5/issues/872)
- Even with -utf8 tidy replaces UTF8 code U+00A0 into numeric entity &\#160; [\#871](https://github.com/htacg/tidy-html5/issues/871)
- http-equiv metas should trigger helpful upgrade messages [\#868](https://github.com/htacg/tidy-html5/issues/868)
- HTML Tidy website does not render propertly when using HTTPS [\#867](https://github.com/htacg/tidy-html5/issues/867)
- \[-Wignored-qualifiers\] warning in tidy [\#866](https://github.com/htacg/tidy-html5/issues/866)
- Wrong character encoding [\#863](https://github.com/htacg/tidy-html5/issues/863)
- Missing semicolon after html entity sometimes returns generic 'unknown entity' warning instead of specific 'missing semicolon' [\#862](https://github.com/htacg/tidy-html5/issues/862)
- Warning: unescaped & or unknown entity "&P" when encoding as utf-8 [\#861](https://github.com/htacg/tidy-html5/issues/861)
- Tidy output clutter [\#857](https://github.com/htacg/tidy-html5/issues/857)
- Trailing backspace removed [\#856](https://github.com/htacg/tidy-html5/issues/856)
- Only wrap at tags [\#854](https://github.com/htacg/tidy-html5/issues/854)
- ENABLE\_DEBUG\_LOG is ignored on Windows [\#852](https://github.com/htacg/tidy-html5/issues/852)
- Kill off alphabetical ordering clause for publicly-exposed enum defs [\#851](https://github.com/htacg/tidy-html5/issues/851)
- For Sublime Text 3 [\#849](https://github.com/htacg/tidy-html5/issues/849)
- \<li\> tags skipped in tidy result shown on screen [\#847](https://github.com/htacg/tidy-html5/issues/847)
- man page missing header causing appending to XML discussion [\#846](https://github.com/htacg/tidy-html5/issues/846)
- \<input type="file"\> needs name= [\#845](https://github.com/htacg/tidy-html5/issues/845)
- Expose node-\>last in the public API [\#844](https://github.com/htacg/tidy-html5/issues/844)
- Support EJS? [\#842](https://github.com/htacg/tidy-html5/issues/842)
- Tidy 5.2 cleaned up curly quotes but 5.6 doesn't [\#841](https://github.com/htacg/tidy-html5/issues/841)
- Jekyll headings removed [\#840](https://github.com/htacg/tidy-html5/issues/840)
- Should tidy allow an empty title element? [\#839](https://github.com/htacg/tidy-html5/issues/839)
- Missing tags for 5.7.\* [\#834](https://github.com/htacg/tidy-html5/issues/834)
- Python binding? [\#826](https://github.com/htacg/tidy-html5/issues/826)
- Self-closing tags are not correctly recognized [\#813](https://github.com/htacg/tidy-html5/issues/813)
- Different output when parsing HTML [\#790](https://github.com/htacg/tidy-html5/issues/790)
- Continuously fuzzing tidy-html5 with OSS-Fuzz [\#788](https://github.com/htacg/tidy-html5/issues/788)
- I18N isn't working \(mostly\) via changing the environment variables [\#783](https://github.com/htacg/tidy-html5/issues/783)
- 5.6.0 and breakage with php-tidy [\#780](https://github.com/htacg/tidy-html5/issues/780)
- Tidy needs a changelog [\#776](https://github.com/htacg/tidy-html5/issues/776)
- TidyNodeGetText returns text with a new line appended [\#775](https://github.com/htacg/tidy-html5/issues/775)
- Breaks microseconds after call tidy\_repair\_string [\#771](https://github.com/htacg/tidy-html5/issues/771)
- Typos in language\_en.h, etc [\#765](https://github.com/htacg/tidy-html5/issues/765)
- Document accessibility priority numbers better [\#756](https://github.com/htacg/tidy-html5/issues/756)
- Xcode not working with tidylib [\#751](https://github.com/htacg/tidy-html5/issues/751)
- Intent-To-Package: Snaps are Universal Linux Packages [\#748](https://github.com/htacg/tidy-html5/issues/748)
- Can't parse UTF16 html string [\#744](https://github.com/htacg/tidy-html5/issues/744)
- libtidy.so.5 has removed symbols between 5.2.0 and 5.6.0, but kept SONAME [\#743](https://github.com/htacg/tidy-html5/issues/743)
- Tidy 5.7.16 -\> empty result [\#740](https://github.com/htacg/tidy-html5/issues/740)
- Crash with malformed \<meta\> tag [\#739](https://github.com/htacg/tidy-html5/issues/739)
- bug\(encoding\): non-ASCII characters in configuration file [\#737](https://github.com/htacg/tidy-html5/issues/737)
- Improve documentation re: wrap-script-literals [\#736](https://github.com/htacg/tidy-html5/issues/736)
- feature\_request\(validation\): “preserve-entities yes” by default [\#732](https://github.com/htacg/tidy-html5/issues/732)
- Tidy emits warnings that aren't in order [\#696](https://github.com/htacg/tidy-html5/issues/696)
- Option to disable tidy code fixing option [\#693](https://github.com/htacg/tidy-html5/issues/693)
- tidy change html view when deal with white-space:pre tag [\#685](https://github.com/htacg/tidy-html5/issues/685)
- CLI option to stop insertion/deletion of tags [\#682](https://github.com/htacg/tidy-html5/issues/682)
- Tidy does not strip leading and trailing spaces in HTML href [\#678](https://github.com/htacg/tidy-html5/issues/678)
- Use tidy with json custom attributes on custom components [\#677](https://github.com/htacg/tidy-html5/issues/677)
- \[Question\] How to use tidy for multiple files? [\#668](https://github.com/htacg/tidy-html5/issues/668)
- How to run a test-kit from terminal? [\#667](https://github.com/htacg/tidy-html5/issues/667)
- Dependency on DLLs not Documented [\#666](https://github.com/htacg/tidy-html5/issues/666)
- tidylib.c fails to compile on Visual Studio 2010 [\#665](https://github.com/htacg/tidy-html5/issues/665)
- Minify HTML [\#628](https://github.com/htacg/tidy-html5/issues/628)
- Do not insert newlines into TEXT when wrapping! [\#625](https://github.com/htacg/tidy-html5/issues/625)
- Configuration Options "cleanup" [\#609](https://github.com/htacg/tidy-html5/issues/609)
- Next Release 5.6.0 [\#600](https://github.com/htacg/tidy-html5/issues/600)
- anchor-as-name: false replaces name attribute of a form tag with id attribute [\#571](https://github.com/htacg/tidy-html5/issues/571)
- Why does tidy format the '\<' and '\>' numeric operator? [\#485](https://github.com/htacg/tidy-html5/issues/485)
- span with display: inline-block is treated as inline [\#448](https://github.com/htacg/tidy-html5/issues/448)
- wrap-php multiple lines [\#437](https://github.com/htacg/tidy-html5/issues/437)
- Option to always encode double ampersands [\#827](https://github.com/htacg/tidy-html5/issues/827)
- \[ENH\] Add meta options to disable/enable cleanup and repair option [\#819](https://github.com/htacg/tidy-html5/issues/819)
- --vertical-space yes adds too much after comment [\#811](https://github.com/htacg/tidy-html5/issues/811)
- Line breaking on "|" [\#810](https://github.com/htacg/tidy-html5/issues/810)
- Installs library in /usr/local/lib/lib instead of /usr/local/lib [\#807](https://github.com/htacg/tidy-html5/issues/807)
- Publishing in VS2015 - System.DllNotFoundException [\#804](https://github.com/htacg/tidy-html5/issues/804)
- can not fix script async Attr to async="async" [\#799](https://github.com/htacg/tidy-html5/issues/799)
- Feature Request: Omit boilerplate [\#795](https://github.com/htacg/tidy-html5/issues/795)
- html conversion to xml leaves many tags unclosed [\#792](https://github.com/htacg/tidy-html5/issues/792)
- NppTidy 5.6.0 quickref.html link broken - please fix [\#787](https://github.com/htacg/tidy-html5/issues/787)
- Redundant blank lines when printing -help [\#781](https://github.com/htacg/tidy-html5/issues/781)
- --css-prefix option no longer adds a hyphen to its built classes [\#777](https://github.com/htacg/tidy-html5/issues/777)
- Build error on Android \(Termux\): unknown type name 'ulong' [\#773](https://github.com/htacg/tidy-html5/issues/773)
- alter default config file processing [\#772](https://github.com/htacg/tidy-html5/issues/772)
- Tidy output going to stderr [\#763](https://github.com/htacg/tidy-html5/issues/763)
- --tidy-mark no inserts blank line [\#760](https://github.com/htacg/tidy-html5/issues/760)
- tidy -access: \<doctype\> NOT missing [\#758](https://github.com/htacg/tidy-html5/issues/758)
- type qualifiers ignored on function return type \[-Werror=ignored-qualifiers\] [\#746](https://github.com/htacg/tidy-html5/issues/746)
- tidy dies on unexpected character [\#745](https://github.com/htacg/tidy-html5/issues/745)
- tidy 5.6.0 warning `inserting missing 'title' element` appears in php-only files [\#728](https://github.com/htacg/tidy-html5/issues/728)
- bug\(build\): tidyBufAppend\(&buf1, d-\>def, strlen\(d-\>def\)\); [\#721](https://github.com/htacg/tidy-html5/issues/721)
- Allow specify ranges of code that do not get checked [\#720](https://github.com/htacg/tidy-html5/issues/720)
- README/CONTRIBUTING.md [\#718](https://github.com/htacg/tidy-html5/issues/718)
- tidy's error messages should include filename somewhere [\#713](https://github.com/htacg/tidy-html5/issues/713)
- Tidy does not complain about valign in \<tr\>, \<th\> or \<td\> [\#711](https://github.com/htacg/tidy-html5/issues/711)
- tidy converts '&' in query parameters \(&aen=true =\> &amp;aen=true\) in relative paths [\#710](https://github.com/htacg/tidy-html5/issues/710)
- TidyHtml not working properly in C++ [\#707](https://github.com/htacg/tidy-html5/issues/707)
- Unescaped `&` emitted despite using \*\*output-xhtml\*\* key bindings in 5.6.0 in PHP bindings [\#704](https://github.com/htacg/tidy-html5/issues/704)
- How to ignore specific warnings [\#699](https://github.com/htacg/tidy-html5/issues/699)
- Mention the need for a `:` before options' value in the configuration file [\#698](https://github.com/htacg/tidy-html5/issues/698)
- Tidy 5.6.0 -\> bug with pre tag [\#690](https://github.com/htacg/tidy-html5/issues/690)
- Is there any way to remove inline styles? [\#689](https://github.com/htacg/tidy-html5/issues/689)
- feature request\(safari\): Pinned Tab Icons support [\#686](https://github.com/htacg/tidy-html5/issues/686)
- Adopt Cygwin tidy package [\#680](https://github.com/htacg/tidy-html5/issues/680)
- Clarification on releases / release tarballs missing [\#676](https://github.com/htacg/tidy-html5/issues/676)
- --fix-uri no does not turn off check [\#675](https://github.com/htacg/tidy-html5/issues/675)
- Unexpected behavior of 'add-xml-space' setting when used with 'wrap' =\> 0 and saveBuffer is called twice in tidy-html5 5.6.0 [\#673](https://github.com/htacg/tidy-html5/issues/673)
- show-body-only [\#672](https://github.com/htacg/tidy-html5/issues/672)
- Tidy deletes empty tags [\#669](https://github.com/htacg/tidy-html5/issues/669)
- unbalanced \#endif's [\#663](https://github.com/htacg/tidy-html5/issues/663)
- Feature request: option to replace inline styles with classes + `<style>` tag styles [\#638](https://github.com/htacg/tidy-html5/issues/638)
- Windows 32-bit XP Release [\#568](https://github.com/htacg/tidy-html5/issues/568)
- Release an updated HTML::Tidy perl library [\#562](https://github.com/htacg/tidy-html5/issues/562)
- \<Script\> tag gets removed [\#528](https://github.com/htacg/tidy-html5/issues/528)
- Word filtered html doesn't convert accents to utf8 [\#512](https://github.com/htacg/tidy-html5/issues/512)
- option to ignore attribute-errors if attribute contains pseudo-elements [\#505](https://github.com/htacg/tidy-html5/issues/505)
- Allow \<div\> inside \<pre\> [\#479](https://github.com/htacg/tidy-html5/issues/479)
**Merged pull requests:**
- Fixes \#743. [\#966](https://github.com/htacg/tidy-html5/pull/966) (@balthisar)
- Fixed merge conflict; fixed non-build issue on macOS. RC for testing. [\#965](https://github.com/htacg/tidy-html5/pull/965) (@balthisar)
- README.md: add Wikidata link [\#961](https://github.com/htacg/tidy-html5/pull/961) (@vitaly-zdanevich)
- Fix issues with user-specified settings changing [\#959](https://github.com/htacg/tidy-html5/pull/959) (@balthisar)
- Automated Testing [\#957](https://github.com/htacg/tidy-html5/pull/957) (@balthisar)
- simple fix for the range of the condition. [\#953](https://github.com/htacg/tidy-html5/pull/953) (@ihsinme)
- Add muted and playsinline video attributes for HTML5. [\#949](https://github.com/htacg/tidy-html5/pull/949) (@drichardson)
- Add German Language [\#943](https://github.com/htacg/tidy-html5/pull/943) (@balthisar)
- Link macOS console application with required plist [\#942](https://github.com/htacg/tidy-html5/pull/942) (@balthisar)
- Is. \#839 - new message for 'blank' title [\#930](https://github.com/htacg/tidy-html5/pull/930) (@geoffmcl)
- Support extended color names in HTML 5 validation [\#914](https://github.com/htacg/tidy-html5/pull/914) (@cqcallaw)
- Fix percentage validation in CheckLength [\#912](https://github.com/htacg/tidy-html5/pull/912) (@cqcallaw)
- Add SVG paint attributes [\#907](https://github.com/htacg/tidy-html5/pull/907) (@cqcallaw)
- Is. \#879: add loading attribute for img, iframe [\#902](https://github.com/htacg/tidy-html5/pull/902) (@sidvishnoi)
- COMPILE\_FLAGS property only once per target, avoid overwriting. [\#886](https://github.com/htacg/tidy-html5/pull/886) (@SvenPStarFinanz)
- Complete pt\_br translation [\#881](https://github.com/htacg/tidy-html5/pull/881) (@hugotiburtino)
- Support the \<slot\> tag [\#848](https://github.com/htacg/tidy-html5/pull/848) (@lhchavez)
- Issue \#437 - re-use of 'wrap-php' option [\#645](https://github.com/htacg/tidy-html5/pull/645) (@geoffmcl)
- Change "tidyLocalMapItem" to "tidyLocaleMapItem" [\#829](https://github.com/htacg/tidy-html5/pull/829) (@MrSorcus)
- added OS \_\_ANDROID\_\_ in tidyplatform.h [\#823](https://github.com/htacg/tidy-html5/pull/823) (@naveedpash)
- Update BRANCHES.md [\#793](https://github.com/htacg/tidy-html5/pull/793) (@SConaway)
- Is. \#783 - Fix language detection [\#785](https://github.com/htacg/tidy-html5/pull/785) (@Lin-Buo-Ren)
- Is. \#781 - Drop redundant blank lines in -help [\#782](https://github.com/htacg/tidy-html5/pull/782) (@Lin-Buo-Ren)
- Issue 649 adding tag \<data\> [\#769](https://github.com/htacg/tidy-html5/pull/769) (@AntoniosHadji)
- Issue 752 [\#764](https://github.com/htacg/tidy-html5/pull/764) (@geoffmcl)
- PHP ≥ 7.1.0 recognizes tidy-html5 [\#762](https://github.com/htacg/tidy-html5/pull/762) (@cmb69)
- Fix typo [\#753](https://github.com/htacg/tidy-html5/pull/753) (@Lin-Buo-Ren)
- Fix extra const modifier [\#747](https://github.com/htacg/tidy-html5/pull/747) (@drizt)
- Is \#721 - cast away some gcc warnings [\#722](https://github.com/htacg/tidy-html5/pull/722) (@geoffmcl)
- Doc nits [\#717](https://github.com/htacg/tidy-html5/pull/717) (@ler762)
- Is \#709 - Improve message if 'implict' [\#714](https://github.com/htacg/tidy-html5/pull/714) (@geoffmcl)
- Make global attribute `dir` accept auto as well. [\#712](https://github.com/htacg/tidy-html5/pull/712) (@doronbehar)
- Is \#697 - Add NOWRAP to print of pre tag [\#708](https://github.com/htacg/tidy-html5/pull/708) (@geoffmcl)
- Is \#700 - change script parsing if in html5 mode [\#703](https://github.com/htacg/tidy-html5/pull/703) (@geoffmcl)
- Issue 698 - docs update [\#702](https://github.com/htacg/tidy-html5/pull/702) (@geoffmcl)
- Is \#686 - Add attr COLOR to W3CAttrsFor\_LINK [\#701](https://github.com/htacg/tidy-html5/pull/701) (@geoffmcl)
- Issue 679 [\#695](https://github.com/htacg/tidy-html5/pull/695) (@geoffmcl)
- Issue 663 - fixes for Haiku port [\#664](https://github.com/htacg/tidy-html5/pull/664) (@geoffmcl)
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*

View file

@ -6,16 +6,18 @@ So you want to contribute to Tidy? Fantastic! Here's a brief overview on how bes
If you are having trouble running console `Tidy`, or using the `LibTidy` API in your own project, then maybe the best places to get help is either via a comment in [Tidy Issues](https://github.com/htacg/tidy-html5/issues), or on the [Tidy Mail Archive](https://lists.w3.org/Archives/Public/html-tidy/) list.
And please do a **search** using different **key** words - see [searching](https://help.github.com/articles/searching-issues-and-pull-requests/) - to make sure it is **not** a duplicate. If something similar has been discussed before, but you still feel this is **different**, then add that related reference in your post...
In either place please start with a short subject to describe the issue. If it involves running Tidy on an html file, or if its an API question, make sure to include:
- the version: `$ tidy -v`
- what was the configuration used
- a small sample input
- the output
- the _expected_ output expected
- the _expected_ output
- some sample code (if an API question).
These data will make replication of your issue much simpler for us.
This information will make replication of your issue much simpler for us.
If you do add sample HTML input, then it can also be very helpful if that sample **passes** the W3C [validator](https://validator.w3.org/#validate_by_upload). Tidy attempts to follow all current W3C standards.
@ -39,17 +41,25 @@ Concerning the “Tidy Code Style,” checkout [CODESTYLE.md](CODESTYLE.md), but
### Using Git appropriately
1. Fork the repository to your GitHub account.
2. Optionally create a **topical branch**, a branch whose name is succint but explains what you're doing, such as "feature/add-new-lines".
3. Make your changes, committing at logical breaks.
4. Push your work to your personal account.
5. [Create a pull request](https://help.github.com/articles/using-pull-requests).
6. Watch for comments or acceptance.
1. Fork tidy to your own github account. Use top right `Fork` icon.
2. Optional: Generate a SSH Key, and add it to your `https://github.com/<name>` settings, SSH and GPG keys
3. Clone your own fork - `$ git clone git@github.com:<name>/tidy-html5.git [tidy-fork]` Or using `https`.
4. Create a branch - `$ cd tidy-fork; $ git checkout -b <branch-name>`
5. Edit, and commit your changes to this `branch` of your fork.
6. Test your changes, and if appropriate run [regression](https://github.com/htacg/tidy-html5-tests/blob/next/README/RUNTESTS.md) tests.
7. Publish the branch - `$ git push -u origin <branch-name.` - to your remote fork.
8. Create a [Pull Request](https://help.github.com/articles/about-pull-requests/), a **PR**, here.
9. Watch for comments, acceptance.
Please note - if you want to change multiple things that don't depend on each
other, it is better to use `branches`, and make sure you check the master branch back out before making more changes - that way we can take in each change seperately, otherwise Github has a tendancy to combine your requests into one.
Item 2., SSH Key, is optional, and only required if you want to use `clone git@github.com...`. And if you generate the ssh without a `passphrase`, things like `git push` can be done without a password. Just convenience. Alternatively you can use the `HTTPS` protocol...
If you are a continuing contributor then you will need to `rebase` your fork, to htacg `next`, **before** doing any more work, and likewise branches, otherwise we may not be able to cleanly merge your PR. This is a simple process:
Concerning 5., editing and committing your changes, **generally** it is better to `commit` changes often, adding an appropriate commit message to each, like `$ git commit -m "Is. #NNN - reason for change" <file[s]>`. This also aids in the **PR** review.
But the situation varies. Like adding say an option, which can mean several files have to be edited, where it is likely appropriate to combine a considerable number of edits into one commit. There can be no hard and fast rules on this.
Please note, if you want to change **multiple** things that don't depend on each other, use **different** `branches`, and make sure you check the `next` branch back out, before making more changes in a **new** branch name. That way we can take in each **change** separately, otherwise Github will **combine** all your branch commits into one **PR**.
See below on keeping your forks `next` fully in sync with here, called `upstream` - **this is important**.
```
$ git remote add upstream git@github.com:htacg/tidy-html5.git # once only
@ -62,8 +72,28 @@ $ git stash pop # if required, and fix conflicts
$ git push # update the fork next
```
This can be repeated for other branches, too.
This has to be repeated for other branches, too. `$ git checkout <your-branch>`, `$ git rebase next`, fix conflict, if any, and `$ git push`, for **each** branch. It is **not** fun to keep multiple `branches` fully up-to-date with an active `upstream`...
Of course, the **regression** tests, 6., are really only if you have made `code` changes, but it is a good habit to get into. As can be seen the `tests` are in a **separate** repo, so you must also clone that, or **fork** and clone that, to be able to present a **PR**. This is best done in the same `root` folder where where you cloned `tidy-html5`, and your `tidy-fork`. See [RUNTESTS.md](https://github.com/htacg/tidy-html5-tests/blob/next/README/RUNTESTS.md).
In brief, for unix, to use your potentially **new** `tidy-fork` tidy executable -
```
$ git clone git@github.com:htacg/tidy-html5-tests.git
$ cd tidy-html5-tests/tools-sh
$ ./testall.sh ../../tidy-fork/build/cmake/tidy
$ diff -u ../cases/testbase-expects ../cases/testbase-results
```
Use folder `tools-cmd` for windows. Run `alltest.bat --help`.
If the `tests` shows a different exit value, or there are differences between the `expects` and `results`, these **must** be studied, and checked, very carefully. There may be cases where the **new** `results` are correct, in which case a simultaneous **PR** for the forked `tests` **must** be created to match your forked source **PR**.
Do **NOT** change either the root `version.txt` here, nor the `cases/_version.txt` in `tests`. This will be handled by the person that does the **PR** merge. To differentiate your modified `tidy` there is a cmake option, like `-DTIDY_RC_NUMBER=I123`, which will appear in `tidy -v` as `5.7.16.I123`. The number can be anything, but using the relevant issue value is a good choice.
Add an `issue` if you need further **help**... thanks...
### Help Tidy Get Better
It goes without saying **all help is appreciated**. We need to work together to make Tidy better!

186
README/RELEASE.md Normal file
View file

@ -0,0 +1,186 @@
HTML Tidy Release Process Single Point Lesson (SPL)
===================================================
Purpose
-------
This lesson documents how to release a new, officially released version of HTML Tidy. Following the steps in this SPL ensures consistency between releases and results in a predictable experience for the end users of HTML Tidy.
Definition
----------
HTACG HTML Tidy is a library and console application, and the release process is intended to officially designate a point of stability, where "stability" is ABI and API stability. "Stability" is represented by an even minor version number, and "released" means the HTACG has published and made available an even minor version number version of HTML Tidy.
Due to the number of platforms and language bindings which have adopted HTML Tidy, we are highly dependent on package managers to track the latest release versions of HTML Tidy, and release it on these other platforms. We cannot maintain distributions and language bindings for your favorite operating system or language package manager.
Release Process Overview
------------------------
The release process consists largely of the following steps:
### Lead up:
- Create the next release milestone on Github if not already done.
- Decide on PR's to include in the release, bumping version.txt, accordingly.
- Decide on any show-stopper outstanding issues, and action them.
- Change milestone of all excluded-this-time issues to the next milestone, or to indefinite.
- Decide target date for release.
### Release:
- Update the version number to the next release version, e.g., from 5.5.xx to 5.6.0.
- Generate a change log.
- Push this change to `next`.
- Merge this branch to `master`.
- Tag the release on `master`.
- Update the version number of the `next` branch to the next development version, e.g., from 5.8.0 to 5.9.0. At this point, both versions are identical except for the version number.
- Generate the API documentation for `next`.
- Generate the API documentation for `master`.
- Update the https://api.html-tidy.org/ website with the new API documentation.
- Update the https://www.html-tidy.org/ website with the new release version.
- Update the https://binaries.html-tidy.org/ website.
- Push all of the changes.
- Build binaries.
- Create a Github release per the Git tag created above.
- Post the binaries in the release.
Release Steps in Detail
--------------------------
### Update the version number to the next release version
In the `next` branch, modify the `version.txt` file to the next release version, for example, 5.8.0, and set the date.
### Generate a change log
If necessary, install the `github_changelog_generator`. This requires that you have a Ruby environment on your computer, which you probably do because the regression tests require it.
~~~
gem install github_changelog_generator
~~~
Youll also need a Github personal access token in order for the tool to pull information from Github. You can acquire one [here](https://github.com/settings/tokens).
Generate the change log like so:
~~~
github_changelog_generator -u htacg -p tidy-html5 \
--token [github_access_token] \
--since-tag 5.6.0 \
--usernames-as-github-logins \
--future-release 5.8.0 \
-o README/CHANGELOG.md
~~~
**Important**: the `--since-tag` value should be the git tag of the previous release, because we're only interested in the changes since then. The `--future-release` value should be the git tag that you _will apply_ (but have not yet) for this release.
### Commit this change to `next`
~~~
git add .
git commit -m 'Releasing HTML Tidy 5.8.0'
~~~
### Merge this branch to `master`
~~~
git checkout master
git merge next
~~~
### Tag the release on `master`
~~~
git tag -a 5.8.0 -m "HTML Tidy version 5.8.0"
~~~
### Update the version number of the `next` branch
For example, from from 5.8.0 to 5.9.0. At this point, both versions are identical except for the version number. Edit the `version.txt` file to make this change, and then
commit it to the repository.
### Generate the API documentation for `next`
First, build the `next` binary in `build/cmake`, so that API documentation tools have a correct version of HTML Tidy to work with. Perform a `git clean -xdf` in this directory prior to building for good measure.
After building, `cd` to the correct directory and build the documentation:
~~~
cd html-tidy.org.api/tidy-html5-doxygen
./build_docs.sh
~~~
Then in the `html-tidy.org.api/tidy-html5-doxygen/output` directory, rename the resulting directory and file to `tidylib_api_next/` and `quickref_next.html`, and move them into `html-tidy.org.api/tidy/`.
### Generate the API documentation for `master`
First, checkout `master` build the binary in `build/cmake`, so that API documentation tools have a correct version of HTML Tidy to work with. Perform a `git clean -xdf` in this directory prior to building for good measure.
After building, `cd` to the correct directory and build the documentation:
~~~
cd html-tidy.org.api/tidy-html5-doxygen
./build_docs.sh
~~~
Move the resulting directory and file into `html-tidy.org.api/tidy/` directly.
### Update the https://api.html-tidy.org/ website with the new API documentation
Check the copyright dates in `_includes/footer.md`.
~~~
cd html-tidy.org.api/
git add .
git commit -m "Added API documentation for master and next."
git push
~~~
### Update the https://www.html-tidy.org/ website with the new release version
Check the copyright dates in `_includes/footer.md`.
Update `html-tidy.org/homepage/_posts/1970-01-01-htmltidy.md` for the current release version and release year.
~~~
cd html-tidy.org/
git add .
git commit -m "Added API documentation for master and next."
git push
~~~
### Push all of the changes
Back in `tidy-html5/`
~~~
git checkout master
git push
git push origin <tag_name>
git checkout next
git push
~~~
### Build binaries
This is OS specific.
### Create a Github release per the Git tag created above
Do this on Github.
### Post the binaries in the release
Post the binaries here.
### Update the https://binaries.html-tidy.org/ website
Modify the files to point to the binaries in the Github releases.

72
README/TESTING.md Normal file
View file

@ -0,0 +1,72 @@
# Testing
Its critical that changes you introduce do not cause regressions, i.e., that
Tidys output remains consistent with the introduction of your changes, except
for very specific circumstances.
Additionally, changes that you introduce to Tidy must usually be accompanied by
one or more test cases demonstrating the new feature or changed behavior.
Both of these concerns can be addressed with the Tidy repositorys automated
regression testing features, which are enabled by Github Actions. Any pull
request you make will automatically test your PR against the existing set of
test cases, and any failures are prima facie grounds for rejecting the PR.
You _must_ test your changes locally using the tools and test cases provided in
the `regression_testing/` directory prior to submitting a PR, including adding
test cases to this directory as needed.
## Changes to Existing Output
If your changes affect existing output, its critical to understand _why_, and
if necessary, regenerate the `-expects` files so that the regression testing
tool will pass with your new changes. These `-expects` changes, of course,
become part of your Pull Request, and will be subject to review and conversation
in the Pull Request thread.
If you do cause such regressions, please be prepared to defend why they are
needed.
## New Tests
If youre adding new features to Tidy, code reviewers need to be able to see the
intended effect of your changes via some type of demonstration. As such, please
write at least one test case in `github-cases` and put the expected results in
`github-expects`. These also constitute a part of your Pull Request, and more
importantly, will become part of the standard regression testing suite once the
PR is merged.
Try to keep your test case(s) as succint as possible, and do try to put some HTML
comments in the file explaining the purpose of the test case, and if applicable,
the Github issue and/or PR number.
Note that the files generated in `github-results` for your new test cases are
suitable for use in `github-expects` when you are satisfied with the results.
A sample `case-123a@0.html` might represent issue #123, test **a** in a series
of multiple tests for this issue number, expecting Tidy exit code 0, and might
look something like this:
```
<!DOCTYPE html>
<html>
<!--
This test case represents HTML Tidy issue #123, and demonstrates
the use of new feature #xxx. Tidy should exit with status code 0.
The reason this change is needed is because WHATWG suddently
determined that a standards change #yyyy impacts us because of zzz.
-->
<head>
<title>Case #123a</title>
</head>
<p>The quick brown fox jumps over the lazy dog.<//p>
<body>
</body>
</html>
```
## Regression Testing Specifics
The regression testing mechanism is described more fully in [regression_testing/README.md](../regression_testing/README.md).

View file

@ -1,216 +0,0 @@
# Version history at 2017/11/25
5.6.0 b869049a9f Geoff McLane Sat Nov 25 14:50:00 2017 +0100
5.5.86 87dbccdb1b Jim Derry Wed Nov 22 12:34:33 2017 -0500
5.5.85 19e8796a5b Geoff McLane Wed Nov 22 15:01:44 2017 +0100
5.5.84 c2c7b1dab2 Jim Derry Mon Nov 20 09:32:08 2017 -0500
5.5.83 9e09f1a722 Jim Derry Mon Nov 20 09:29:51 2017 -0500
5.5.82 302660e3cb Jim Derry Mon Nov 20 09:28:48 2017 -0500
5.5.81 b91c728c81 Jim Derry Sun Nov 19 15:46:40 2017 -0500
5.5.80 ac27e0c16e Jim Derry Fri Nov 17 21:52:26 2017 -0500
5.5.79 f5dfd31a76 Jim Derry Fri Nov 17 21:30:40 2017 -0500
5.5.78 18874e0b10 Jim Derry Fri Nov 17 20:38:45 2017 -0500
5.5.77 d6414a69ae Geoff McLane Thu Nov 9 19:35:25 2017 +0100
5.5.76 acd3c6c47e Jim Derry Wed Nov 1 15:07:03 2017 -0400
5.5.75 9c4b040771 Jim Derry Sun Oct 29 15:05:53 2017 -0400
5.5.74 7beb591cf7 Geoff McLane Sun Oct 29 18:32:41 2017 +0100
5.5.73 b243e0f30a Jim Derry Thu Oct 26 19:19:56 2017 -0400
5.5.72 6ffb71c2bc Jim Derry Thu Oct 26 14:26:53 2017 -0400
5.5.71 504d2b3466 Jim Derry Wed Oct 25 19:59:14 2017 -0400
5.5.70 4b1c048ee5 Jim Derry Fri Oct 20 07:46:00 2017 -0400
5.5.69 a03ddc03a0 Jim Derry Thu Oct 19 20:33:17 2017 -0400
5.5.68 492c9fb74b Jim Derry Thu Oct 19 20:11:26 2017 -0400
5.5.67 a354eff596 Jim Derry Thu Oct 19 17:41:35 2017 -0400
5.5.66 6dd7919d16 Jim Derry Thu Oct 19 17:38:33 2017 -0400
5.5.65 b190e8724a Jim Derry Thu Oct 19 17:22:47 2017 -0400
5.5.64 6309abacda Jim Derry Thu Oct 19 17:17:33 2017 -0400
5.5.63 0f86647741 Geoff McLane Mon Oct 9 01:27:07 2017 +0200
5.5.62 16aa474f6a Jim Derry Sun Oct 8 11:06:41 2017 -0400
5.5.61 010892c020 Jim Derry Sat Oct 7 14:59:07 2017 -0400
5.5.60 f26b198213 Jim Derry Sat Oct 7 14:07:12 2017 -0400
5.5.59 4e6d76eb01 Jim Derry Fri Oct 6 09:41:54 2017 -0400
5.5.58 f1cd84f853 Jim Derry Thu Oct 5 19:29:12 2017 -0400
5.5.57 c71b8115cc Jim Derry Thu Oct 5 15:09:18 2017 -0400
5.5.56 7d35bb14ef Jim Derry Wed Oct 4 11:15:45 2017 -0400
5.5.55 084ed21735 Jim Derry Wed Oct 4 11:00:04 2017 -0400
5.5.54 8f47c024ac Jim Derry Tue Oct 3 08:26:51 2017 -0400
5.5.53 1e88cf2ebc Jim Derry Mon Oct 2 13:35:26 2017 -0400
5.5.52 3efc0f92a5 Jim Derry Mon Oct 2 13:31:35 2017 -0400
5.5.51 e959c22087 Jim Derry Mon Oct 2 13:27:42 2017 -0400
5.5.50 4bcff9f64e Jim Derry Mon Oct 2 13:21:26 2017 -0400
5.5.49 78b6154a85 Jim Derry Mon Oct 2 13:15:17 2017 -0400
5.5.48 40ca09c189 Jim Derry Mon Oct 2 13:10:45 2017 -0400
5.5.47 2860160b54 Jim Derry Sun Oct 1 10:42:18 2017 -0400
5.5.46 d6c974b672 Jim Derry Fri Sep 29 10:23:45 2017 -0400
5.5.45 021d32b3a1 Jim Derry Mon Sep 25 21:17:21 2017 -0400
5.5.44 cd9d46b53d Jim Derry Sat Sep 23 19:21:58 2017 -0400
5.5.43 c30f8537a7 Jim Derry Thu Sep 21 07:39:16 2017 -0400
5.5.42 9614019e8c Jim Derry Wed Sep 20 17:57:42 2017 -0400
5.5.42 2a4dc1af52 Jim Derry Wed Sep 20 17:47:27 2017 -0400
5.5.40 53cd1c8113 Geoff McLane Wed Sep 20 19:13:39 2017 +0200
5.5.39 c38e48baeb Geoff McLane Wed Sep 20 17:04:54 2017 +0200
5.5.37-exp-jsd 51e2e0f3bd Jim Derry Thu Sep 7 21:06:44 2017 -0400
5.5.38 a79458a0ef Jim Derry Fri Sep 8 19:41:25 2017 -0400
5.5.37 5df01d314e Jim Derry Thu Aug 31 13:18:11 2017 -0400
5.5.36 2c82cfa23b Jim Derry Thu Aug 31 12:55:32 2017 -0400
5.5.35 5cd2603a68 Jim Derry Wed Aug 30 20:04:03 2017 -0400
5.5.34 7badd93417 Jim Derry Mon Aug 28 14:29:02 2017 -0400
5.5.33 f28e809a36 Jim Derry Mon Aug 28 10:03:38 2017 -0400
5.5.32 a26c4e0a18 Jim Derry Sat Aug 26 12:50:33 2017 -0400
5.5.31 e48b06b8c0 Geoff McLane Tue May 30 18:17:13 2017 +0200
5.5.30 dbe8a6a767 Geoff McLane Mon May 29 14:28:34 2017 +0200
5.5.29 34d37002c9 Geoff McLane Sat May 27 18:26:14 2017 +0200
5.5.28 59a06293ab Geoff McLane Sat May 27 16:36:08 2017 +0200
5.5.27 5d057abdcb Jim Derry Sun May 21 14:33:10 2017 -0400
5.5.26 47c27ecf8e Jim Derry Sun May 21 14:29:13 2017 -0400
5.5.25 b475ca593d Jim Derry Sun May 21 14:24:57 2017 -0400
5.5.24 8a639bf91b Jim Derry Sat May 13 22:25:12 2017 -0400
5.5.23 5fad2252d2 Jim Derry Sat May 13 22:20:36 2017 -0400
5.5.22 86338b2634 Jim Derry Sat May 13 19:51:28 2017 -0400
5.5.21 66bed8b9a0 Jim Derry Thu May 11 15:25:46 2017 -0400
5.5.20 590a030756 Jim Derry Mon May 8 17:37:55 2017 -0400
5.5.19 6f2fb6e0e7 Jim Derry Sun May 7 15:03:04 2017 -0400
5.5.18 61d19c9a86 Geoff McLane Sat May 6 15:37:56 2017 +0200
5.5.17 1257a49823 Geoff McLane Sat May 6 15:26:09 2017 +0200
5.5.16 594275712c Geoff McLane Sat May 6 14:51:19 2017 +0200
5.5.15 f9edab1c33 Geoff McLane Sat May 6 14:21:13 2017 +0200
5.5.14 72612b6ca3 Geoff McLane Sun Apr 9 02:08:58 2017 +0200
5.5.13 19c0655333 Jim Derry Fri Mar 31 13:36:15 2017 -0400
5.5.12 17354ff927 Geoff McLane Fri Mar 24 15:26:09 2017 +0100
5.5.11 1a66455052 Jim Derry Wed Mar 22 16:14:17 2017 -0400
5.5.10 be5e80f5a7 Jim Derry Mon Mar 20 12:22:45 2017 -0400
5.5.9 3b9fd6bd5e Jim Derry Sun Mar 19 15:44:18 2017 -0400
5.5.8 068e6bf42a Jim Derry Sun Mar 19 09:53:16 2017 -0400
5.5.7 1dbacc9c43 Jim Derry Sun Mar 19 08:09:43 2017 -0400
5.5.6 96bb67045f Jim Derry Mon Mar 13 13:31:35 2017 -0400
5.5.5 4dc8a2cf9a Jim Derry Fri Mar 10 08:24:23 2017 -0500
5.5.4 b0bd27e9c1 Jim Derry Thu Mar 9 13:01:39 2017 -0500
5.5.3 b047e32a18 Jim Derry Tue Mar 7 20:18:06 2017 -0500
5.5.2 1ebae18c9a Jim Derry Mon Mar 6 17:09:33 2017 -0500
5.5.1 b5885dee46 Jim Derry Mon Mar 6 07:07:40 2017 -0500
5.5.0 3e23225288 Geoff McLane Wed Mar 1 15:33:22 2017 +0100
5.4.0 17b33753ae Geoff McLane Wed Mar 1 15:04:22 2017 +0100
5.3.21 c39b1cb423 Geoff McLane Wed Mar 1 14:51:53 2017 +0100
5.3.20 d07134140a Geoff McLane Fri Feb 24 14:39:46 2017 +0100
5.3.19 13c92bce38 Geoff McLane Thu Feb 23 16:29:44 2017 +0100
5.3.18 b97b2f0d45 Geoff McLane Thu Feb 23 15:28:40 2017 +0100
5.3.18 b7c84b1b57 Jim Derry Mon Feb 13 08:49:06 2017 -0500
5.3.16 73bf561645 Geoff McLane Sun Feb 12 17:40:48 2017 +0100
5.3.16I483 259d330780 Geoff McLane Wed Feb 1 13:46:25 2017 +0100
5.3.15 10fd44d101 Geoff McLane Sun Jan 29 19:21:46 2017 +0100
5.3.14 0cbbd55535 Geoff McLane Mon Jan 9 17:07:13 2017 +0100
5.3.13 2243510592 Geoff McLane Sun Jan 8 18:24:17 2017 +0100
5.3.12 fd0ccb2bbf Geoff McLane Sun Oct 30 23:37:31 2016 +0100
5.3.11 4edbc2424b Geoff McLane Sun Sep 11 17:09:09 2016 +0200
5.3.10 f1ac2dba58 Geoff McLane Sun Sep 11 15:50:42 2016 +0200
5.3.9 d2fc252598 Geoff McLane Thu Aug 4 15:54:14 2016 +0200
5.3.8 09caae3b9c Geoff McLane Fri Jul 29 02:58:24 2016 +0200
5.3.7 4a483fd066 Geoff McLane Mon Jul 11 15:32:55 2016 +0200
5.3.6 3b73cc12c5 Geoff McLane Mon Jul 11 00:26:07 2016 +0200
5.3.5 d332908e5d Geoff McLane Fri Jul 1 15:54:10 2016 +0200
5.3.4 6b3b1624ea Geoff McLane Thu Jun 30 18:36:10 2016 +0200
5.3.3 eca7688941 Geoff McLane Sat Jun 18 18:57:09 2016 +0200
5.3.2 676b36eff5 Geoff McLane Sat Jun 18 18:26:23 2016 +0200
5.3.1 60c1dd1744 Geoff McLane Sat Apr 16 20:16:50 2016 +0200
5.3.0 fdf2169ebf Geoff McLane Thu Apr 7 16:36:06 2016 +0200
5.1.52 0db9b32e22 Geoff McLane Mon Apr 4 18:14:33 2016 +0200
5.1.51 3e5e07ea18 Geoff McLane Thu Mar 31 14:50:47 2016 +0200
5.1.50 005f36106a Geoff McLane Wed Mar 30 16:28:45 2016 +0200
5.1.49 c19d221ddc Geoff McLane Wed Mar 30 14:19:07 2016 +0200
5.1.48 aa1fc197d5 Geoff McLane Sun Mar 27 19:57:41 2016 +0200
5.1.47fr fb95ea2ed2 Geoff McLane Wed Mar 23 19:53:51 2016 +0100
5.1.47 3c8d9bf3f6 Geoff McLane Sun Mar 20 01:03:25 2016 +0100
5.1.46 8a31aad0e3 Geoff McLane Sat Mar 19 19:32:39 2016 +0100
5.1.45-Exp3 06215769aa Geoff McLane Fri Mar 18 18:48:08 2016 +0100
5.1.45-Exp2 98f32ddebb Geoff McLane Sun Mar 6 17:38:48 2016 +0100
5.1.45-Exp1 b83d5ffb03 Geoff McLane Sat Mar 5 17:40:32 2016 +0100
5.1.45 b2c591c138 Geoff McLane Fri Mar 4 19:39:21 2016 +0100
5.1.44 1dd06aa4b2 Geoff McLane Mon Feb 29 19:59:41 2016 +0100
5.1.43 9a80938246 Geoff McLane Mon Feb 29 18:49:52 2016 +0100
5.1.42 b41318724c Geoff McLane Wed Feb 24 19:24:46 2016 +0100
5.1.41issue-373 9ba80b864e Geoff McLane Thu Feb 18 15:12:11 2016 +0100
5.1.41 be0e5f3a8b Jim Derry Thu Feb 18 10:20:40 2016 +0800
5.1.40 6c181d5689 Jim Derry Wed Feb 17 12:43:44 2016 +0800
5.1.40 97abad0c05 Jim Derry Tue Feb 16 11:11:36 2016 +0800
5.1.38 7df66c45da Jim Derry Tue Feb 16 10:20:34 2016 +0800
5.1.36_attr_phase2 2ade3357a9 Jim Derry Sat Feb 13 11:31:16 2016 +0800
5.1.36_attr_phase1 429703dce4 Jim Derry Fri Feb 12 19:34:19 2016 +0800
5.1.36 0f3cab930a Geoff McLane Mon Feb 1 20:10:23 2016 +0100
5.1.35 e8ca2aa5f3 Geoff McLane Mon Feb 1 19:45:43 2016 +0100
5.1.34 dca50d4077 Jim Derry Sat Jan 30 16:02:00 2016 +0800
5.1.33localizing d505869910 Jim Derry Fri Jan 15 12:06:15 2016 +0800
5.1.33 ce6c7de2d9 Jim Derry Thu Jan 7 11:52:58 2016 +0800
5.1.32 9942856164 Geoff McLane Mon Dec 7 12:42:13 2015 +0100
5.1.31 5f8aac98df Geoff McLane Sat Dec 5 13:02:33 2015 +0100
5.1.30 121fe86bc6 Geoff McLane Fri Dec 4 18:32:48 2015 +0100
5.1.29 34eb16b5da Geoff McLane Thu Dec 3 19:38:13 2015 +0100
5.1.28 4c848c57bc Jim Derry Sun Nov 29 13:24:01 2015 +0800
5.1.28 501c3fb616 Jim Derry Fri Nov 27 09:47:09 2015 +0800
5.1.27 db4f6473ed Geoff McLane Thu Nov 26 00:58:07 2015 +0100
5.1.26 0ef4493ae8 Geoff McLane Tue Nov 24 19:29:52 2015 +0100
5.1.25 2388fb0175 Geoff McLane Sun Nov 22 18:46:00 2015 +0100
5.1.24 496c81c48d Geoff McLane Wed Nov 18 20:02:54 2015 +0100
5.1.23 06e4311189 Geoff McLane Wed Nov 18 17:08:26 2015 +0100
5.1.22 15563fff51 Geoff McLane Mon Nov 16 18:55:20 2015 +0100
5.1.21 c9699d3820 Geoff McLane Sat Nov 14 15:24:19 2015 +0100
5.1.20 e5703803c8 Geoff McLane Thu Nov 5 15:22:21 2015 +0100
5.1.19 9f9ca4c774 Jim Derry Thu Nov 5 09:38:01 2015 +0800
5.1.18 02909b5fe3 Jim Derry Tue Nov 3 11:37:28 2015 +0800
5.1.17 67c86cbe7f Geoff McLane Wed Oct 28 16:11:24 2015 +0100
5.1.16 ba1f1e00be Geoff McLane Tue Oct 20 15:06:05 2015 +0200
5.1.15 a94df6c0f9 Geoff McLane Wed Oct 14 16:57:41 2015 +0200
5.1.14 fa43957b6d Geoff McLane Sun Sep 27 17:38:08 2015 +0200
5.1.13 7cf9fc2906 Geoff McLane Fri Sep 25 13:00:06 2015 +0200
5.1.12 f4113a8643 Geoff McLane Mon Sep 21 12:34:29 2015 +0200
5.1.11 b2118fa09a Geoff McLane Sat Sep 19 14:59:58 2015 +0200
5.1.10 d541405a2a Geoff McLane Wed Sep 16 13:17:50 2015 +0200
5.1.9 1c187f8179 Geoff McLane Thu Sep 10 15:02:38 2015 +0200
5.1.8 87e0e11b49 Geoff McLane Fri Sep 4 15:03:08 2015 +0200
5.1.7 fd056e353b Geoff McLane Sat Aug 22 14:04:38 2015 +0200
5.1.6 5380eb0413 Geoff McLane Sat Aug 22 14:00:56 2015 +0200
5.1.6 1d67dc940a Geoff McLane Mon Aug 10 18:42:58 2015 +0200
5.1.4 4e7c52607c Geoff McLane Fri Jul 31 13:44:46 2015 +0200
5.1.3 6a24f50466 Geoff McLane Thu Jul 30 14:52:07 2015 +0200
5.1.2 750f31704b Geoff McLane Fri Jul 17 19:16:04 2015 +0200
5.1.2 33494a4aea Geoff McLane Tue Jul 14 11:27:15 2015 +0200
5.1.1 7f9df1c746 Geoff McLane Mon Jul 13 12:18:10 2015 +0200
5.1.0 2da67a2bbc Geoff McLane Mon Jul 13 02:08:37 2015 +0200
5.0.0 1e70fc6f15 Geoff McLane Tue Jun 30 19:59:00 2015 +0200
4.9.37 daef037156 Geoff McLane Wed Jun 24 13:12:31 2015 +0200
4.9.36 b65988c95a Geoff McLane Sun Jun 21 19:50:56 2015 +0200
4.9.35 7b7fbce9ab Geoff McLane Tue Jun 9 12:32:26 2015 +0200
4.9.34 bea5bb700f Geoff McLane Mon Jun 8 13:53:38 2015 +0200
4.9.33 f67300963e Geoff McLane Sat Jun 6 11:06:37 2015 +0200
4.9.32 544f9876cc Geoff McLane Thu Jun 4 13:21:00 2015 +0200
4.9.31 0c96ed8af4 Geoff McLane Wed Jun 3 20:27:01 2015 +0200
4.9.30 dde78c2dbf Geoff McLane Sun May 24 15:23:59 2015 +0200
4.9.29 3686bc5390 Geoff McLane Fri May 22 16:22:27 2015 +0200
4.9.28wt 3f33ba2d88 Geoff McLane Fri May 15 16:17:46 2015 +0200
4.9.28 1c9970deb4 Geoff McLane Wed May 13 12:37:20 2015 +0200
4.9.27 d8a4498803 Geoff McLane Tue May 12 13:18:16 2015 +0200
4.9.26 6b66b65ec8 Geoff McLane Wed Apr 22 21:27:23 2015 +0200
4.9.25 f5eb2cf26a Geoff McLane Sat Apr 11 15:22:55 2015 +0200
4.9.24 ca06201c3a Geoff McLane Wed Apr 8 18:47:08 2015 +0200
4.9.23 3585d4c31a Geoff McLane Thu Mar 19 19:14:27 2015 +0100
4.9.22 47df5fddbc Geoff McLane Thu Mar 19 16:32:19 2015 +0100
4.9.21 09fa036b31 Geoff McLane Fri Mar 13 19:48:31 2015 +0100
4.9.20 90c9e81ba1 Geoff McLane Fri Mar 6 19:14:24 2015 +0100
4.9.19 7ffcce2241 Geoff McLane Fri Mar 6 13:09:12 2015 +0100
4.9.18 2e383c6029 Geoff McLane Sat Feb 28 20:32:38 2015 +0100
4.9.17 a9361a1c5b Geoff McLane Tue Feb 24 17:53:58 2015 +0100
4.9.16 25d38e1dcf Geoff McLane Tue Feb 24 15:07:36 2015 +0100
4.9.15 7bf364624f Geoff McLane Thu Feb 12 15:38:06 2015 +0100
4.9.14 8b362b5f37 Geoff McLane Tue Feb 10 15:30:35 2015 +0100
4.9.13 97470ce459 Geoff McLane Sat Feb 7 13:57:31 2015 +0100
4.9.12 0cf21fb559 Geoff McLane Sat Feb 7 13:43:09 2015 +0100
4.9.11 bef3b08c18 Geoff McLane Fri Feb 6 19:26:45 2015 +0100
4.9.10 906d858f9e Geoff McLane Thu Feb 5 19:03:25 2015 +0100
4.9.9 383a901990 Geoff McLane Thu Feb 5 12:22:14 2015 +0100
4.9.8 5f470763c5 Geoff McLane Tue Feb 3 13:39:51 2015 +0100
4.9.7 d38c5c5d78 Geoff McLane Mon Feb 2 17:37:49 2015 +0100
4.9.6 201f3cb49e Geoff McLane Sun Feb 1 18:36:30 2015 +0100
4.9.5 8497326dc3 Geoff McLane Sun Feb 1 16:08:31 2015 +0100
4.9.4 22a3924484 Geoff McLane Sun Feb 1 14:39:51 2015 +0100
4.9.3 de97628f8f Jim Derry Sun Feb 1 14:20:41 2015 +0800
4.9.3 362c71ee2e Jim Derry Sat Jan 31 18:11:26 2015 +0800
4.9.2 e2cbd9e89f Geoff McLane Thu Jan 29 18:25:57 2015 +0100
# eof

View file

@ -33,3 +33,4 @@ tidy1.xsl
tidy.pc
*.vcproj
.pkg
Info.plist

View file

@ -4,11 +4,15 @@
@set TMPPRJ=tidy
@set TMPSRC=..\..
@set TMPBGN=%TIME%
@set TMPINS=..\..\..\software
@set TMPINS=D:\Projects\3rdParty
@set TMPLOG=bldlog-1.txt
@set DOPAUSE=1
@set TMPGEN=Visual Studio 16 2019
@set TMPBR=next
@set TMPINDBG=0
@set TMPOPTS=-DCMAKE_INSTALL_PREFIX=%TMPINS%
@set TMPOPTS=-G "%TMPGEN%" -A Win32
@set TMPOPTS=%TMPOPTS% -DCMAKE_INSTALL_PREFIX=%TMPINS%
@set TMPOPTS=%TMPOPTS% -DBUILD_SHARED_LIB=ON
:RPT
@ -23,9 +27,11 @@
:GOTCMD
@call chkmsvc %TMPPRJ%
@call chkbranch master
@if "%TMPBR%x" == "x" goto DNBR
@call chkbranch %TMPBR%
:DNBR
@echo Build %DATE% %TIME% > %TMPLOG%
@echo Build %TMPPRJ% 32-bits %DATE% %TIME%, in %CD%, to %TMPLOG% > %TMPLOG%
@if NOT EXIST %TMPSRC%\nul goto NOSRC
@ -57,6 +63,11 @@
@call elapsed %TMPBGN%
@echo Appears a successful build... see %TMPLOG%
@echo Note install location %TMPINS%
@if "%TMPINDBG%x" == "1x" (
@echo Will install Debug and Release
) else {
@echo Will only intall Release
)
@echo.
@REM ##############################################
@ -86,10 +97,12 @@
:DOINST
@echo Proceeding with INSTALL...
@echo.
@if NOT "%TMPINDBG%x" == "1x" goto DNDBGIN
@echo Doing: 'cmake --build . --config Debug --target INSTALL'
@echo Doing: 'cmake --build . --config Debug --target INSTALL' >> %TMPLOG% 2>&1
@cmake --build . --config Debug --target INSTALL >> %TMPLOG% 2>&1
@if ERRORLEVEL 1 goto ERR4
:DNDBGIN
@echo Doing: 'cmake --build . --config Release --target INSTALL'
@echo Doing: 'cmake --build . --config Release --target INSTALL' >> %TMPLOG% 2>&1

139
build/cmake/gen-html.sh Executable file
View file

@ -0,0 +1,139 @@
#!/bin/sh
#< gen-html.sh 2021/03/26, from gen-html.bat
BN=`basename $0`
ask()
{
pause
if [ ! "$?" = "0" ]; then
exit 1
fi
}
# @REM Build HTML from log of 'version.txt'
# @REM Versify the tools used
echo "$BN: Doing: 'verhist.pl -? >/dev/null'"
verhist.pl -? >/dev/null
if [ ! "$?" = "0" ]; then
echo "Unable to run 'verhist.pl'! *** FIX ME ***"
exit 1
fi
echo "$BN: Doing: 'emailobfuscate.pl -? >/dev/null'"
emailobfuscate.pl -? >/dev/null
if [ ! "$?" = "0" ]; then
echo "Unable to run 'emailobfuscate.pl'! *** FIX ME ***"
exit 1
fi
TMPFIL1="../../version.txt"
if [ ! -f "$TMPFIL1" ]; then
echo "Can NOT locate $TMPFIL1, in $(pwd) - *** FIX ME ***"
exit 1
fi
echo "$BN: Doing: 'dirmin $TMPFIL1'"
ls -l "$TMPFIL1"
# TMPVER=$(cat $TMPFIL1)
TMPCNT=0
while read -r a; do
TMPCNT=`expr $TMPCNT + 1`;
if [ ! -z "$a" ]; then
echo "$TMPCNT: '$a'"
if [ "$TMPCNT" = "1" ]; then
export TMPVER="$a";
fi
break;
fi
done < $TMPFIL1
echo "Current version '$TMPVER' ..."
TMPLOG1="../../../temp-$TMPVER.log"
TMPLOG2="../../../temp2-$TMPVER.log"
TMPLOG3="../../../temp3-$TMPVER.log"
if [ ! -f "$TMPLOG1" ]; then
echo "$BN: Doing: 'git log -p $TMPFIL1 > $TMPLOG1'"
git log -p $TMPFIL1 > $TMPLOG1
if [ ! -f "$TMPLOG1" ]; then
echo "Gen of $TMPLOG1 FAILED! *** FIX ME ***"
exit 1
fi
fi
echo "$BN: Got log 1 '$TMPLOG1' ..."
ls -l "$TMPLOG1"
if [ ! -f "$TMPLOG2" ]; then
echo "$BN: Doing: 'verhist.pl $TMPLOG1 -o $TMPLOG2'"
verhist.pl $TMPLOG1 -o $TMPLOG2
if [ ! -f "$TMPLOG2" ]; then
echo "Gen of $TMPLOG2 FAILED! *** FIX ME ***"
exit 1
fi
fi
echo "$BN: Got log 2 '$TMPLOG2' ..."
ls -l $TMPLOG2
TMPV="$1"
if [ -z "$TMPV" ]; then
echo "Give the cut-off version, like 5.6.0, to continue.."
exit 1
fi
echo "$BN: Doing: 'grep $TMPV $TMPLOG2'"
grep $TMPV $TMPLOG2
if [ ! "$?" = "0" ]; then
echo "Failed to find '$TMPV'... check the file '$TMPLOG2'"
exit 1
fi
TMPD="$2"
if [ -z "$TMPD" ]; then
echo "Give the DATE of the cut-off, like 'Sat Nov 25 14:50:00 2017 +0100', to continue..."
exit 1
fi
if [ ! -f "$TMPLOG3" ]; then
echo "$BN: Doing: 'git log "--decorate=full" "--since=$TMPD" > $TMPLOG3'"
git log "--decorate=full" "--since=$TMPD" > $TMPLOG3
if [ ! -f "$TMPLOG3" ]; then
echo "Failed to generate 'git log ...' - *** FIX ME ***"
exit 1
fi
fi
echo "$BN: Got log 3 '$TMPLOG3' ..."
ls -l "$TMPLOG3"
# @REM at last generate the release HTML
TMPHTM="../../../temp-$TMPVER.html"
if [ ! -f "$TMPHTM" ]; then
echo "$BN: Doing: 'emailobfuscate.pl $TMPLOG3 -o $TMPHTM -a $TMPVER -i'"
emailobfuscate.pl $TMPLOG3 -o $TMPHTM -a $TMPVER -i
if [ ! -f "$TMPHTM" ]; then
echo "FAILED to generate $TMPHTM! *** FIX ME ***"
exit 1
fi
fi
echo "$BN: Got HTML file '$TMPHTM' ..."
ls -l "$TMPHTM"
echo "$BN: Generation appears ok, check file '$TMPHTM' in browser..."
### start $TMPHTM
TMPVFIL="../../README/verhist.log"
if [ ! -f "$TMPVFIL" ]; then
echo ""
echo "$BN: *** WARNING *** - Missing existing '$TMPVFIL'"
echo ""
fi
echo ""
echo "$BN: Is all OK, final actions, for release are -"
echo "copy $TMPLOG2 to $TMPVFIL - push this to repo..."
echo "copy $TMPHTM to the binaries repo..."
echo ""
# @REM eof

View file

@ -21,3 +21,5 @@ install_manifest.txt
_CPack_Packages/*
dir
*.VC.db
.vs/*
tidy.pc

View file

@ -0,0 +1,202 @@
@setlocal
@REM 20170702 - Check branch
@set TMPBR=next
@REM 20161002 - Change to msvc140 build
@set VCVERS=14
@set GENERATOR=Visual Studio %VCVERS% Win64
@REM 20160324 - Change to relative, and use choice
@set TMPPRJ=tidy
@echo Build %TMPPRJ% project, in 64-bits
@set TMPLOG=bldlog-1.txt
@set BLDDIR=%CD%
@set TMPROOT=..\..\..
@set SET_BAT=%ProgramFiles(x86)%\Microsoft Visual Studio %VCVERS%.0\VC\vcvarsall.bat
@if NOT EXIST "%SET_BAT%" goto NOBAT
@REM if NOT EXIST %TMPROOT%\nul goto NOROOT
@set TMPSRC=..\..
@if NOT EXIST %TMPSRC%\CMakeLists.txt goto NOCM
@set DOPAUSE=1
@if /I "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" (
@set TMPINST=%TMPROOT%\software.x64
) ELSE (
@if /I "%PROCESSOR_ARCHITECTURE%" EQU "x86_64" (
@set TMPINST=%TMPROOT%\software.x64
) ELSE (
@echo ERROR: Appears 64-bit is NOT available... aborting...
@goto ISERR
)
)
@if NOT EXIST %TMPINST%\nul goto NOINST
@echo Doing build output to %TMPLOG%
@echo Doing build output to %TMPLOG% > %TMPLOG%
@echo Doing: 'call "%SET_BAT%" %PROCESSOR_ARCHITECTURE%'
@echo Doing: 'call "%SET_BAT%" %PROCESSOR_ARCHITECTURE%' >> %TMPLOG%
@call "%SET_BAT%" %PROCESSOR_ARCHITECTURE% >> %TMPLOG% 2>&1
@if ERRORLEVEL 1 goto ERR0
@REM call setupqt64
@cd %BLDDIR%
@REM :DNARCH
@REM ############################################
@REM NOTE: SPECIAL INSTALL LOCATION
@REM Adjust to suit your environment
@REM ##########################################
@REM set TMPINST=F:\Projects\software.x64
@set TMPOPTS=-DCMAKE_INSTALL_PREFIX=%TMPINST%
@set TMPOPTS=%TMPOPTS% -G "%GENERATOR%"
@REM set TMPOPTS=%TMPOPTS% -DTIDY_CONFIG_FILE="C:\MDOS\tidy5.cfg"
@REM set TMPOPTS=%TMPOPTS% -DTIDY_USER_CONFIG_FILE="C:\MDOS\tidy5.cfg"
@set TMPOPTS=%TMPOPTS% -DBUILD_SHARED_LIB:BOOL=OFF
:RPT
@if "%~1x" == "x" goto GOTCMD
@if "%~1x" == "NOPAUSEx" (
@set DOPAUSE=0
) else (
@set TMPOPTS=%TMPOPTS% %1
)
@shift
@goto RPT
:GOTCMD
@call chkmsvc %TMPPRJ%
@call chkbranch %TMPBR%
@if ERRORLEVEL 1 goto BADBR
:GOTBR
@echo Begin %DATE% %TIME%, output to %TMPLOG%
@echo Begin %DATE% %TIME% >> %TMPLOG%
@echo Doing: 'cmake %TMPSRC% %TMPOPTS%'
@echo Doing: 'cmake %TMPSRC% %TMPOPTS%' >> %TMPLOG%
@cmake %TMPSRC% %TMPOPTS% >> %TMPLOG% 2>&1
@if ERRORLEVEL 1 goto ERR1
@echo Doing: 'cmake --build . --config debug'
@echo Doing: 'cmake --build . --config debug' >> %TMPLOG%
@cmake --build . --config debug >> %TMPLOG%
@if ERRORLEVEL 1 goto ERR2
@echo Doing: 'cmake --build . --config release'
@echo Doing: 'cmake --build . --config release' >> %TMPLOG%
@cmake --build . --config release >> %TMPLOG% 2>&1
@if ERRORLEVEL 1 goto ERR3
:DNREL
@echo Appears a successful build
@echo Note install location %TMPINST%
@echo.
@REM ##############################################
@REM Check if should continue with install
@REM ##############################################
@if "%DOPAUSE%x" == "0x" goto DOINST
@choice /? >nul 2>&1
@if ERRORLEVEL 1 goto NOCHOICE
@choice /D N /T 10 /M "Pausing for 10 seconds. Def=N"
@if ERRORLEVEL 2 goto GOTNO
@goto DOINST
:NOCHOICE
@echo Appears OS does not have the 'choice' command!
@ask *** CONTINUE with install? *** Only y continues
@if ERRORLEVEL 2 goto NOASK
@if ERRORLEVEL 1 goto DOINST
@echo Skipping install to %TMPINST% at this time...
@echo.
@goto END
:NOASK
@echo 'ask' utility not found in path...
@echo.
@echo *** CONTINUE with install? *** Only Ctrl+c aborts...
@echo.
@pause
:DOINST
@echo Proceeding with INSTALL...
@echo.
@REM cmake -P cmake_install.cmake
@echo Doing: 'cmake --build . --config debug --target INSTALL'
@echo Doing: 'cmake --build . --config debug --target INSTALL' >> %TMPLOG%
@cmake --build . --config debug --target INSTALL >> %TMPLOG% 2>&1
@echo Doing: 'cmake --build . --config release --target INSTALL'
@echo Doing: 'cmake --build . --config release --target INSTALL' >> %TMPLOG%
@cmake --build . --config release --target INSTALL >> %TMPLOG% 2>&1
@fa4 " -- " %TMPLOG%
@echo Done build and install of %TMPPRJ%...
@goto END
:GOTNO
@echo.
@echo No install at this time, but there may be an updexe.bat to copy the EXE to c:\MDOS...
@echo.
@goto END
:NOBAT
@echo Can NOT locate MSVC setup batch "%SET_BAT%"! *** FIX ME ***
@goto ISERR
@REM :NOROOT
@REM @echo Can NOT locate %TMPROOT%! *** FIX ME ***
@REM @goto ISERR
:NOCM
@echo Can NOT locate %TMPSRC%\CMakeLists.txt! *** FIX ME ***
@goto ISERR
:NOINST
@echo Can NOT locate directory %TMPINST%! *** FIX ME ***
@goto ISERR
:ERR0
@echo MSVC 10 setup error
@goto ISERR
:ERR1
@echo cmake config, generation error
@goto ISERR
:ERR2
@echo debug build error
@goto ISERR
:ERR3
@fa4 "mt.exe : general error c101008d:" %TMPLOG% >nul
@if ERRORLEVEL 1 goto ERR32
:ERR33
@echo release build error
@goto ISERR
:ERR32
@echo Stupid error... trying again...
@echo Doing: 'cmake --build . --config release'
@echo Doing: 'cmake --build . --config release' >> %TMPLOG%
@cmake --build . --config release >> %TMPLOG% 2>&1
@if ERRORLEVEL 1 goto ERR33
@goto DNREL
:BADBR
@call git checkout %TMPBR%
@call chkbranch %TMPBR%
@if ERRORLEVEL 1 goto BADBR2
@goto GOTBR
:BADBR2
@call shwbranch
@echo Not on correct branch %TMPBR%
@goto ISERR
:ISERR
@endlocal
@exit /b 1
:END
@endlocal
@exit /b 0
@REM eof

View file

@ -1,56 +1,19 @@
@setlocal
@REM 20170702 - Check branch
@set TMPBR=next
@REM 20161002 - Change to msvc140 build
@set VCVERS=14
@set GENERATOR=Visual Studio %VCVERS% Win64
@REM 20160324 - Change to relative, and use choice
@set TMPVER=1
@set TMPPRJ=tidy
@echo Build %TMPPRJ% project, in 64-bits
@set TMPLOG=bldlog-1.txt
@set BLDDIR=%CD%
@set TMPROOT=..\..\..
@set SET_BAT=%ProgramFiles(x86)%\Microsoft Visual Studio %VCVERS%.0\VC\vcvarsall.bat
@if NOT EXIST "%SET_BAT%" goto NOBAT
@REM if NOT EXIST %TMPROOT%\nul goto NOROOT
@set TMPSRC=..\..
@if NOT EXIST %TMPSRC%\CMakeLists.txt goto NOCM
@set TMPBGN=%TIME%
@set TMPINS=D:\Projects\3rdParty.x64
@set TMPLOG=bldlog-1.txt
@set DOPAUSE=1
@set TMPGEN=Visual Studio 16 2019
@set TMPBR=next
@set TMPINDBG=1
@if /I "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" (
@set TMPINST=%TMPROOT%\software.x64
) ELSE (
@if /I "%PROCESSOR_ARCHITECTURE%" EQU "x86_64" (
@set TMPINST=%TMPROOT%\software.x64
) ELSE (
@echo ERROR: Appears 64-bit is NOT available... aborting...
@goto ISERR
)
)
@if NOT EXIST %TMPINST%\nul goto NOINST
@echo Doing build output to %TMPLOG%
@echo Doing build output to %TMPLOG% > %TMPLOG%
@echo Doing: 'call "%SET_BAT%" %PROCESSOR_ARCHITECTURE%'
@echo Doing: 'call "%SET_BAT%" %PROCESSOR_ARCHITECTURE%' >> %TMPLOG%
@call "%SET_BAT%" %PROCESSOR_ARCHITECTURE% >> %TMPLOG% 2>&1
@if ERRORLEVEL 1 goto ERR0
@REM call setupqt64
@cd %BLDDIR%
@REM :DNARCH
@REM ############################################
@REM NOTE: SPECIAL INSTALL LOCATION
@REM Adjust to suit your environment
@REM ##########################################
@REM set TMPINST=F:\Projects\software.x64
@set TMPOPTS=-DCMAKE_INSTALL_PREFIX=%TMPINST%
@set TMPOPTS=%TMPOPTS% -G "%GENERATOR%"
@REM set TMPOPTS=%TMPOPTS% -DTIDY_CONFIG_FILE="C:\MDOS\tidy5.cfg"
@REM set TMPOPTS=%TMPOPTS% -DTIDY_USER_CONFIG_FILE="C:\MDOS\tidy5.cfg"
@set TMPOPTS=%TMPOPTS% -DBUILD_SHARED_LIB:BOOL=OFF
@set TMPOPTS=-G "%TMPGEN%" -A x64
@set TMPOPTS=%TMPOPTS% -DCMAKE_INSTALL_PREFIX=%TMPINS%
@set TMPOPTS=%TMPOPTS% -DBUILD_SHARED_LIB=ON
:RPT
@if "%~1x" == "x" goto GOTCMD
@ -64,31 +27,48 @@
:GOTCMD
@call chkmsvc %TMPPRJ%
@if "%TMPBR%x" == "x" goto DNBR
@call chkbranch %TMPBR%
@if ERRORLEVEL 1 goto BADBR
:GOTBR
@if ERRORLEVEL 1 goto BAD_BR
:DNBR
@echo Begin %DATE% %TIME%, output to %TMPLOG%
@echo Begin %DATE% %TIME% >> %TMPLOG%
@echo Build %TMPPRJ% 64-bits %DATE% %TIME%, in %CD%, to %TMPLOG% > %TMPLOG%
@echo Doing: 'cmake %TMPSRC% %TMPOPTS%'
@echo Doing: 'cmake %TMPSRC% %TMPOPTS%' >> %TMPLOG%
@cmake %TMPSRC% %TMPOPTS% >> %TMPLOG% 2>&1
@if NOT EXIST %TMPSRC%\nul goto NOSRC
@echo Build source %TMPSRC%... all output to build log %TMPLOG%
@echo Build source %TMPSRC%... all output to build log %TMPLOG% >> %TMPLOG%
@if EXIST build-cmake.bat (
@call build-cmake >> %TMPLOG%
)
@if NOT EXIST %TMPSRC%\CMakeLists.txt goto NOCM
@echo Doing: 'cmake -S %TMPSRC% %TMPOPTS%'
@echo Doing: 'cmake -S %TMPSRC% %TMPOPTS%' >> %TMPLOG% 2>&1
@cmake -S %TMPSRC% %TMPOPTS% >> %TMPLOG% 2>&1
@if ERRORLEVEL 1 goto ERR1
@echo Doing: 'cmake --build . --config debug'
@echo Doing: 'cmake --build . --config debug' >> %TMPLOG%
@cmake --build . --config debug >> %TMPLOG%
@echo Doing: 'cmake --build . --config Debug'
@echo Doing: 'cmake --build . --config Debug' >> %TMPLOG% 2>&1
@cmake --build . --config Debug >> %TMPLOG% 2>&1
@if ERRORLEVEL 1 goto ERR2
@echo Doing: 'cmake --build . --config release'
@echo Doing: 'cmake --build . --config release' >> %TMPLOG%
@cmake --build . --config release >> %TMPLOG% 2>&1
@echo Doing: 'cmake --build . --config Release'
@echo Doing: 'cmake --build . --config Release' >> %TMPLOG% 2>&1
@cmake --build . --config Release >> %TMPLOG% 2>&1
@if ERRORLEVEL 1 goto ERR3
:DNREL
@echo Appears a successful build
@echo Note install location %TMPINST%
@fa4 "***" %TMPLOG%
@call elapsed %TMPBGN%
@echo Appears a successful build... see %TMPLOG%
@echo Note install location %TMPINS%
@if "%TMPINDBG%x" == "1x" (
@echo Will install Debug and Release
) else (
@echo Will only intall Release
)
@echo.
@REM ##############################################
@ -118,80 +98,90 @@
:DOINST
@echo Proceeding with INSTALL...
@echo.
@REM cmake -P cmake_install.cmake
@echo Doing: 'cmake --build . --config debug --target INSTALL'
@echo Doing: 'cmake --build . --config debug --target INSTALL' >> %TMPLOG%
@cmake --build . --config debug --target INSTALL >> %TMPLOG% 2>&1
@if NOT "%TMPINDBG%x" == "1x" goto DNDBGIN
@if EXIST install_manifest.txt @del install_manifest.txt
@echo Doing: 'cmake --build . --config Debug --target INSTALL'
@echo Doing: 'cmake --build . --config Debug --target INSTALL' >> %TMPLOG% 2>&1
@cmake --build . --config Debug --target INSTALL >> %TMPLOG% 2>&1
@if ERRORLEVEL 1 goto ERR4
@if EXIST install_manifest.txt (
@copy install_manifest.txt install_manifest_debug.txt >nul
@call add2installs install_manifest.txt -o %TMPINS%\install_manifest.txt >> %TMPLOG%
)
:DNDBGIN
@echo Doing: 'cmake --build . --config release --target INSTALL'
@echo Doing: 'cmake --build . --config release --target INSTALL' >> %TMPLOG%
@cmake --build . --config release --target INSTALL >> %TMPLOG% 2>&1
@if EXIST install_manifest.txt @del install_manifest.txt
@echo Doing: 'cmake --build . --config Release --target INSTALL'
@echo Doing: 'cmake --build . --config Release --target INSTALL' >> %TMPLOG% 2>&1
@cmake --build . --config Release --target INSTALL >> %TMPLOG% 2>&1
@if ERRORLEVEL 1 goto ERR5
@if EXIST install_manifest.txt (
@copy install_manifest.txt install_manifest_release.txt >nul
@call add2installs install_manifest.txt -o %TMPINS%\install_manifest.txt >> %TMPLOG%
)
@fa4 " -- " %TMPLOG%
@echo Done build and install of %TMPPRJ%...
@call elapsed %TMPBGN%
@echo All done... see %TMPLOG%
@goto END
:BAD_BR
@echo Try to do 'git checkout %TMPBR%'
@git checkout %TMPBR% >> %TMPLOG% 2>&1
@call chkbranch %TMPBR%
@if ERRORLEVEL 1 goto NO_BR
@goto DNBR
:NO_BR
@echo.
@echo Unable to check out %TMPBR%! *** FIX ME ***
@echo.
@goto ISERR
:GOTNO
@echo.
@echo No install at this time, but there may be an updexe.bat to copy the EXE to c:\MDOS...
@echo.
@goto END
:NOBAT
@echo Can NOT locate MSVC setup batch "%SET_BAT%"! *** FIX ME ***
:NOSRC
@echo Can NOT locate source %TMPSRC%! *** FIX ME ***
@echo Can NOT locate source %TMPSRC%! *** FIX ME *** >> %TMPLOG%
@goto ISERR
@REM :NOROOT
@REM @echo Can NOT locate %TMPROOT%! *** FIX ME ***
@REM @goto ISERR
:NOCM
@echo Can NOT locate %TMPSRC%\CMakeLists.txt! *** FIX ME ***
@goto ISERR
:NOINST
@echo Can NOT locate directory %TMPINST%! *** FIX ME ***
@goto ISERR
:ERR0
@echo MSVC 10 setup error
@echo Can NOT locate %TMPSRC%\CMakeLists.txt!
@echo Can NOT locate %TMPSRC%\CMakeLists.txt! >> %TMPLOG%
@goto ISERR
:ERR1
@echo cmake config, generation error
@echo cmake configuration or generations ERROR
@echo cmake configuration or generations ERROR >> %TMPLOG%
@goto ISERR
:ERR2
@echo debug build error
@echo ERROR: Cmake build Debug FAILED!
@echo ERROR: Cmake build Debug FAILED! >> %TMPLOG%
@goto ISERR
:ERR3
@fa4 "mt.exe : general error c101008d:" %TMPLOG% >nul
@if ERRORLEVEL 1 goto ERR32
:ERR33
@echo release build error
@echo ERROR: Cmake build Release FAILED!
@echo ERROR: Cmake build Release FAILED! >> %TMPLOG%
@goto ISERR
:ERR32
@echo Stupid error... trying again...
@echo Doing: 'cmake --build . --config release'
@echo Doing: 'cmake --build . --config release' >> %TMPLOG%
@cmake --build . --config release >> %TMPLOG% 2>&1
@if ERRORLEVEL 1 goto ERR33
@goto DNREL
:BADBR
@call git checkout %TMPBR%
@call chkbranch %TMPBR%
@if ERRORLEVEL 1 goto BADBR2
@goto GOTBR
:BADBR2
@call shwbranch
@echo Not on correct branch %TMPBR%
:ERR4
@echo ERROR: Install Debug FAILED!
@echo ERROR: Install Debug FAILED! >> %TMPLOG%
@goto ISERR
:ERR5
@echo ERROR: Install Release FAILED!
@echo ERROR: Install Release FAILED! >> %TMPLOG%
@goto ISERR
:ISERR
@echo See %TMPLOG% for details...
@endlocal
@exit /b 1

93
build/win64/gen-html.bat Normal file
View file

@ -0,0 +1,93 @@
@setlocal
@REM Build HTML from log of 'version.txt'
@REM Versify the tools used
@call verhist -? >nul
@if ERRORLEVEL 1 (
@echo Unable to run 'verhist.pl'! *** FIX ME ***
@exit /b 1
)
@call emailobfuscate -? >nul
@if ERRORLEVEL 1 (
@echo Unable to run 'emailobfuscate.pl'! *** FIX ME ***
@exit /b 1
)
@set TMPFIL1=..\..\version.txt
@if NOT EXIST %TMPFIL1% (
@echo Can NOT locate %TMPFIL1%, in %CD% - *** FIX ME ***
@exit /b 1
)
@call dirmin %TMPFIL1%
@set /P TMPVER=<%TMPFIL1%
@echo Current version '%TMPVER%' ...
@set TMPLOG1=..\..\..\temp-%TMPVER%.log
@set TMPLOG2=..\..\..\temp2-%TMPVER%.log
@set TMPLOG3=..\..\..\temp3-%TMPVER%.log
@if EXIST %TMPLOG1% goto GOTL1
@call git log -p %TMPFIL1% > %TMPLOG1%
@if NOT EXIST %TMPLOG1% (
@echo Gen of %TMPLOG1% FAILED! *** FIX ME ***
@exit /b 1
)
:GOTL1
@echo Got log 1 '%TMPLOG1%' ...
@call dirmin %TMPLOG1%
@if EXIST %TMPLOG2% goto GOTL2
@call verhist %TMPLOG1% -o %TMPLOG2%
@if EXIST %TMPLOG2% goto GOTL2
@echo Gen of %TMPLOG2% FAILED! *** FIX ME ***
@exit /b 1
:GOTL2
@echo Got log 2 '%TMPLOG2%' ...
@call dirmin %TMPLOG2%
@set TMPV=%1
@if "%TMPV%x" == "x" (
@echo Give the cut-off version, like 5.6.0, to continue..
@exit /b 1
)
@echo Doing: 'call grep %TMPV% %TMPLOG2%' ...
@call grep %TMPV% %TMPLOG2%
@if ERRORLEVEL 1 (
@echo Failed to find '%TMPV%'... check the file '%TMPLOG2%'
@exit /b 1
)
@set TMPD=%~2
@if "%TMPD%x" == "x" (
@echo Give the DATE of the cut-off, like 'Sat Nov 25 14:50:00 2017 +0100', to continue...
@exit /b 1
)
@if EXIST %TMPLOG3% goto GOTL3
@call git log "--decorate=full" "--since=%TMPD%" > %TMPLOG3%
@if EXIST %TMPLOG3% goto GOTL3
@echo Failed to generate 'git log ...' - *** FIX ME ***
@exit /b 1
:GOTL3
@echo Got log 3 '%TMPLOG3%' ...
@call dirmin %TMPLOG3%
@REM at last generate the release HTML
@set TMPHTM=..\..\..\temp-%TMPVER%.html
@if EXIST %TMPHTM% goto GOTL4
@call emailobfuscate %TMPLOG3% -o %TMPHTM% -a %TMPVER% -i
@if EXIST %TMPHTM% goto GOTL4
@echo FAILED to generate %TMPHTM%! *** FIX ME ***
@exit /b 1
:GOTL4
@echo Got HTML '%TMPHTM%' ...
@call dirmin %TMPHTM%
@REM All success - check image
@call start %TMPHTM%
@REM eof

18
console/Info.plist.in Normal file
View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>HTML Tidy</string>
<key>CFBundleIdentifier</key>
<string>org.htacg.html-tidy.tidy5</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleShortVersionString</key>
<string>@LIBTIDY_VERSION@</string>
<key>CFBundleVersion</key>
<string>@LIBTIDY_DATE@</string>
<key>NSHumanReadableCopyright</key>
<string>©@CURRENT_YEAR@ HTACG and Contributors</string>
</dict>
</plist>

View file

@ -845,7 +845,6 @@ static void help(TidyDoc tdoc, /**< The tidy document for which help is showing.
tmbstr temp_string = NULL;
uint width = 78;
printf("\n");
printf( tidyLocalizedString(TC_TXT_HELP_1), get_final_name(prog), tidyLibraryVersion() );
printf("\n");
@ -1445,6 +1444,24 @@ static void printOptionValues(TidyDoc ARG_UNUSED(tdoc), /**< The Tidy document.
}
}
break;
case TidyPriorityAttributes: /* Is #697 - This case seems missing */
{
TidyIterator itAttr = tidyOptGetPriorityAttrList(tdoc);
if (itAttr && (itAttr != (TidyIterator)-1))
{
while (itAttr)
{
d->def = tidyOptGetNextPriorityAttr(tdoc, &itAttr);
if (itAttr)
{
printf(fmt, d->name, d->type, d->def);
d->name = "";
d->type = "";
}
}
}
}
break;
default:
break;
}
@ -1484,6 +1501,33 @@ static void optionvalues( TidyDoc tdoc )
** @{
*/
/* Is #697 - specialised service to 'invert' a buffers content
split on a space character */
static void invertBuffer(TidyBuffer *src, TidyBuffer *dst)
{
uint len = src->size;
char *in = (char *)src->bp;
char *cp;
if (!in)
return;
while (len)
{
unsigned char uc;
len--;
uc = in[len];
if (uc == ' ')
{
in[len] = 0;
cp = &in[len + 1];
if (dst->size)
tidyBufAppend(dst, " ", 1);
tidyBufAppend(dst, cp, strlen(cp));
}
}
if (dst->size)
tidyBufAppend(dst, " ", 1);
tidyBufAppend(dst, in, strlen(in));
}
/** Prints the option value for a given option.
*/
@ -1493,6 +1537,7 @@ static void printOptionExportValues(TidyDoc ARG_UNUSED(tdoc), /**< The Tidy doc
)
{
TidyOptionId optId = tidyOptGetId( topt );
TidyBuffer buf1, buf2;
if ( tidyOptGetCategory(topt) == TidyInternalCategory )
return;
@ -1505,18 +1550,56 @@ static void printOptionExportValues(TidyDoc ARG_UNUSED(tdoc), /**< The Tidy doc
case TidyPreTags:
{
TidyIterator pos = tidyOptGetDeclTagList( tdoc );
while ( pos )
if ( pos ) /* Is #697 - one or more values */
{
d->def = tidyOptGetNextDeclTag(tdoc, optId, &pos);
if ( pos )
tidyBufInit(&buf1);
tidyBufInit(&buf2);
while (pos)
{
printf( "%s: %s\n", d->name, d->def );
d->name = "";
d->type = "";
d->def = tidyOptGetNextDeclTag(tdoc, optId, &pos);
if (d->def)
{
if (buf1.size)
tidyBufAppend(&buf1, " ", 1);
tidyBufAppend(&buf1, (void *)d->def, strlen(d->def));
}
}
invertBuffer(&buf1, &buf2); /* Is #697 - specialised service to invert words */
tidyBufAppend(&buf2, (void *)"\0", 1); /* is this really required? */
printf("%s: %s\n", d->name, buf2.bp);
d->name = "";
d->type = "";
d->def = 0;
tidyBufFree(&buf1);
tidyBufFree(&buf2);
}
}
break;
case TidyPriorityAttributes: /* Is #697 - This case seems missing */
{
TidyIterator itAttr = tidyOptGetPriorityAttrList(tdoc);
if (itAttr && (itAttr != (TidyIterator)-1))
{
tidyBufInit(&buf1);
while (itAttr)
{
d->def = tidyOptGetNextPriorityAttr(tdoc, &itAttr);
if (d->def)
{
if (buf1.size)
tidyBufAppend(&buf1, " ", 1);
tidyBufAppend(&buf1, (void *)d->def, strlen(d->def));
}
}
tidyBufAppend(&buf1, (void *)"\0", 1); /* is this really required? */
printf("%s: %s\n", d->name, buf1.bp);
d->name = "";
d->type = "";
d->def = 0;
tidyBufFree(&buf1);
}
}
break;
default:
break;
}
@ -1657,6 +1740,10 @@ static void printXMLCrossRefEqConsole(TidyDoc tdoc, /**< The Tidy document. */
free((tmbstr)localHit.name3);
free(localName);
}
if ( localHit.eqconfig ) /* Is. #791 */
{
free((tmbstr)localHit.eqconfig);
}
}
else
@ -1803,6 +1890,7 @@ static void xml_help( void )
if (localPos.name1) free((tmbstr)localPos.name1);
if (localPos.name2) free((tmbstr)localPos.name2);
if (localPos.name3) free((tmbstr)localPos.name3);
if (localPos.eqconfig) free((tmbstr)localPos.eqconfig); /* Is. #791 */
}
printf( "</cmdline>\n" );
@ -2405,8 +2493,17 @@ int main( int argc, char** argv )
if ( argc > 1 )
{
htmlfil = argv[1];
DEBUG_LOG( SPRTF("Tidying '%s'\n", htmlfil) );
if ( tidyOptGetBool(tdoc, TidyEmacs) )
#ifdef ENABLE_DEBUG_LOG
SPRTF("Tidy: '%s'\n", htmlfil);
#else /* !ENABLE_DEBUG_LOG */
/* Is #713 - show-filename option */
if (tidyOptGetBool(tdoc, TidyShowFilename))
{
fprintf(errout, "Tidy: '%s'", htmlfil);
fprintf(errout, "\n");
}
#endif /* ENABLE_DEBUG_LOG yes/no */
if ( tidyOptGetBool(tdoc, TidyEmacs) || tidyOptGetBool(tdoc, TidyShowFilename))
tidySetEmacsFile( tdoc, htmlfil );
status = tidyParseFile( tdoc, htmlfil );
}

View file

@ -481,16 +481,16 @@ TIDY_EXPORT void TIDY_CALL tidyGeneralInfo( TidyDoc tdoc );
/** Load an ASCII Tidy configuration file and set the configuration per its
** contents.
** @result Returns 0 upon success, or any other value if there was an error.
** contents. Reports config option errors, which can be filtered.
** @result Returns 0 upon success, or any other value if there was an option error.
*/
TIDY_EXPORT int TIDY_CALL tidyLoadConfig(TidyDoc tdoc, /**< The TidyDoc to which to apply the configuration. */
ctmbstr configFile /**< The complete path to the file to load. */
);
/** Load a Tidy configuration file with the specified character encoding, and
** set the configuration per its contents.
** @result Returns 0 upon success, or any other value if there was an error.
** set the configuration per its contents. Reports config option errors, which can be filtered.
** @result Returns 0 upon success, or any other value if there was an option error.
*/
TIDY_EXPORT int TIDY_CALL tidyLoadConfigEnc(TidyDoc tdoc, /**< The TidyDoc to which to apply the configuration. */
ctmbstr configFile, /**< The complete path to the file to load. */
@ -548,10 +548,10 @@ TIDY_EXPORT int TIDY_CALL tidySetOutCharEncoding(TidyDoc tdoc, /**< The
** @note In general, you should expect that options you set should stay set.
** This isn't always the case, though, because Tidy will adjust options
** for internal use during the lexing, parsing, cleaning, and printing
** phases, but will restore them after the printing process. If you
** require access to user configuration values at any time between the
** tidyParseXXX() process and the tidySaveXXX() process, make sure to
** keep your own copy.
** phases. If you require access to user configuration values at any
** time after the tidyParseXXX() process, make sure to keep your own
** copy, or use tidyOptResetToSnapshot() when you no longer need to
** use any other tidy functions.
** @{
******************************************************************************/
@ -1568,7 +1568,9 @@ TIDY_EXPORT int TIDY_CALL tidyParseFile(TidyDoc tdoc, /**< The tidy d
*/
TIDY_EXPORT int TIDY_CALL tidyParseStdin( TidyDoc tdoc );
/** Parse markup in given string.
/** Parse markup in given string. Note that the supplied string is of type
** `ctmbstr` based on `char` and therefore doesn't support the use of
** UTF-16 strings. Use `tidyParseBuffer()` if parsing multibyte strings.
** @result Returns the highest of `2` indicating that errors were present in
** the document, `1` indicating warnings, and `0` in the case of
** everything being okay.
@ -1914,7 +1916,8 @@ TIDY_EXPORT Bool TIDY_CALL tidyNodeHasText(TidyDoc tdoc, /**< The document to qu
TidyNode tnod /**< The node to query. */
);
/** Gets the text of a node and places it into the given TidyBuffer.
/** Gets the text of a node and places it into the given TidyBuffer. The text will be terminated with a `TidyNewline`.
** If you want the raw utf-8 stream see `tidyNodeGetValue()`.
** @result Returns a bool indicating success or not.
*/
TIDY_EXPORT Bool TIDY_CALL tidyNodeGetText(TidyDoc tdoc, /**< The document to query. */
@ -2053,7 +2056,7 @@ TIDY_EXPORT ctmbstr TIDY_CALL tidyGetLanguage(void);
** @{
*/
/** @struct tidyLocalMapItem
/** @struct tidyLocaleMapItem
** Represents an opaque type we can use for tidyLocaleMapItem, which
** is used to iterate through the language list, and used to access
** the windowsName() and the posixName().
@ -2088,17 +2091,17 @@ TIDY_EXPORT TidyIterator TIDY_CALL getWindowsLanguageList(void);
*/
TIDY_EXPORT const tidyLocaleMapItem* TIDY_CALL getNextWindowsLanguage( TidyIterator* iter );
/** Given a `tidyLocalMapItem`, return the Windows name.
** @param item An instance of tidyLocalMapItem to query.
/** Given a `tidyLocaleMapItem`, return the Windows name.
** @param item An instance of tidyLocaleMapItem to query.
** @result Returns a string with the Windows name of the mapping.
*/
TIDY_EXPORT const ctmbstr TIDY_CALL TidyLangWindowsName( const tidyLocaleMapItem *item );
TIDY_EXPORT ctmbstr TIDY_CALL TidyLangWindowsName( const tidyLocaleMapItem *item );
/** Given a `tidyLocalMapItem`, return the POSIX name.
** @param item An instance of tidyLocalMapItem to query.
/** Given a `tidyLocaleMapItem`, return the POSIX name.
** @param item An instance of tidyLocaleMapItem to query.
** @result Returns a string with the POSIX name of the mapping.
*/
TIDY_EXPORT const ctmbstr TIDY_CALL TidyLangPosixName( const tidyLocaleMapItem *item );
TIDY_EXPORT ctmbstr TIDY_CALL TidyLangPosixName( const tidyLocaleMapItem *item );
/** @}
** @name Getting Localized Strings

View file

@ -107,6 +107,7 @@ extern "C" {
*/
#define FOREACH_MSG_MISC(FN) \
/** line %d column %d */ FN(LINE_COLUMN_STRING) \
/** %s: line %d column %d */ FN(FN_LINE_COLUMN_STRING) \
/** discarding */ FN(STRING_DISCARDING) \
/** error and errors */ FN(STRING_ERROR_COUNT_ERROR) \
/** warning and warnings */ FN(STRING_ERROR_COUNT_WARNING) \
@ -171,6 +172,7 @@ extern "C" {
#define FOREACH_REPORT_MSG(FN) \
FN(ADDED_MISSING_CHARSET) \
FN(ANCHOR_NOT_UNIQUE) \
FN(ANCHOR_DUPLICATED) \
FN(APOS_UNDEFINED) \
FN(ATTR_VALUE_NOT_LCASE) \
FN(ATTRIBUTE_IS_NOT_ALLOWED) \
@ -280,7 +282,8 @@ extern "C" {
FN(VENDOR_SPECIFIC_CHARS) \
FN(WHITE_IN_URI) \
FN(XML_DECLARATION_DETECTED) \
FN(XML_ID_SYNTAX)
FN(XML_ID_SYNTAX) \
FN(BLANK_TITLE_ELEMENT)
/** These are report messages added by Tidy's accessibility module.
@ -608,7 +611,7 @@ typedef enum
TidyLiteralAttribs, /**< If true attributes may use newlines */
TidyLogicalEmphasis, /**< Replace i by em and b by strong */
TidyLowerLiterals, /**< Folds known attribute values to lower case */
TidyMakeBare, /**< Make bare HTML: remove Microsoft cruft */
TidyMakeBare, /**< Replace smart quotes, em dashes, etc with ASCII */
TidyMakeClean, /**< Replace presentational clutter by style rules */
TidyMark, /**< Add meta element indicating tidied doc */
TidyMergeDivs, /**< Merge multiple DIVs */
@ -635,6 +638,7 @@ typedef enum
TidyQuoteNbsp, /**< Output non-breaking space as entity */
TidyReplaceColor, /**< Replace hex color attribute values with names */
TidyShowErrors, /**< Number of errors to put out */
TidyShowFilename, /**< If true, the input filename is displayed with the error messages */
TidyShowInfo, /**< If true, info-level messages are shown */
TidyShowMarkup, /**< If false, normal output is suppressed */
TidyShowMetaChange, /**< show when meta http-equiv content charset was changed - compatibility */
@ -654,7 +658,7 @@ typedef enum
TidyWrapAttVals, /**< Wrap within attribute values */
TidyWrapJste, /**< Wrap within JSTE pseudo elements */
TidyWrapLen, /**< Wrap margin */
TidyWrapPhp, /**< Wrap within PHP pseudo elements */
TidyWrapPhp, /**< Wrap consecutive PHP pseudo elements */
TidyWrapScriptlets, /**< Wrap within JavaScript string literals */
TidyWrapSection, /**< Wrap within <![ ... ]> section tags */
TidyWriteBack, /**< If true then output tidied markup */
@ -968,6 +972,7 @@ typedef enum
TidyTag_BDI, /**< BDI */
TidyTag_CANVAS, /**< CANVAS */
TidyTag_COMMAND, /**< COMMAND */
TidyTag_DATA, /**< DATA */
TidyTag_DATALIST, /**< DATALIST */
TidyTag_DETAILS, /**< DETAILS */
TidyTag_DIALOG, /**< DIALOG */
@ -990,6 +995,7 @@ typedef enum
TidyTag_TIME, /**< TIME */
TidyTag_TRACK, /**< TRACK */
TidyTag_VIDEO, /**< VIDEO */
TidyTag_SLOT, /**< SLOT */
N_TIDY_TAGS /**< Must be last */
} TidyTagId;
@ -1205,6 +1211,7 @@ typedef enum
TidyAttr_MAX, /**< MAX= */
TidyAttr_MEDIAGROUP, /**< MEDIAGROUP= */
TidyAttr_MIN, /**< MIN= */
TidyAttr_MUTED, /**< MUTED= */
TidyAttr_NOVALIDATE, /**< NOVALIDATE= */
TidyAttr_OPEN, /**< OPEN= */
TidyAttr_OPTIMUM, /**< OPTIMUM= */
@ -1260,6 +1267,7 @@ typedef enum
TidyAttr_OnWAITING, /**< OnWAITING= */
TidyAttr_PATTERN, /**< PATTERN= */
TidyAttr_PLACEHOLDER, /**< PLACEHOLDER= */
TidyAttr_PLAYSINLINE, /**< PLAYSINLINE= */
TidyAttr_POSTER, /**< POSTER= */
TidyAttr_PRELOAD, /**< PRELOAD= */
TidyAttr_PUBDATE, /**< PUBDATE= */
@ -1338,7 +1346,25 @@ typedef enum
TidyAttr_AS, /**< AS= */
TidyAttr_XMLNSXLINK, /**< svg xmls:xlink="url" */
TidyAttr_SLOT, /**< SLOT= */
TidyAttr_LOADING, /**< LOADING= */
/* SVG paint attributes (SVG 1.1) */
TidyAttr_FILL, /**< FILL= */
TidyAttr_FILLRULE, /**< FILLRULE= */
TidyAttr_STROKE, /**< STROKE= */
TidyAttr_STROKEDASHARRAY, /**< STROKEDASHARRAY= */
TidyAttr_STROKEDASHOFFSET, /**< STROKEDASHOFFSET= */
TidyAttr_STROKELINECAP, /**< STROKELINECAP= */
TidyAttr_STROKELINEJOIN, /**< STROKELINEJOIN= */
TidyAttr_STROKEMITERLIMIT, /**< STROKEMITERLIMIT= */
TidyAttr_STROKEWIDTH, /**< STROKEWIDTH= */
TidyAttr_COLORINTERPOLATION, /**< COLORINTERPOLATION= */
TidyAttr_COLORRENDERING, /**< COLORRENDERING= */
TidyAttr_OPACITY, /**< OPACITY= */
TidyAttr_STROKEOPACITY, /**< STROKEOPACITY= */
TidyAttr_FILLOPACITY, /**< FILLOPACITY= */
N_TIDY_ATTRIBS /**< Must be last */
} TidyAttrId;

View file

@ -315,6 +315,15 @@ extern "C" {
# endif
#endif
/* === Convenience defines for Haiku platforms === */
#if defined(__HAIKU__)
# define HAIKU
# ifndef PLATFORM_NAME
# define PLATFORM_NAME "Haiku"
# endif
#endif
/* === Convenience defines for Cygwin platforms === */
#if defined(__CYGWIN__)
@ -428,7 +437,7 @@ extern "C" {
#if PRESERVE_FILE_TIMES
# ifndef HAS_FUTIME
# if defined(CYGWIN_OS) || defined(BE_OS) || defined(OS2_OS) || defined(HPUX_OS) || defined(SOLARIS_OS) || defined(LINUX_OS) || defined(BSD_BASED_OS) || defined(MAC_OS) || defined(__MSL__) || defined(IRIX_OS) || defined(AIX_OS) || defined(__BORLANDC__) || defined(__GLIBC__)
# if defined(CYGWIN_OS) || defined(BE_OS) || defined(OS2_OS) || defined(HPUX_OS) || defined(SOLARIS_OS) || defined(LINUX_OS) || defined(BSD_BASED_OS) || defined(MAC_OS) || defined(__MSL__) || defined(IRIX_OS) || defined(AIX_OS) || defined(__BORLANDC__) || defined(__GLIBC__) || defined(__HAIKU__)
# define HAS_FUTIME 0
# else
# define HAS_FUTIME 1
@ -456,6 +465,12 @@ extern "C" {
# include <utime.h>
# endif
#if defined(__HAIKU__)
#ifndef va_copy
#define va_copy(dest, src) (dest = src)
#endif
#endif
/* MS Windows needs _ prefix for Unix file functions.
Not required by Metrowerks Standard Library (MSL).
@ -549,12 +564,12 @@ extern "C" {
# include <sys/types.h>
#endif
#if !defined(HPUX_OS) && !defined(CYGWIN_OS) && !defined(MAC_OS_X) && !defined(BE_OS) && !defined(SOLARIS_OS) && !defined(BSD_BASED_OS) && !defined(OSF_OS) && !defined(IRIX_OS) && !defined(AIX_OS) && !defined(LINUX_OS)
#if !defined(HPUX_OS) && !defined(CYGWIN_OS) && !defined(MAC_OS_X) && !defined(BE_OS) && !defined(SOLARIS_OS) && !defined(BSD_BASED_OS) && !defined(OSF_OS) && !defined(IRIX_OS) && !defined(AIX_OS) && !defined(LINUX_OS) && !defined(__HAIKU__)
# undef uint
typedef unsigned int uint;
#endif
#if defined(HPUX_OS) || defined(CYGWIN_OS) || defined(MAC_OS) || defined(BSD_BASED_OS) || defined(_WIN32)
#if defined(HPUX_OS) || defined(CYGWIN_OS) || defined(MAC_OS) || defined(BSD_BASED_OS) || defined(_WIN32) || defined(__ANDROID__)
# undef ulong
typedef unsigned long ulong;
#endif

File diff suppressed because it is too large Load diff

View file

@ -898,7 +898,17 @@ msgid ""
"<code>&lt;?php ... ?&gt;</code>. As always, all other tabs, or sequences of tabs, in "
"the source will continue to be replaced with a space. "
msgstr ""
"Com <var>no</var> preconfigurado, Tidy substituirá todas as tabulações da fonte com espaços, "
"em conformidade com a opção <code>tab-size</code> e o deslocamento da linha atual. "
"Obviamente, com exceção dos blocos/elementos enumerados abaixo, isto será "
"reduzido depois a apenas um espaço "
"<br/>"
"Se configurado para <var>yes</var> essa opção determina que Tidy deve manter "
"certas tabulaçõess encontradas na fonte, mas apenas "
"em blocos preformatados como <code>&lt;pre&gt;</code> e outros elementos CDATA como "
"<code>&lt;script&gt;</code>, <code>&lt;style&gt;</code> e outros pseudo-elementos como "
"<code>&lt;?php ... ?&gt;</code>. Como sempre, todas as demais tabulações ou "
"sequências de tabulações na fonte continuarão a ser substituídas por um espaço. "
#. Important notes for translators:
#. - Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
#. <br/>.
@ -1618,7 +1628,13 @@ msgid ""
"<code>mute-id</code> configuration option and examining Tidy's "
"output. "
msgstr ""
"Use esta opção para impedir que Tidy mostre certos tipos de "
"relatórios, por exemplo, para condições que você deseja ignorar. "
"<br/>"
"Essa opção recebe uma lista de uma ou mais chaves que indicam o tipo de "
"mensagem a ser silenciada. Você pode descobrir as chaves destas mensagens "
"usando a opção de configuração <code>mute-id</code> e examinando o resultado "
"produzido por Tidy. "
#. Important notes for translators:
#. - Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
#. <br/>.
@ -1634,7 +1650,10 @@ msgid ""
"use the <code>mute</code> configuration option in order to filter "
"out certain report messages. "
msgstr ""
"Essa opção determina se Tidy deve apresentar ou não os IDs da mensagem "
"com cada um de seus relatórios de erros. Pode ser útil se você quiser "
"usar a opção de configuração <code>mute</code> a fim de filtrar "
"certas mensagens do relatório. "
#. Important notes for translators:
#. - Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
#. <br/>.
@ -2196,7 +2215,7 @@ msgstr ""
msgctxt "TidyWarning"
msgid "Warning: "
msgstr "Acesso: "
msgstr "Aviso: "
msgctxt "TidyConfig"
msgid "Config: "
@ -2549,6 +2568,10 @@ msgid ""
"this behavior, then consider setting the option \"drop-empty-elements\"\n"
"to no.\n"
msgstr ""
"Um ou mais elementos vazios estavam presentes no documento-fonte mas\n"
"foram descartados no resultado. Se esses elementos são necessários ou\n"
"se você não deseja esse comportamento, então considere configurar a opção\n"
"\"drop-empty-elements\" para no.\n"
#. This console output should be limited to 78 characters per line.
#. - The URL should not be translated unless you find a matching URL in your language.
@ -2921,15 +2944,15 @@ msgstr "hífenes adjacentes dentro de comentário"
msgctxt "MALFORMED_COMMENT_DROPPING"
msgid "dropping a possible comment due to a missing hyphen"
msgstr ""
msgstr "descartando um possível comentário devido à falta de hífen"
msgctxt "MALFORMED_COMMENT_EOS"
msgid "the end of the document was reached before the end of the comment"
msgstr ""
msgstr "o fim do documento foi alcançado antes do fim do comentário"
msgctxt "MALFORMED_COMMENT_WARN"
msgid "detected adjacent hyphens within the comment; consider fix-bad-comments"
msgstr ""
msgstr "hífens adjacentes detectados dentro do comentário; considere fix-bad-comments"
msgctxt "MALFORMED_DOCTYPE"
msgid "discarding malformed <!DOCTYPE>"
@ -2972,7 +2995,7 @@ msgstr "faltando </%s>"
#, c-format
msgctxt "MISSING_ENDTAG_OPTIONAL"
msgid "missing optional end tag </%s>"
msgstr ""
msgstr "faltando tag final opcional </%s>"
#, c-format
msgctxt "MISSING_IMAGEMAP"
@ -2987,7 +3010,7 @@ msgstr "atributo de %s faltando aspas ao final"
#, c-format
msgctxt "MISSING_QUOTEMARK_OPEN"
msgid "value for attribute \"%s\" missing quote marks"
msgstr ""
msgstr "valor para atributo \"%s\" faltando aspas"
#, c-format
msgctxt "MISSING_SEMICOLON_NCR"
@ -3044,17 +3067,17 @@ msgstr "substituindo elemento obsoleto %s por %s"
#, c-format
msgctxt "OPTION_REMOVED"
msgid "option \"%s\" no longer exists, and no replacement could be found."
msgstr ""
msgstr "opção \"%s\" não existe mais e nenhum substituto pôde ser encontrado."
#, c-format
msgctxt "OPTION_REMOVED_APPLIED"
msgid "option \"%s\" replaced with \"%s\", which Tidy has set to \"%s\"."
msgstr ""
msgstr "opção \"%s\" substituída por \"%s\", que Tidy configurou para \"%s\"."
#, c-format
msgctxt "OPTION_REMOVED_UNAPPLIED"
msgid "option \"%s\" replaced with \"%s\", but Tidy could not set it for you."
msgstr ""
msgstr "opção \"%s\" substituída por \"%s\", mas Tidy não pôde configurar para você"
#, c-format
msgctxt "PREVIOUS_LOCATION"
@ -3103,7 +3126,7 @@ msgstr "removendo espaço em branco precedendo a declaração XML"
#, c-format
msgctxt "STRING_ARGUMENT_BAD"
msgid "option \"%s\" given bad argument \"%s\""
msgstr ""
msgstr "opção \"%s\" recebeu argumento errado \"%s\""
#, c-format
msgctxt "STRING_MISSING_MALFORMED"
@ -3113,7 +3136,7 @@ msgstr "argumento faltando ou malformado para opção: %s"
#, c-format
msgctxt "STRING_MUTING_TYPE"
msgid "messages of type \"%s\" will not be output"
msgstr ""
msgstr "mensagens de tipo \"%s\" não vão ser geradas"
#, c-format
msgctxt "STRING_UNKNOWN_OPTION"
@ -3790,11 +3813,11 @@ msgstr "lista todas as opções de configuração"
msgctxt "TC_OPT_HELPENV"
msgid "show information about the environment and runtime configuration"
msgstr ""
msgstr "mostra informações sobre o ambiente e a configuração de execução"
msgctxt "TC_OPT_HELPOPT"
msgid "show a description of the <option>"
msgstr " mostra uma descrição da <opção>"
msgstr "mostra uma descrição da <opção>"
msgctxt "TC_OPT_IBM858"
msgid "use IBM-858 (CP850+Euro) for input, US-ASCII for output"
@ -3866,11 +3889,11 @@ msgstr "lista as definições da configuração atual"
msgctxt "TC_OPT_EXP_CFG"
msgid "list the current configuration settings, suitable for a config file"
msgstr ""
msgstr "lista as configurações atuais, apropriadas para um documento config"
msgctxt "TC_OPT_EXP_DEF"
msgid "list the default configuration settings, suitable for a config file"
msgstr ""
msgstr "lista as configurações padrões, apropriadas para um documento config"
msgctxt "TC_OPT_UPPER"
msgid "force tags to upper case"
@ -4170,7 +4193,13 @@ msgid ""
" %s \n"
"\n"
msgstr ""
"\n"
" Ademais, Tidy tentará automaticamente utilizar configuração especificada \n"
" nesses documentos, se presentes: \n"
"\n"
" %s \n"
" %s \n"
"\n"
#. This console output should be limited to 78 characters per line.
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
msgctxt "TC_TXT_HELP_CONFIG"
@ -4232,6 +4261,17 @@ msgid ""
" - Options in a file specified on the command line. \n"
" - Options set directly on the command line. \n"
msgstr ""
"\n"
"Tidy pode configurar valores de opções a partir de várias fontes, \n"
"na ordem abaixo. O uso subsequente da mesma opção sobreescreve \n"
"configurações anteriores. \n"
"\n"
" - Valores inbutidos padrões de Tidy. \n"
"%s" /* rc files */
" - O documento especificado na variável de ambiente $HTML_TIDY: \n"
" %s \n"
" - Opções num arquivo especificado na linha do comando. \n"
" - Opções definidas diretamente na linha de comando. \n"
#. This console output should be limited to 78 characters per line.
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
@ -4243,13 +4283,16 @@ msgid ""
" - The user runtime configuration file: \n"
" %s \n"
msgstr ""
" - O documento de configuração de execução do sistema: \n"
" %s \n"
" - O documento de configuração de execução do usuário: \n"
" %s \n"
#. This console output should be limited to 78 characters per line.
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
#. - This message indicates that a file name is not currently set.
msgctxt "TC_TXT_HELP_ENV_1B"
msgid "(not currently set)"
msgstr ""
msgstr "(não definido no momento)"
#. This console output should be limited to 78 characters per line.
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
@ -4260,7 +4303,9 @@ msgid ""
"Note that because $HTML_TIDY is set, the user runtime configuration file \n"
"%s will not be used. \n"
msgstr ""
"\n"
"Note que, dado que $HTML_TIDY foi definida, o documento de configuração \n"
"de execução do usuário %s não será utilizado. \n"
#. This console output should be limited to 78 characters per line.
#. - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
msgctxt "TC_TXT_HELP_LANG_1"

View file

@ -75,8 +75,9 @@ They are listed in the first part of this section.
\fIConfiguration\fR options, on the other hand, can either be passed
on the command line, starting with two dashes \fB--\fR,
or specified in a configuration file,
using the option name without the starting dashes.
They are listed in the second part of this section.
using the option name, followed by a colon \fB:\fR, plus the value, without
the starting dashes. They are listed in the second part of this section,
with a sample config file.
.LP
For \fIcommand-line\fR options that expect a numerical argument,
a default is assumed if no meaningful value can be found.
@ -97,6 +98,8 @@ Single-letter \fIcommand-line\fR options without an associated value
can be combined; for example '\fB-i\fR', '\fB-m\fR' and '\fB-u\fR'
may be combined as '\fB-imu\fR'.<xsl:text/>
<xsl:call-template name="show-cmdline-options" />
.SS Configuration Options General
.rs
.LP
\fIConfiguration\fR options can be specified
by preceding each option with \fB--\fR at the command line,

View file

@ -0,0 +1,4 @@
source 'https://rubygems.org'
gem 'thor'
gem "tty-editor"

View file

@ -0,0 +1,30 @@
GEM
remote: https://rubygems.org/
specs:
pastel (0.8.0)
tty-color (~> 0.5)
thor (1.1.0)
tty-color (0.6.0)
tty-cursor (0.7.1)
tty-editor (0.6.0)
tty-prompt (~> 0.22)
tty-prompt (0.23.1)
pastel (~> 0.8)
tty-reader (~> 0.8)
tty-reader (0.9.0)
tty-cursor (~> 0.7)
tty-screen (~> 0.8)
wisper (~> 2.0)
tty-screen (0.8.1)
wisper (2.0.1)
PLATFORMS
ruby
x64-mingw32
DEPENDENCIES
thor
tty-editor
BUNDLED WITH
2.1.4

View file

@ -0,0 +1,205 @@
Tidy Regression Testing Specification
=====================================
Background
----------
HTML Tidy uses regression testing as its main means of quality control when
implementing new features and fixing bugs. HTML Tidy has been in constant
development since before unit testing and automated testing were in wide use,
and has proven effective in guiding the development of Tidy.
This repository is the regression testing tool used by Tidy for both
continuous integration, and for development work, and consists for test
cases split into multiple set sets, as well as tools for automating testing.
Testing consists of automatically running some version (of your choice) of HTML
Tidy on various operating systems and architectures against the suite of
test cases, and comparing the Tidy and report output against known, “good”
versions thereof.
This testing process ensures that:
- No regressions occur as a result of the changes you make to HTML Tidy.
Everything that has passed in the past should continue to pass, regardless
of your changes. Changing test expectations for existing test cases must
result in a discussion on the pull request discussion thread, otherwise
regressions are _prima facie_ cause for rejecting your pull request.
- Although touted as a “regression test,” code changes should also be
furnished with a test case that demonstrates the issue being corrected or
the feature being added. Logically you are already informally using one or
most test cases during your development of the patch; this simply
formalizes the requirement for HTML Tidy, and makes it much easier for the
maintainers to understand the impact of your proposed change.
Additionally, when introducing new features or fixing bugs,
new test cases should be written to demonstrate that the fix works against
the test case.
About the Test Tool (test.rb)
-----------------------------
The `test.rb` tool replaces the previous Windows shell and Bash testing
scripts. This start-from-scratch approach is intended to provide a single
script thats platform agnostic, for the primary purpose of enabling
automated testing, but with strong support for use as a manual tool during
HTML Tidy development.
Ruby was chosen as the scripting language of choice because it is available
on every platform, is easy to read (even if you're not a Ruby programmer),
and is supported by the major continuous integration testing providers, such
as Github.
We recognize that some developers have scripting environment preferences,
and as such, please feel free write wrappers around `test.rb` as needed in
order to suit your prefences. If additional CLI API is needed to enable your
scripting environment wrapper, please feel free to request such.
Building Tidy, and Tidy Versions
--------------------------------
The testing tool works by executing `tidy` (or `tidy.exe`, referred to only
as `tidy` continuing) on your platform. Naturally, you dont want to conduct
testing using the normal, installed version of `tidy`, but rather version(s)
that youve built for testing.
By default, the `tidy` used will be in the standard build folder of the
`tidy-html5` directory that is a sibling to this `tidy-html5-tests`
directory. The complete relative path from `test.rb`, then, is:
```
../tidy-html5/build/cmake/tidy[.exe]
```
This makes it convenient when performing testing on both repositories when
theyre checked out. However you can also specify another build of HTML Tidy
as an optional argument, too.
Static Build Considerations
---------------------------
By default, HTML Tidy is built as a console application statically linked to
LibTidy. Although the option to link against a dylib or dll exist when
building, its suggested that you no longer do so, because you might put
yourself into a situation where youre testing multiple command line
executables that are all linked to the same dynamic library!
Although not formally deprecated, you should consider dynamic linking
deprecated and treat it that way. In a world where entire Java Runtime
Environments are shipped _per program_, the benefits of dynamic linking no
longer exist on any modern computer or operating system. In some cases,
modern security hardening even prevents dynamic linking, and were likely to
see such restrictions become more common in the future.
Running Test Tests
------------------
### Preparing the Environment
Assuming that you have a working Ruby interpretor, version 2.7 or so, upon
`CD`-ing into the `tidy-html5-test` directory, you should execute `bundle
install`, which ensures that any dependencies that your environment doesnt
already have will be downloaded.
### Executing the Program
In Windows shell and powershell, simply typing
~~~
test
~~~
will run the tool. Usually. Probably. If not, try `ruby test.rb` in case
your environment is not configured to work directly.
Unix and Unix-like operating systems (including WSL and other Unix-like
environments for Windows) can run the program like such:
~~~
test.rb
~~~
### Testing
When used without any arguments, help will be provided. In general, though,
you can do the following:
| Command | Effect |
|--------------------------------|-----------------------------------|
| `./test.rb test` | Tests all cases in all test sets. |
| `./test.rb only <setname>` | Tests only in the given test set. |
| `./test.rb case <case_number>` | Tests only on a single case. |
Input Specification
-------------------
### Test Sets
“Test sets” are groups of individual tests that are thematically related,
such as accessibility checks, XML-specific tests, historical tests, etc.
Each set of cases consists of directories and a text file within the `cases/`
directory. Each test set shall consist of the following directories/files, where
`setname` indicates the name of the testing set, e.g., `testbase` (our default
set of case files).
- `setname/`, which contains the HTML files to tidy, and an optional
configuration file for each case.
- Test files shall have the format `case-basename@n<.html|.xml|.xhtml>`,
where `nnn` represents the test case name, and the `@n` metadata
represents the required shell exit status code that HTML Tidy should
produce after running the test case. The case name cannot contain
hyphens or the `@` symbol, and should represent something meaningful
such a a Github issue number.
- Optional Tidy configuration files shall be named `case-basename.conf`.
- In the absense of a configuration file, the file `config_default.conf` in
each directory will be used instead.
- `README<.txt|.md>`, which describes the test set.
- `setname-expects/`, which contains the expected output from HTML Tidy.
- Files in the format `case-nnn<.html|.xml|.xhtml>` represent the expected
HTML file as generated by Tidy.
- Files in the format `case-nnn.txt` represent the expected warning/error
output from Tidy.
#### Example
```
cases/
testbase/
config_default.cong
case-427821.html
case-427821.conf
testbase-expects/
case-427821.html
case-427821.txt
```
Output Specification
--------------------
The output specification is written such that it makes it trivial to easily
`diff` a `setname-expects` directory with the output of a test in order
to check for differences.
Test results consist of Tidy's HTML output and Tidy's warning/error output.
Each set of results consists of directories within the `cases/` directory.
- `setname-results` contains Tidy's HTML and warning/error output.
- Files in the format `case-nnn.html` are the HTML file generated by Tidy.
- Files in the format `case-nnn.txt` are the warning/error output from Tidy.
### Example
~~~
cases/
testbase-results/
case-427821.html
case-427821.txt
~~~

View file

@ -0,0 +1,10 @@
About this test suite:
======================
These files ensure that Tidy is presenting the correct accessibility information
when used with Tidys various levels of accessibility checking.
The original accessibility test script looked for a single line of output
present in Tidy's error output. Current treatment as a standard regression
test accomplishes the same result, in that testing the entire error output is
a superset of testing only the desired output anyway.

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/10.1.1</title>
</head>
<body>
<a href="newpage.html" target="_new">Opens in new window.</a>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/10.1.1</title>
</head>
<body>
<a href="newpage.html" target="_blank">Opens in new window.</a>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/11.2.1</title>
</head>
<body>
<u>x</u>
</body>
</html>

View file

@ -0,0 +1,10 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/11.2.1</title>
</head>
<body>
<applet>
</applet>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/11.2.1</title>
</head>
<body>
<basefont>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/11.2.1</title>
</head>
<body>
<center>Hello</center>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/11.2.1</title>
</head>
<body>
<dir>Hello</dir>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/11.2.1</title>
</head>
<body>
<font size="6">Hello</font>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/11.2.1</title>
</head>
<body>
<isindex prompt="Enter your search phrase: ">
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/11.2.1</title>
</head>
<body>
<menu></menu>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/11.2.1</title>
</head>
<body>
<s>x</s>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/11.2.1</title>
</head>
<body>
<strike>x</strike>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 1
show-info: no

View file

@ -0,0 +1,10 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html lang="en">
<head>
<title>aert1.0/12.1.1</title>
</head>
<frameset>
<frame></frame>
</frameset>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 1
show-info: no

View file

@ -0,0 +1,10 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html lang="en">
<head>
<title>aert1.0/12.1.1</title>
</head>
<frameset>
<frame title=""></frame>
</frameset>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 1
show-info: no

View file

@ -0,0 +1,10 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html lang="en">
<head>
<title>aert1.0/12.1.1</title>
</head>
<frameset>
<frame title=" "></frame>
</frameset>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,12 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/12.4.1</title>
</head>
<body>
<form action="">
<label>Some text:</label>
<input value="****" type="text">
</form>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,12 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/12.4.1</title>
</head>
<body>
<form action="">
<label>Some text:</label>
<input id="control1" value="****" type="text">
</form>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,12 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/12.4.1</title>
</head>
<body>
<form action="">
<label for="control1">Some text:</label>
<input value="****" type="text">
</form>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 3
show-info: no

View file

@ -0,0 +1,23 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/13.10.1</title>
</head>
<body>
<pre>
% __ __ __ __ __ __ __ __ __ __ __ __ __ __
100 | * |
90 | * * |
80 | * * |
70 | @ * |
60 | @ * |
50 | * @ * |
40 | @ * |
30 | * @ @ @ * |
20 | |
10 | @ @ @ @ @ |
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70
Flash frequency (Hertz)
</pre>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/13.1.1</title>
</head>
<body>
<a href="animals.htm">cats</a>
some text
<a href="animals.htm">cats</a>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/13.1.1</title>
</head>
<body>
<a href="animals.htm"></a>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,10 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/13.1.1</title>
</head>
<body>
<a href="animals.htm">Want to find out more about small furry animals?
Then click here and this link will take you there.</a>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/13.1.1</title>
</head>
<body>
<a href="animals.htm">click here</a>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title></title>
<!-- aert1.0/13.2.1 -->
</head>
<body>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/13.2.1</title>
<meta http-equiv="refresh" content="http://www.foo.com/bar.html">
</head>
<body>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 1
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/1.1.10</title>
</head>
<body>
<script><!-- do nothing --></script>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 2
show-info: no

View file

@ -0,0 +1,23 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/1.1.12</title>
</head>
<body>
<pre>
% __ __ __ __ __ __ __ __ __ __ __ __ __ __
100 | * |
90 | * * |
80 | * * |
70 | @ * |
60 | @ * |
50 | * @ * |
40 | @ * |
30 | * @ @ @ * |
20 | |
10 | @ @ @ @ @ |
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70
Flash frequency (Hertz)
</pre>
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 1
show-info: no

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 1
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/1.1.1</title>
</head>
<body>
<img src="hasAlt.gif" alt="0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789">
</body>
</html>

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/1.1.1</title>
</head>
<body>
<img src="noAlt.jpg">
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 1
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/1.1.1</title>
</head>
<body>
<img src="gifimage.gif" alt="gifimage.gif">
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 1
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/1.1.1</title>
</head>
<body>
<img src="bytesImage.gif" alt="34K bytes">
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 1
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/1.1.1</title>
</head>
<body>
<img src="animage.gif" alt="{short description of image}">
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 1
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/1.1.2</title>
</head>
<body>
<img src="pie-chart.jpg" alt="Pie chart of federal expenditures">
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 1
show-info: no

View file

@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>bobby/g13</title>
</head>
<body>
<img src="pie-chart.jpg" longdesc="pie-chart.html" alt="Pie chart of federal expenditures">
</body>
</html>

View file

@ -0,0 +1,3 @@
char-encoding: latin1
accessibility-check: 1
show-info: no

View file

@ -0,0 +1,10 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<title>aert1.0/1.1.2</title>
</head>
<body>
<img src="pie-chart.jpg" alt="Pie chart of federal expenditures">
<a href="pie-chart.html">D</a>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show more