Commit c49dcd88 authored by Mike Ryan's avatar Mike Ryan

Resolve "Implement Transformer tests"

parent 15257730
Pipeline #47720026 passed with stage
in 2 minutes and 19 seconds
......@@ -2,10 +2,12 @@
# https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html
# Ignore all test and documentation with "export-ignore".
/.editorconfig export-ignore
/.gitattributes export-ignore
/.gitignore export-ignore
/.travis.yml export-ignore
/phpcs.xml.dist export-ignore
/phpunit.xml.dist export-ignore
/.scrutinizer.yml export-ignore
/.styleci.yml export-ignore
/tests export-ignore
/docs export-ignore
\ No newline at end of file
/docs export-ignore
......@@ -2,24 +2,40 @@
[![Latest Version on Packagist][ico-version]][link-packagist]
[![Software License][ico-license]](LICENSE.md)
[![Build Status][ico-travis]][link-travis]
[![Coverage Status][ico-scrutinizer]][link-scrutinizer]
[![Quality Score][ico-code-quality]][link-code-quality]
[![Total Downloads][ico-downloads]][link-downloads]
Soong\Soong provides interfaces and abstract base classes for the Soong data migration framework.
Soong is a framework for building robust Extract-Transform-Load (ETL) applications for performing data migration. It is designed to be record-oriented and configuration-driven - most applications will require little or no custom PHP code, and tools can easily customize (or create) data migration processes implemented by Soong.
Documentation is at https://soong-etl.readthedocs.io/.
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). For major version 0, we will increment the minor version for backward-incompatible changes. At this pre-release point, the interfaces are still changing regularly - if you develop any applications using Soong be sure to pin them to the minor release.
Right now soong/soong is standalone, containing all components developed for soong so far as well as sample migrations (see **Demos** below). Once the interfaces are stable, the plan is to break out component implementations into separate smaller libraries - soong/soong itself may end up containing only the interfaces (contracts), or (more likely) also basic implementations for the most widely-needed components. Certainly, specialized components like the DBAL integration will end up in their own repos.
## Install
Via Composer
Soong is best installed using [Composer](https://getcomposer.org/). Since as noted above while in major version 0 minor versions will contain backward-incompatible changes, and at this point the interfaces are still changing regularly, if you develop any applications using Soong be sure to pin them to the minor release you implemented them with. E.g., "~0.3.0" which will get the latest release with major.minor version 0.3 and prevent updating to a 0.4.x release which may break your application.
``` bash
$ composer require soong/soong
$ composer require soong/soong "~0.3.0"
```
## Change log
Please see [CHANGELOG](docs/CHANGELOG.md) for more information on what has changed recently.
## Contributing
There's still a lot of refinement to be done to Soong - this is your opportunity to get involved with a new framework (and community) on the ground floor! As mentioned above, the plan is ultimately to break out components into small well-contained libraries - these will be excellent opportunities to get your feet wet maintaining your own open-source project.
Please see [CONTRIBUTING](docs/CONTRIBUTING.md) and [CODE_OF_CONDUCT](docs/CODE_OF_CONDUCT.md) for details.
## Security
If you discover any security related issues, please email `[email protected]` instead of using the issue tracker.
## Demos
To setup for demoing Soong ETL:
......@@ -50,31 +66,6 @@ Demo 2:
1. Execute `bin/soong rollback beercontent`
1. Observe how the `beer` and `map_beercontent` tables are now empty.
## Change log
Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
## Testing
``` bash
$ composer test
```
## Contributing
Please see [CONTRIBUTING](CONTRIBUTING.md) and [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md) for details.
### Todo
* Complete test coverage
* Factories for all the things?
* Comments
* Consistent 'configuration' keys
* Full example (beer or whatever)
## Security
If you discover any security related issues, please email `[email protected]` instead of using the issue tracker.
## Credits
- [Mike Ryan][link-author]
......@@ -92,7 +83,6 @@ The MIT License (MIT). Please see [License File](LICENSE.md) for more informatio
[ico-downloads]: https://img.shields.io/packagist/dt/soong/soong.svg?style=flat-square
[link-packagist]: https://packagist.org/packages/soong/soong
[link-travis]: https://travis-ci.org/soong/soong
[link-scrutinizer]: https://scrutinizer-ci.com/g/soong/soong/code-structure
[link-code-quality]: https://scrutinizer-ci.com/g/soong/soong
[link-downloads]: https://packagist.org/packages/soong/soong
......
......@@ -10,6 +10,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
### Added
- `EtlTaskInterface::getLoader()`
- Tests for `Data` and `Transformer` components.
### Changed
- `Interface` and `Trait` suffixes removed from all interfaces and traits.
......
# Contributing
Contributions are **welcome** and will be fully **credited**.
Contributions are **welcome** and will be fully **credited**. There's still a lot of refinement to be done to Soong - this is your opportunity to get involved with a new framework (and community) on the ground floor! As mentioned above, the plan is ultimately to break out components into small well-contained libraries - these will be excellent opportunities to get your feet wet maintaining your own open-source project.
We accept contributions via issues and merge requests at [Gitlab](https://gitlab.com/soong/soong).
There's plenty of work already identified in [the Gitlab issue queue](https://gitlab.com/soongetl/soong/issues). Feel free to browse, ask questions, and offer your own insights - or, if you have a migration itch you'd like to scratch and don't see an existing issue, open a new one.
## Submission process
## Working on issues
1. See if there are any existing relevant issues in [the Gitlab repo](https://gitlab.com/soongetl/soong/issues). If not, [open a new issue](https://gitlab.com/soongetl/soong/issues/new).
1. If you are going to work on a solution to the issue, assign the issue to yourself.
1. Fork the project and create a feature branch in your fork.
1. If you have an issue you'd like to work on, assign it to yourself.
1. If you haven't already, fork the project to your account.
1. Create a feature branch in your fork. Recommended branch name is `<gitlab issue #>-<dash-separated-issue-title>`
1. Develop your solution locally. Be sure to:
- Make sure your changes are fully tested.
- Make sure your changes are fully documented, including in code comments blocks, README.md, CHANGELOG.md, and in the `docs` directory.
- Follow the [PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md). Check the code style with ``$ composer check-style`` and fix it with ``$ composer fix-style``.
- Make sure your changes are fully tested (see below).
- Make sure your changes are fully documented (see below).
- Follow the [PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md). Check the code style with `$ composer check-style` and fix it with `$ composer fix-style`.
1. Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please [squash them](http://www.git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages) before submitting.
1. Commits should reference the issue number - e.g., a commit for [Add community docs up front](https://gitlab.com/soongetl/soong/issues/51) might have the commit message "#51: Expand community documentation and move to docs directory.".
1. On gitlab, create a merge request and submit it.
## Tests
Automated tests are critical, especially when code is changing rapidly. They help ensure that any changes made don't produce any unexpected consequences, and give confidence that a new piece of code does what it's expected to do. In the Soong `tests` directory, you'll find existing tests laid out in parallel with the `src` directory. Of particular note is `tests/Contracts` - while interfaces can't be tested (since they don't do anything worth testing), we do provide base classes here which you should extend for the tests of your components - these will give you testing that your components meet the documented expectations of the interfaces, so in writing tests you can focus on the specific features added by your own code.
## Running Tests
To run the test suite locally:
``` bash
$ composer test
```
## Documentation
* Classes and methods are to be fully documented in comment blocks - these are used to automatically generate the API Reference section of the [online documentation](https://soong-etl.readthedocs.io/).
* Add any non-trivial changes you've made to docs/CHANGELOG.md.
* Review `README.md` and any `.md` files under `docs` to see if any changes are missing. Don't miss docs/api/doxygen_home.md (which is used as the homepage for the Doxygen-generated API docs).
......@@ -313,7 +313,7 @@ OPTIMIZE_OUTPUT_SLICE = NO
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
# the files are not read by doxygen.
EXTENSION_MAPPING = md1=md
EXTENSION_MAPPING =
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
# according to the Markdown format, which allows for more readable
......@@ -813,7 +813,7 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
INPUT = ../src ../tests/Contracts api/doxygen_home.md1
INPUT = ../src ../tests/Contracts api/doxygen_home.md
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
......@@ -867,7 +867,6 @@ FILE_PATTERNS = *.c \
*.m \
*.markdown \
*.md \
*.md1 \
*.mm \
*.dox \
*.py \
......@@ -1007,7 +1006,7 @@ FILTER_SOURCE_PATTERNS =
# (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the doxygen output.
USE_MDFILE_AS_MAINPAGE = api/doxygen_home.md1
USE_MDFILE_AS_MAINPAGE = api/doxygen_home.md
#---------------------------------------------------------------------------
# Configuration options related to source browsing
......
......@@ -140,7 +140,9 @@ $(document).ready(function(){initNavTree('annotated.html','');});
<tr id="row_0_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_9_" class="arrow" onclick="toggleFolder('0_9_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>Tests</b></td><td class="desc"></td></tr>
<tr id="row_0_9_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_9_0_" class="arrow" onclick="toggleFolder('0_9_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>Contracts</b></td><td class="desc"></td></tr>
<tr id="row_0_9_0_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_9_0_0_" class="arrow" onclick="toggleFolder('0_9_0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>Data</b></td><td class="desc"></td></tr>
<tr id="row_0_9_0_0_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_soong_1_1_tests_1_1_contracts_1_1_data_1_1_data_property_test_base.html" target="_self">DataPropertyTestBase</a></td><td class="desc">Base class for testing DataPropertyInterface implementations </td></tr>
<tr id="row_0_9_0_0_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_soong_1_1_tests_1_1_contracts_1_1_data_1_1_data_property_test_base.html" target="_self">DataPropertyTestBase</a></td><td class="desc">Base class for testing DataProperty implementations </td></tr>
<tr id="row_0_9_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_9_0_1_" class="arrow" onclick="toggleFolder('0_9_0_1_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>Transformer</b></td><td class="desc"></td></tr>
<tr id="row_0_9_0_1_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_soong_1_1_tests_1_1_contracts_1_1_transformer_1_1_trans_former_test_base.html" target="_self">TransFormerTestBase</a></td><td class="desc">Base class for testing Transformer implementations </td></tr>
<tr id="row_0_10_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_10_" class="arrow" onclick="toggleFolder('0_10_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>Transformer</b></td><td class="desc"></td></tr>
<tr id="row_0_10_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_soong_1_1_transformer_1_1_copy.html" target="_self">Copy</a></td><td class="desc">Transformer to simply copy extracted data to the destination </td></tr>
<tr id="row_0_10_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_soong_1_1_transformer_1_1_double.html" target="_self">Double</a></td><td class="desc">Transformer to multiply the extracted data value by 2 </td></tr>
......@@ -158,7 +160,7 @@ $(document).ready(function(){initNavTree('annotated.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:16 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:15 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -65,6 +65,9 @@ var annotated_dup =
[ "Contracts", null, [
[ "Data", null, [
[ "DataPropertyTestBase", "class_soong_1_1_tests_1_1_contracts_1_1_data_1_1_data_property_test_base.html", "class_soong_1_1_tests_1_1_contracts_1_1_data_1_1_data_property_test_base" ]
] ],
[ "Transformer", null, [
[ "TransFormerTestBase", "class_soong_1_1_tests_1_1_contracts_1_1_transformer_1_1_trans_former_test_base.html", "class_soong_1_1_tests_1_1_contracts_1_1_transformer_1_1_trans_former_test_base" ]
] ]
] ]
] ],
......
......@@ -111,7 +111,7 @@ Inheritance diagram for Countable:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_countable.html">Countable</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -105,7 +105,7 @@ Inheritance diagram for RecursiveFilterIterator:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="class_recursive_filter_iterator.html">RecursiveFilterIterator</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -101,7 +101,7 @@ $(document).ready(function(){initNavTree('class_soong_1_1_console_1_1_command_1_
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -226,7 +226,7 @@ Protected Member Functions</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>Soong</b></li><li class="navelem"><b>Console</b></li><li class="navelem"><b>Command</b></li><li class="navelem"><a class="el" href="class_soong_1_1_console_1_1_command_1_1_etl_command.html">EtlCommand</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -103,7 +103,7 @@ $(document).ready(function(){initNavTree('class_soong_1_1_console_1_1_command_1_
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -191,7 +191,7 @@ Protected Member Functions</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>Soong</b></li><li class="navelem"><b>Console</b></li><li class="navelem"><b>Command</b></li><li class="navelem"><a class="el" href="class_soong_1_1_console_1_1_command_1_1_migrate_command.html">MigrateCommand</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -103,7 +103,7 @@ $(document).ready(function(){initNavTree('class_soong_1_1_console_1_1_command_1_
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -191,7 +191,7 @@ Protected Member Functions</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>Soong</b></li><li class="navelem"><b>Console</b></li><li class="navelem"><b>Command</b></li><li class="navelem"><a class="el" href="class_soong_1_1_console_1_1_command_1_1_rollback_command.html">RollbackCommand</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -103,7 +103,7 @@ $(document).ready(function(){initNavTree('class_soong_1_1_console_1_1_command_1_
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -191,7 +191,7 @@ Protected Member Functions</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>Soong</b></li><li class="navelem"><b>Console</b></li><li class="navelem"><b>Command</b></li><li class="navelem"><a class="el" href="class_soong_1_1_console_1_1_command_1_1_status_command.html">StatusCommand</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -99,7 +99,7 @@ $(document).ready(function(){initNavTree('class_soong_1_1_console_1_1_command_1_
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -136,7 +136,7 @@ Public Member Functions</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>Soong</b></li><li class="navelem"><b>Console</b></li><li class="navelem"><b>Command</b></li><li class="navelem"><a class="el" href="class_soong_1_1_console_1_1_command_1_1_yaml_recursive_filter_iterator.html">YamlRecursiveFilterIterator</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -109,7 +109,7 @@ $(document).ready(function(){initNavTree('class_soong_1_1_csv_1_1_extractor.html
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -250,7 +250,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>Soong</b></li><li class="navelem"><b>Csv</b></li><li class="navelem"><a class="el" href="class_soong_1_1_csv_1_1_extractor.html">Extractor</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -106,7 +106,7 @@ $(document).ready(function(){initNavTree('class_soong_1_1_csv_1_1_loader.html','
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -267,7 +267,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>Soong</b></li><li class="navelem"><b>Csv</b></li><li class="navelem"><a class="el" href="class_soong_1_1_csv_1_1_loader.html">Loader</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -108,7 +108,7 @@ $(document).ready(function(){initNavTree('class_soong_1_1_d_b_a_l_1_1_extractor.
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -193,7 +193,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>Soong</b></li><li class="navelem"><b>DBAL</b></li><li class="navelem"><a class="el" href="class_soong_1_1_d_b_a_l_1_1_extractor.html">Extractor</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -117,7 +117,7 @@ $(document).ready(function(){initNavTree('class_soong_1_1_d_b_a_l_1_1_key_map.ht
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -553,7 +553,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>Soong</b></li><li class="navelem"><b>DBAL</b></li><li class="navelem"><a class="el" href="class_soong_1_1_d_b_a_l_1_1_key_map.html">KeyMap</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -105,7 +105,7 @@ $(document).ready(function(){initNavTree('class_soong_1_1_d_b_a_l_1_1_loader.htm
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -238,7 +238,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>Soong</b></li><li class="navelem"><b>DBAL</b></li><li class="navelem"><a class="el" href="class_soong_1_1_d_b_a_l_1_1_loader.html">Loader</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -103,7 +103,7 @@ $(document).ready(function(){initNavTree('class_soong_1_1_data_1_1_property.html
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -201,7 +201,7 @@ Protected Attributes</h2></td></tr>
<p>Implements <a class="el" href="interface_soong_1_1_contracts_1_1_data_1_1_data_property.html#a95592398c063f14f4ec180d392b60c48">DataProperty</a>.</p>
<p class="reference">Referenced by <a class="el" href="class_soong_1_1_data_1_1_record.html#a47ea4e119def2fd9393bae4bc9328d86">Record\create()</a>, <a class="el" href="class_soong_1_1_csv_1_1_loader.html#a4f1db7dc6c9a065f5ad352c1281950e2">Loader\load()</a>, <a class="el" href="class_soong_1_1_data_1_1_record.html#aa17814590278c686006722d7f55ac309">Record\nullProperty()</a>, <a class="el" href="class_soong_1_1_transformer_1_1_increment.html#a721df97b0ec866ef25fe4a87468a9924">Increment\transform()</a>, <a class="el" href="class_soong_1_1_transformer_1_1_double.html#a721df97b0ec866ef25fe4a87468a9924">Double\transform()</a>, <a class="el" href="class_soong_1_1_transformer_1_1_uc_first.html#a721df97b0ec866ef25fe4a87468a9924">UcFirst\transform()</a>, <a class="el" href="class_soong_1_1_transformer_1_1_key_map_lookup.html#a721df97b0ec866ef25fe4a87468a9924">KeyMapLookup\transform()</a>, and <a class="el" href="class_soong_1_1_transformer_1_1_value_lookup.html#a721df97b0ec866ef25fe4a87468a9924">ValueLookup\transform()</a>.</p>
<p class="reference">Referenced by <a class="el" href="class_soong_1_1_data_1_1_record.html#a47ea4e119def2fd9393bae4bc9328d86">Record\create()</a>, <a class="el" href="class_soong_1_1_csv_1_1_loader.html#a4f1db7dc6c9a065f5ad352c1281950e2">Loader\load()</a>, <a class="el" href="class_soong_1_1_data_1_1_record.html#aa17814590278c686006722d7f55ac309">Record\nullProperty()</a>, <a class="el" href="class_soong_1_1_transformer_1_1_value_lookup.html#a721df97b0ec866ef25fe4a87468a9924">ValueLookup\transform()</a>, <a class="el" href="class_soong_1_1_transformer_1_1_double.html#a721df97b0ec866ef25fe4a87468a9924">Double\transform()</a>, <a class="el" href="class_soong_1_1_transformer_1_1_increment.html#a721df97b0ec866ef25fe4a87468a9924">Increment\transform()</a>, <a class="el" href="class_soong_1_1_transformer_1_1_uc_first.html#a721df97b0ec866ef25fe4a87468a9924">UcFirst\transform()</a>, and <a class="el" href="class_soong_1_1_transformer_1_1_key_map_lookup.html#a721df97b0ec866ef25fe4a87468a9924">KeyMapLookup\transform()</a>.</p>
</div>
</div>
......@@ -282,7 +282,7 @@ Protected Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>Soong</b></li><li class="navelem"><b>Data</b></li><li class="navelem"><a class="el" href="class_soong_1_1_data_1_1_property.html">Property</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -106,7 +106,7 @@ $(document).ready(function(){initNavTree('class_soong_1_1_data_1_1_record.html',
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -386,7 +386,7 @@ Protected Attributes</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>Soong</b></li><li class="navelem"><b>Data</b></li><li class="navelem"><a class="el" href="class_soong_1_1_data_1_1_record.html">Record</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:15 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -108,7 +108,7 @@ $(document).ready(function(){initNavTree('class_soong_1_1_extractor_1_1_array_ex
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:16 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -214,7 +214,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>Soong</b></li><li class="navelem"><b>Extractor</b></li><li class="navelem"><a class="el" href="class_soong_1_1_extractor_1_1_array_extractor.html">ArrayExtractor</a></li>
<li class="footer">Generated on Tue Feb 12 2019 10:58:16 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -108,7 +108,7 @@ $(document).ready(function(){initNavTree('class_soong_1_1_extractor_1_1_countabl
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated on Tue Feb 12 2019 10:58:16 for Soong by
<li class="footer">Generated on Wed Feb 13 2019 16:28:14 for Soong by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>
......
......@@ -168,7 +168,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><b>Soong</b></li><li class="navelem"><b>Extractor</b></li><li class="navelem"><a class="el" href="class_soong_1_1_extractor_1_1_countable_extractor_base.html">CountableExtractorBase</a></li>
<li class="footer">