Commit Graph

310 Commits

Author SHA1 Message Date
Jakub Zalas
be1e4e6585 [DomCrawler] Enabled default namespace prefix overloading. 2013-09-22 23:05:57 +01:00
Jakub Zalas
c6fbb13938 [DomCrawler] Added support for an automatic default namespace registration. 2013-09-22 23:05:57 +01:00
Jakub Zalas
c905bba6a0 [DomCrawler] Added more tests for namespaced filtering. 2013-09-22 23:05:56 +01:00
Jakub Zalas
e5b8abb564 [DomCrawler] Added auto-discovery of namespaces in Crawler::filter() and Crawler::filterByXPath().
Improved content type guessing.
2013-09-22 23:05:56 +01:00
Fabien Potencier
b1542f0620 Merge branch '2.3'
* 2.3:
  [Locale] added support for the position argument to NumberFormatter::parse()
  [Locale] added some more stubs for the number formatter
  [Yaml] fixed typo
  [Yaml] fixed a test on PHP < 5.4
  [DomCrawler]Crawler guess charset from html
  fixed PHP 5.3 compatibility
  [Yaml] reverted previous merge partially (refs #8897)
  [Security] remove unused logger
  [Security] fix typo
  [Yaml] Fixed filename in the ParseException message
2013-09-22 20:04:51 +02:00
Fabien Potencier
775a39c5c3 Merge branch '2.2' into 2.3
* 2.2:
  [Locale] added support for the position argument to NumberFormatter::parse()
  [Locale] added some more stubs for the number formatter
  [Yaml] fixed typo
  [Yaml] fixed a test on PHP < 5.4
  [DomCrawler]Crawler guess charset from html
  fixed PHP 5.3 compatibility
  [Yaml] reverted previous merge partially (refs #8897)
  [Security] remove unused logger
  [Security] fix typo
  [Yaml] Fixed filename in the ParseException message

Conflicts:
	src/Symfony/Component/Console/Input/InputDefinition.php
	src/Symfony/Component/Locale/Stub/StubNumberFormatter.php
	src/Symfony/Component/Locale/Tests/Stub/StubNumberFormatterTest.php
2013-09-22 20:04:39 +02:00
bronze1man
e5282e8ec0 [DomCrawler]Crawler guess charset from html 2013-09-19 18:37:12 +02:00
Fabien Potencier
c3728d21cd Merge branch '2.3'
* 2.3:
  fixes RequestDataCollector bug, visible when used on Drupal8
  [Console] fixed exception rendering when nested styles
  [Console] added some more information about OutputFormatter::replaceStyle()
  [Console] fixed the formatter for single-char tags
  [Console] Escape exception message during the rendering of an exception
  [DomCrawler] fixed HTML5 form attribute handling
  Making tests pass on mac os x without this change tests would fail under mac os x at least in 10.8.2
  [BrowserKit] Fixed the handling of parameters when redirecting
  [Process] Properly close pipes after a Process::stop call
  fixed bytes conversion when used on 32-bits systems
  Typo fix
  HttpFoundation RequestTest - Fixed indentation and removed comments
  HttpFoundation Request test for #8619
  LICENSE files moved to meta folders
  added missing method in the UPGRADE file for 2.2 (closes #8941)
  [Form] Fixed: "required" attribute is not added to <select> tag if no empty value
  [Translation] Removed an unneeded return annotation.
  [DomCrawler] Added missing docblocks and removed unneeded return annotation.

Conflicts:
	src/Symfony/Component/Process/Tests/AbstractProcessTest.php
2013-09-18 09:05:46 +02:00
Fabien Potencier
0ebb8bc8a2 merged branch kepten/ticket_6239 (PR #8197)
This PR was squashed before being merged into the 2.3 branch (closes #8197).

Discussion
----------

[DomCrawler] fixed HTML5 form attribute handling

Fixed HTML5 form attribute handling and improved a test case to test more thoroughly

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #6239
| License       | MIT
| Doc PR        | no

Commits
-------

04e730e [DomCrawler] fixed HTML5 form attribute handling
2013-09-17 11:47:59 +02:00
Robert Kiss
04e730ec2e [DomCrawler] fixed HTML5 form attribute handling 2013-09-17 11:47:58 +02:00
Fabien Potencier
de50621e8a removed deps checks in unit tests
As Composer is now widely used in the PHP world, having to run composer
install before running the test suite is expected. This also has the
nice benefit of removing a bunch of code, making things easier to
maintain (there is only one place to declare a dev dependency), and
probably more.
2013-08-19 22:44:22 +02:00
Fabien Potencier
af101a5a63 Merge branch '2.2' into 2.3
* 2.2:
  fixed CS
  typo first->second
  Fixed variable name used in translation cache

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php
	src/Symfony/Component/CssSelector/Node/FunctionNode.php
	src/Symfony/Component/Finder/Tests/Iterator/RealIteratorTestCase.php
2013-07-01 14:17:23 +02:00
Fabien Potencier
fdf2d6228c fixed CS 2013-07-01 14:15:46 +02:00
Fabien Potencier
d849d5d134 Merge branch '2.2' into 2.3
* 2.2:
  Throw exception if value is passed to VALUE_NONE input, long syntax
  fixed date type format pattern regex
  [FrameworkBundle] tweaked previous merge (refs #8242)
  do not re-register commands each time a Console\Application is run
  [Process] moved env check to the Process class (refs #8227)
  fix issue where $_ENV contains array vals
  [DomCrawler] Fix handling file:// without a host
  [Form] corrected interface bind() method defined against in deprecation notice
  [Finder] Fix SplFileInfo::getContents isn't working with ssh2 protocol

Conflicts:
	src/Symfony/Component/Console/Tests/Input/ArgvInputTest.php
	src/Symfony/Component/DomCrawler/Link.php
	src/Symfony/Component/Form/Form.php
2013-06-13 09:51:49 +02:00
Dmitrii Chekaliuk
41399360e8 [DomCrawler] Fix handling file:// without a host 2013-06-13 02:54:36 +03:00
Fabien Potencier
2f915f72f6 Merge branch '2.2' into 2.3
* 2.2:
  Revert "[Console] ensure exit code between 0-254"
  fix many-to-many Propel1 ModelChoiceList
  [Console] ensure exit code between 0-254
  [DomCrawler] Fixed a fatal error when setting a value in a malformed field name.
  [Console] fix status code when Exception::getCode returns something like 0.1
  Fixed exit code for exceptions with error code 0
  instantiate valid commands only

Conflicts:
	src/Symfony/Component/Console/Application.php
2013-06-11 09:15:14 +02:00
Pierre-Yves LEBECQ
bce6bd2858 [DomCrawler] Fixed a fatal error when setting a value in a malformed field name. 2013-06-08 13:27:47 +02:00
Fabien Potencier
f989c846fe Merge branch '2.2' into 2.3
* 2.2:
  [CssSelector] Fix :nth-last-child() translation
  Fix Crawler::children() to not trigger a notice for childless node

Conflicts:
	src/Symfony/Component/CssSelector/Node/FunctionNode.php
	src/Symfony/Component/CssSelector/Tests/Node/FunctionNodeTest.php
2013-05-19 21:00:48 +02:00
Fabien Potencier
7b5e68053f Merge branch '2.1' into 2.2
* 2.1:
  [CssSelector] Fix :nth-last-child() translation
  Fix Crawler::children() to not trigger a notice for childless node
2013-05-19 21:00:13 +02:00
Dmitrii Chekaliuk
91b84903b7 Fix Crawler::children() to not trigger a notice for childless node 2013-05-16 03:06:15 +03:00
Fabien Potencier
bbdd516e63 [DomCrawler] fixed tests for previous merge 2013-05-10 17:43:46 +02:00
entering
41805c042d [Crawler] Add proper validation of node argument of method add 2013-05-06 08:24:44 +02:00
Fabien Potencier
6f35599523 [DomCrawler] finished the previous merge feature addition 2013-04-22 07:03:23 +02:00
Fabien Potencier
714fc4ab94 merged branch fabpot/moved_domcrawler_11 (PR #7750)
This PR was merged into the master branch.

Discussion
----------

Added html method into Crawler class

This PR was submitted on the symfony/DomCrawler read-only repository and moved automatically to the main Symfony repository (closes symfony/DomCrawler#11).

A pull request is waiting for aproval, but is not tested

* This method allow to get html inside desired element
* New method is tested

Commits
-------

a8d2e06 Added html method into Crawler class
2013-04-22 06:55:39 +02:00
Fabien Potencier
150689f07f [DomCrawler] changed Crawler::reduce() to iterate over Crawler instance instead of DomElement instances 2013-04-22 06:54:39 +02:00
Diego Saint Esteben
14eed63069 Method each return an instance of Crawler instead DOMElement 2013-04-22 06:45:24 +02:00
Marc
a8d2e06387 Added html method into Crawler class
* This method allow to get html inside desired element
* New method is tested
2013-04-21 08:33:13 +02:00
Pavel Volokitin
6bf9c6839c [DomCrawler] allowed schema-less url in the base tag 2013-04-20 18:52:51 +06:00
Fabien Potencier
3a3ff284ba merged branch kepten/ticket_7486 (PR #7500)
This PR was merged into the master branch.

Discussion
----------

[DomCrawler] added support for HTML5 'form' attribute

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #7486
| License       | MIT
| Doc PR        |

Commits
-------

f8178dd [DomCrawler] added support for HTML5 'form' attribute
2013-04-07 18:48:09 +02:00
Kepten
f8178dd1bb [DomCrawler] added support for HTML5 'form' attribute 2013-04-01 14:38:28 +02:00
Fabien Potencier
e1c741db9c Merge branch '2.2'
* 2.2: (22 commits)
  fixed doc references (closes #7515)
  fixed doc references (closes #7515)
  On OS X, sys_get_tmp_dir() returns /var/private/..., which really is below /private/var.
  Doctrine cannot handle bare random non-utf8 strings
  small changes
  [SecurityBundle] Fixed configuration exemple
  idAsIndex should be true with a smallint or bigint id field.
  [PropertyAccess] Remove trailing periods from doc blocks
  Fix param docs for PropertyAccessor read method
  Fixed long multibyte parameter logging in DbalLogger:startQuery
  Keep the file extension in the temporary copy and test that it exists (closes #7482)
  bumped Symfony version to 2.1.10-DEV
  [Validator][translation][japanese]replaced period to japanese one [Validator][translation][japanese]fixed japanese translation to more practical one [Validator][translation][japanese]fixed message ordering to be consistent with other languages [Validator][translation][japanese]added new validation messages in japanese translation
  updated VERSION for 2.1.9
  update CONTRIBUTORS for 2.1.9
  updated CHANGELOG for 2.1.9
  [Security] fixed wrong interface
  Remove already defined arguments
  Add missing use
  [FrameworkBundle] Reuse definition variable in FormPass
  ...

Conflicts:
	src/Symfony/Bridge/Doctrine/Logger/DbalLogger.php
	src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/config.html.twig
2013-04-01 10:07:30 +02:00
Fabien Potencier
ab1ab7ac18 merge branch '2.1' into 2.2
* 2.1:
  fixed doc references (closes #7515)
  small changes
  [SecurityBundle] Fixed configuration exemple
  idAsIndex should be true with a smallint or bigint id field.
  Fixed long multibyte parameter logging in DbalLogger:startQuery
  Keep the file extension in the temporary copy and test that it exists (closes #7482)
  [Validator][translation][japanese]replaced period to japanese one [Validator][translation][japanese]fixed japanese translation to more practical one [Validator][translation][japanese]fixed message ordering to be consistent with other languages [Validator][translation][japanese]added new validation messages in japanese translation

Conflicts:
	src/Symfony/Component/Validator/Resources/translations/validators.ja.xlf
2013-04-01 10:05:23 +02:00
thewilkybarkid
4cf06c1560 Keep the file extension in the temporary copy and test that it exists (closes #7482) 2013-03-27 18:13:16 +01:00
Fabien Potencier
d699a929e0 Merge branch '2.2'
* 2.2: (70 commits)
  change wrapped exception message to be more usefull
  updated VERSION for 2.0.23
  update CONTRIBUTORS for 2.0.23
  updated CHANGELOG for 2.0.23
  [Form] fixed failing test
  [DomCrawler] added support for query string with slash
  Fixed invalid file path for hiddeninput.exe on Windows.
  fix xsd definition for strict-requirements
  [WebProfilerBundle] Fixed the toolbar styles to apply them in IE8
  [ClassLoader] fixed heredocs handling
  fixed handling of heredocs
  Add a public modifier to an interface method
  removing xdebug extension
  [HttpRequest] fixes Request::getLanguages() bug
  [HttpCache] added a test (cached content should be kept after purging)
  [DoctrineBridge] Fixed non-utf-8 recognition
  [Security] fixed HttpUtils class tests
  replaced new occurences of 'Request::create()' with '::create()'
  changed sub-requests creation to '::create()'
  fixed merge issue
  ...

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php
	src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/toolbar.html.twig
	src/Symfony/Component/DomCrawler/Link.php
	src/Symfony/Component/Translation/Translator.php
2013-03-20 15:03:03 +01:00
Fabien Potencier
e24ce2f22f Merge branch '2.1' into 2.2
* 2.1:
  updated VERSION for 2.0.23
  update CONTRIBUTORS for 2.0.23
  updated CHANGELOG for 2.0.23
  [Form] fixed failing test
  [DomCrawler] added support for query string with slash
2013-03-20 14:55:39 +01:00
Nicolas Roudaire
e6b75153e3 [DomCrawler] added support for query string with slash
Link\getUri() failed to return correct uri when current query string contains slash
2013-03-20 09:46:19 +01:00
Fabien Potencier
7c66dffa6b Merge branch '2.1' into 2.2
* 2.1:
  [FrameworkBundle] Fix code status in dockblock
  Fixed test to use Reflection
  [Finder] fixed a potential issue on Solaris where INF value is wrong (refs #7269)
  Update RouteCompiler.php
  [FrameworkBundle] avoids cache:clear to break if new/old folders already exist
  [HttpKernel] Fixed possible profiler token collision (closes #7272, closes #7171)
  [ClassLoader] tweaked test
  [ClassLoader] made DebugClassLoader idempotent
  [DomCrawler] Fix relative path handling in links

Conflicts:
	src/Symfony/Component/DomCrawler/Link.php
	src/Symfony/Component/Finder/Iterator/DepthRangeFilterIterator.php
	src/Symfony/Component/Routing/RouteCompiler.php
2013-03-11 18:18:44 +01:00
Fabien Potencier
d59cf10593 merged branch jfsimon/issue-7169 (PR #7179)
This PR was squashed before being merged into the master branch (closes #7179).

Commits
-------

c6fe27f [2.3] [DomCrawler] adds schema relative URL support to link

Discussion
----------

[2.3] [DomCrawler] adds schema relative URL support to link

Adds support for `//relative/schema` URLs to `DomCrawler` links.

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #7169

---------------------------------------------------------------------------

by stof at 2013-02-25T19:17:10Z

👍
2013-03-06 17:43:17 +01:00
Jean-François Simon
c6fe27f63e [2.3] [DomCrawler] adds schema relative URL support to link 2013-03-06 17:43:17 +01:00
Dmitrii Chekaliuk
a4ec6772df [DomCrawler] Fix relative path handling in links
Added relative path canonicalization according to RFC 3986, section 5.2.4
2013-03-02 17:23:18 +02:00
Fabien Potencier
556ca0cfbd Merge branch '2.1' into 2.2
* 2.1:
  Options small typo
  [Console] fixed unparsed StringInput tokens
  [TwigBridge] fixed trans twig extractor
  [DomCrawler] fix handling of schemes by Link::getUri()
  [Console] Fixed comment
  [TwigBridge] fixed the translator extractor that were not trimming the text in trans tags (closes #7056)
  Fixed handling absent href attribute in base tag
  added a DebuClassLoader::findFile() method to make the wrapping less invasive
  fixed CHANGELOG
  bumped Symfony version to 2.1.9-DEV
  updated VERSION for 2.1.8
  updated CHANGELOG for 2.1.8
  StringInput resets the given options.

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
2013-03-01 07:43:14 +01:00
Matthijs van den Bos
8f8ba380d6 [DomCrawler] fix handling of schemes by Link::getUri()
A link (anchor tag with an href attr) in crawled by the Crawler
can contain any valid URI, including mailto: links.

Currently this is not correctly supported by Link::getUri.
Schemes that do not start with 'http' are treated as relative URIs
and appenden to the base URI. This leads to strange URIs like this:
http://foo.com/mailto:foo@bar.com

Fixed Link::getUri to treat any URI with a schema part as an
absolute URL. Updated the unit tests to test for this.
2013-02-28 13:15:59 +01:00
Matthijs van den Bos
b1ea8e5b68 Fixed handling absent href attribute in base tag
The HTML5 spec states that the href attribute is optional for the
base tag. Fixed the DomCrawler::addHtmlContent() method to support this

See here and here:
http://www.w3.org/TR/html-markup/base.html#base.attrs.href
http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-base-element
2013-02-26 17:49:54 +01:00
Fabien Potencier
18495e7b3c Merge branch '2.1'
* 2.1: (29 commits)
  [DependencyInjection] fixed composer.json
  [Validator] Fix typos in validators.ru.xlf
  Edited some minor grammar and style errors in russian validation file
  Updated Bulgarian translation
  [Form] improve error message with a "hasser" hint for PropertyAccessDeniedException
  [Form] Updated checks for the ICU version from 4.5+ to 4.7+ due to test failures with ICU 4.6
  [Form] simplified a test from previous merge
  Update src/Symfony/Component/Form/Extension/Core/Type/FileType.php
  fixed CS
  Xliff with other node than source or target are ignored
  small fix of #5984 when the container param is not set
  Filesystem Component mirror symlinked directory fix
  [Process][Tests] fixed chainedCommandsOutput tests
  fixed CS
  Use better default ports in urlRedirectAction
  Add tests for urlRedirectAction
  info about session namespace
  fix upgrade info about locale
  Update src/Symfony/Component/DomCrawler/Tests/FormTest.php
  Update src/Symfony/Component/DomCrawler/Form.php
  ...
2012-11-29 11:32:45 +01:00
Fabien Potencier
922c2015f6 Merge branch '2.0' into 2.1
* 2.0:
  [DependencyInjection] fixed composer.json
  [Form] Updated checks for the ICU version from 4.5+ to 4.7+ due to test failures with ICU 4.6
  fixed CS
  small fix of #5984 when the container param is not set
  fixed CS
  Use better default ports in urlRedirectAction
  Add tests for urlRedirectAction
  Update src/Symfony/Component/DomCrawler/Tests/FormTest.php
  Update src/Symfony/Component/DomCrawler/Form.php
  [Security] remove escape charters from username provided by Digest DigestAuthenticationListener
  [Security] added test extra for digest authentication
  fixed CS
  [Security] Fixed digest authentication
  [Security] Fixed digest authentication
  [SecurityBundle] Convert Http method to uppercase in the config
  Use Norm Data instead of Data

Conflicts:
	src/Symfony/Bridge/Doctrine/Form/EventListener/MergeCollectionListener.php
	src/Symfony/Bundle/FrameworkBundle/Controller/RedirectController.php
	src/Symfony/Component/DependencyInjection/composer.json
2012-11-29 11:32:18 +01:00
Fabien Potencier
b27b749025 made usage of Composer autoloader for subtree-split unit tests 2012-11-09 14:10:06 +01:00
Pascal Borreli
a7ce6be3f8 Fixed typos 2012-10-28 23:25:34 +00:00
Fabien Potencier
88ea842c5e Merge branch '2.1'
* 2.1: (28 commits)
  Delete use of CreationExeption
  [Form] Fixed error message in PropertyPath to not advice to use a non-existing feature
  [Form] Fixed creation of multiple money fields with different currencies
  [Form] Fixed setting the "data" option to an object in "choice" and "entity" type
  Fixed Serbian plural translations.
  Fixed IPv6 Check in RequestMatcher
  Fix typo
  change what I think is a typo
  [Console] Fix error when mode is not in PATH
  [WebProfilerBundle] fixed macro usage (to be forward compatible with Twig 2.x)
  Change monolog require-dev to use the branch alias instead of dev-master
  [FrameworkBundle] partially reverted previous merge
  [2.1] Added missing error return codes in commands
  Made the router lazy when setting the context
  [WebProfilerBundle] fixed typos
  Fix incorrect variable in FileProfilerStorage
  UnitTest fix
  UnitTest fix
  added a unit test
  fixed #5384
  ...
2012-10-18 23:16:19 +02:00
Fabien Potencier
82a6694c85 Merge branch '2.0' into 2.1
* 2.0:
  [Form] Fixed creation of multiple money fields with different currencies
  Fixed IPv6 Check in RequestMatcher
  fixed DomCrwaler/Form to handle <button> when submitted

Conflicts:
	tests/Symfony/Tests/Component/DomCrawler/FormTest.php
	tests/Symfony/Tests/Component/Form/Extension/Core/Type/MoneyTypeTest.php
2012-10-18 23:16:01 +02:00
Fabien Potencier
0fc0fb3b9c merged branch hason/crawler (PR #5407)
This PR was merged into the master branch.

Commits
-------

c902966 [DomCrawler] Added ability to set file as raw path to file field

Discussion
----------

[2.2][DomCrawler] Added ability to set file as raw path to file field

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
License of the code: MIT

For description see #4674 (https://github.com/symfony/symfony/issues/4674#issuecomment-7811505)

Related PRs:

https://github.com/Behat/MinkBrowserKitDriver/pull/1
https://github.com/Behat/MinkGoutteDriver/pull/7
https://github.com/fabpot/Goutte/pull/77

---------------------------------------------------------------------------

by stof at 2012-10-13T21:53:27Z

@fabpot anything missing here ?
2012-10-14 11:36:44 +02:00
Fabien Potencier
b6dfa76b7d merged branch pawaclawczyk/bugfix-multiselect-setvalues (PR #5502)
This PR was squashed before being merged into the 2.1 branch (closes #5502).

Commits
-------

6200290 PSR-2 correct.
5c17388 Allows using multiselect through Form::setValues().

Discussion
----------

[DomCrawler] Allows using multiselect through Form::setValues().

Patch allows set multiple values in select using setValues() method, as it is used in Symfony\Component\BrowserKit\Client::submit().
2012-10-03 16:20:23 +02:00
Paweł Wacławczyk
74d10d666c [DomCrawler] Allows using multiselect through Form::setValues(). 2012-10-03 16:20:23 +02:00
Martin Hasoň
d7623ae2af [DomCrawler] Added test for supported encodings by mbstring 2012-09-25 11:03:23 +02:00
Martin Hasoň
c9029664ad [DomCrawler] Added ability to set file as raw path to file field 2012-09-19 11:23:06 +02:00
Fabien Potencier
9b7aab5e94 merged 2.0 2012-05-20 18:16:37 +02:00
Fabien Potencier
c9ebe67d65 [DomCrawler] fixed encoding when using addHtmlContent() (fixes #3881) 2012-05-07 14:20:03 +02:00
Fabien Potencier
f14961b747 [DomCrawler] converted all usage of filter() to filterXPath() in unit tests to be less dependent on CssSelector 2012-05-07 14:03:55 +02:00
William DURAND
c1959571ac [Components] Tests/Autoloading fixes
* Switched to Composer to manage "dev" dependencies
* Fixed READMEs
* Excluded vendor in phpunit.xml.dist files
* Fixed message in bootstrap.php files
* Added autoloader for the component itself
2012-05-01 17:51:41 +02:00
Joseph Bielawski
bfc1aafff6 [Tests] Use proper assertions 2012-04-14 10:05:05 +02:00
Fabien Potencier
fea6b79acd moved component and bridge unit tests to the src/ directory
This is the first step to make each Symfony Component and Bridge self-contained.
2012-03-29 08:37:22 +02:00