Downloads:

95

Downloads of v 3.0.0:

59

Last Update:

20 Jun 2022

Package Maintainer(s):

Software Author(s):

  • Simona Avornicesei
  • Wyam2
  • and contributors

Tags:

Wyam Wyam2 Static StaticContent StaticSite Blog BlogEngine

Wyam2

  • 1
  • 2
  • 3

3.0.0 | Updated: 20 Jun 2022

Downloads:

95

Downloads of v 3.0.0:

59

Maintainer(s):

Software Author(s):

  • Simona Avornicesei
  • Wyam2
  • and contributors

  • 1
  • 2
  • 3
Wyam2 3.0.0

  • 1
  • 2
  • 3

All Checks are Passing

3 Passing Tests


Validation Testing Passed


Verification Testing Passed

Details

Scan Testing Successful:

No detections found in any package files

Details
Learn More

Deployment Method: Individual Install, Upgrade, & Uninstall

To install Wyam2, run the following command from the command line or from PowerShell:

>

To upgrade Wyam2, run the following command from the command line or from PowerShell:

>

To uninstall Wyam2, run the following command from the command line or from PowerShell:

>

Deployment Method:

📝 NOTE: This applies to both open source and commercial editions of Chocolatey.

1. Enter Your Internal Repository Url

(this should look similar to https://community.chocolatey.org/api/v2/)


2. Setup Your Environment

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

2. Get the package into your environment

  • Open Source or Commercial:
    • Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to https://community.chocolatey.org/api/v2/. Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
    • You can also just download the package and push it to a repository Download

3. Copy Your Script

choco upgrade wyam2 -y --source="'INTERNAL REPO URL'" [other options]

See options you can pass to upgrade.

See best practices for scripting.

Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.

If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:


choco upgrade wyam2 -y --source="'INTERNAL REPO URL'" 
$exitCode = $LASTEXITCODE

Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
  Exit 0
}

Exit $exitCode

- name: Install wyam2
  win_chocolatey:
    name: wyam2
    version: '3.0.0'
    source: INTERNAL REPO URL
    state: present

See docs at https://docs.ansible.com/ansible/latest/modules/win_chocolatey_module.html.


chocolatey_package 'wyam2' do
  action    :install
  source   'INTERNAL REPO URL'
  version  '3.0.0'
end

See docs at https://docs.chef.io/resource_chocolatey_package.html.


cChocoPackageInstaller wyam2
{
    Name     = "wyam2"
    Version  = "3.0.0"
    Source   = "INTERNAL REPO URL"
}

Requires cChoco DSC Resource. See docs at https://github.com/chocolatey/cChoco.


package { 'wyam2':
  ensure   => '3.0.0',
  provider => 'chocolatey',
  source   => 'INTERNAL REPO URL',
}

Requires Puppet Chocolatey Provider module. See docs at https://forge.puppet.com/puppetlabs/chocolatey.


4. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

This package was approved by moderator TheCakeIsNaOH on 12 Jul 2022.

Description

Wyam2 is a simple to use, highly modular, and extremely configurable static content generator and is a continuation of the awesome project Wyam created by Dave Glick. This is a tools package that contains the Wyam2 CLI.


tools\AdvancedStringBuilder.dll
md5: D7E4771BF385F74F7558F687EB2AC9D3 | sha1: 2D0F29F5B16EFDCE2EB5064A2411F4EA76DC3AF0 | sha256: E26665301F4BE30FFD2D8D4996258DB8B0CD868A3A104556606E2E8751B36E9C | sha512: 12F04BE9C0F97AB6BD036B18D967ACFC354F6EB9DB4E92D5E58819251CF00B79EB4E53236486C13B009D781A9444CFD79032C1BE79438265EE8CB0D791390228
tools\ConcurrentCollections.dll
md5: 3C0C4E84AE69B4738947C50F131E1E8E | sha1: CCD65181A70F1E93BCD5D7E287D8710D4F778FAE | sha256: FE768C5C4F8A2C109B4E0677D804FA655C1726C35957635F66DC1ED0B3FB7734 | sha512: 2B31EB0694E6B706C1F1FAFCDB6ADF611E2990D6A659720C86D934C3365BABCFABCE95506A1A2129C425638D31D005F2ED9D762AB4E6B5728488E3BB1F41E179
tools\cs\Microsoft.CodeAnalysis.CSharp.resources.dll
md5: AAD7B68E5FD861B34058C3D53FE67699 | sha1: 5DB1D1111B7BBB822FD93B2E5B08FFA5B7EC356A | sha256: 57A29FB8F194E8FAF93194C2F028AF9EDA39ACCBE0EF77C6837CC04AEFE65BA7 | sha512: 54948C0FD890FC09CFDA17312955D0830F6A0ED044F841ED252963A2BBDB89D00980ACAE3B6E270BE00824C771A6C101F641A048940F977DC00ADE9EF82A03F6
tools\cs\Microsoft.CodeAnalysis.resources.dll
md5: 8F1F8327A240520A9F995F1B5A90BF5F | sha1: A67F9ECA76C492296D68A04E356E7858A49B4BDC | sha256: A99F7E6BF9F58E6D86C4902FA5E433013B9F3214CD1829479A9ABF175F45B62E | sha512: E7C0DC22AC3CACE1CDDFC88C343470B3C7E5095D34721D95DEF958E14C938FF695911C50FC0C561118266A96434E2E19F6A9E90BD0FF60FAAD8E9A1579A97177
tools\de\Microsoft.CodeAnalysis.CSharp.resources.dll
md5: B3C71C5D90257E070082B61F659F6ED0 | sha1: 69092261BFD28B53EB08BE29D18D0D0E3F35132D | sha256: 66CAC28C06A7B58C554D94BA9A2B6C613EEC4686C88AC9F84B6A642F4E084678 | sha512: FD77BE8C8EF0CB54CE16C0788DF83CF16060460B1A37D63AB2AC600A248A6F3B64F569DDED2890BF6D821528E62FFE3529FB7DDA0C74961062CDC61039729C6C
tools\de\Microsoft.CodeAnalysis.resources.dll
md5: 50B2E89AA831F1043C02AFEECA1C7854 | sha1: C3B51AAF9F85B60EB211B5EE65D2D00E17495C76 | sha256: 29BD9152439B105C40971DCD9DDC98216D8CF704CD9B49C8ADE38FC4A38FED1F | sha512: 703B505260F54743316673125CF7EC0F0D9C262A1EBB39BFEA9D89FB02BAD6F9A299C0D1E901FECA019D82A887B41A264FB72465A98A2A8D35B5A5094E13391D
tools\es\Microsoft.CodeAnalysis.CSharp.resources.dll
md5: C497C64D7A60339D370B850F153C1BC3 | sha1: 19E7DDAB6B415EBA82080BA70F82819C4D0BD333 | sha256: D6CE44C54C13236CC5058296099CACBDDCB1473C3E999A70A9396F2445DB9A18 | sha512: 6CF94E7B9FBE1FAF48BCA548E30B039A31EF0646F6BEEBECCEBB8BA29F4D233F1A3CBC7DCD6DAFEF8B4829A2E1A95377E208117D4825825929AD38661EE71759
tools\es\Microsoft.CodeAnalysis.resources.dll
md5: 02353B7743A962175A6BF0588CD4F3C7 | sha1: AB47C27FEABF1E39636DC63876CDE505126F2FF4 | sha256: 385562677A02CE0095098BA2C35A723FE34FA488D59BD50FA859122C8C7E409A | sha512: 80F6B352AEA5DC8EA9909EFF171935165C75B3494EA7B58A3083388A4FC574CB71D544CE2E483CCC21333550F86B5399F88BAB5E518E7E72924CE2C9C237F571
tools\Esprima.dll
md5: 3CC99D0857C062CBA8DD3445DDC29B74 | sha1: 1052F99C8203FF1C36D014A1A487D845AD023BB2 | sha256: 6678FF30C4BF949ACD5D946E2AB82975B639273899598691AB587876632DA3B4 | sha512: 6440E74DEC7251020333569730E08C73A8F6F347D8085BE8EDFD289FE2A664DF730C608B9903AD0A92353711D30EA9DF1AC10D28FE1B343BDFD32858CE6826A3
tools\fr\Microsoft.CodeAnalysis.CSharp.resources.dll
md5: A4A3C74145074BAE2F060A2304FA7234 | sha1: 5D62C421141C9A37D562314EEDBD59FAEE1FA76D | sha256: 6C7CA0294065AD38C86C7B6712E440D8CD2F555C89AAF7258B29E7C10EC42CA9 | sha512: 05F925A0B55DDBD4DA59C6BFB37FF39C6BE8D6C5FF518AD430DA74F27283234191B604048CD8059553A3C431F91D9F260D4CE0F3B1DC687B7D2DFAFD422FBE49
tools\fr\Microsoft.CodeAnalysis.resources.dll
md5: 1E2AD7D87F87F446B09BCA4B290E65C0 | sha1: 41B12F71B78629FD0339D7A862FA455F97A7ED2A | sha256: CDE0D2CB203657136F0F7817CBFDE06224D33AD7769B2A90FA82BFD4E227DD4D | sha512: E048ABF46E1BA6728C3D9CC4248EA7F12EB41B9A21147BEEE0F251A0BBBE1287E12F30CB55301C0ED2F19DC091711F5DB77522633AAF77BA0DDD78CB639F074E
tools\it\Microsoft.CodeAnalysis.CSharp.resources.dll
md5: 2F537386B3BD202B89E57B1BDBC64659 | sha1: F06DF1ED1A4C6BB939B73C1E69B10D1D6A1F25F8 | sha256: 904FB8A42B9CA144A744411D44D61CE6D99A6D9C716FDE6227207F2B56D28B34 | sha512: 00C055DADD34498E4B9E9457CF1C99FBD10DAB21F48F5F6C8540DAC537DFEF4B351BDF922AA69B32376B032D3A43B5629B4FB1AB6FF61E4B119FF36322E63D71
tools\it\Microsoft.CodeAnalysis.resources.dll
md5: 8D0ED4CE86DC38846676F6D75357053C | sha1: 926FAFDF5F8D27B9E4B4018F48A0CFF9BE33EAF3 | sha256: E2F6D7136F2D1EA01354DE3293526AD5E0283F9701B7321BA31EBB6141BE234F | sha512: 09951DC4F31C989FF80917172830EF951D9AB4A974CFBCAABF95951F5A759AFFA738EDC0FCB65F07D9EAD0E667427B50A464E5BA199BD3300BA5E2DBA363CEB6
tools\ja\Microsoft.CodeAnalysis.CSharp.resources.dll
md5: 6FF3606587E7A27C8C967A0800684526 | sha1: FB17717AEBCEB35B68AD71B456CA6D087EAB44D5 | sha256: C3E39BC8AAA4431177F4C0502398F6EEDE986BC360615008038D0AA0E6C3A134 | sha512: 4EC77FA73CE466B38411827DD93E5DEA2C29E08384F6234ACE4C74C2B042CB33EFCFBEDD7026234C43EBC3CB91630F2128AFAAD19EDFF1408F6EC8FA6B6CD629
tools\ja\Microsoft.CodeAnalysis.resources.dll
md5: EA966AFFED690CA1249731561FE80831 | sha1: F628781DDE7DA563F7FFA6C4A3A069B0DC2947BC | sha256: DFA44F8F54AF34253B7937B1CFD88CEC796EE8CDE7CE121B92232F7A82716388 | sha512: 0DACFB08A81948EB0C2B6D2D5527ABAF6243617CA3D1E98B145DED62C56E34103B029510B87032204AE17EA3BE19459ED58C7655A14F238D925ACC9AB8175528
tools\JavaScriptEngineSwitcher.Core.dll
md5: 50A3D4E74B6740B6D67B4DD91C7E8BD1 | sha1: 8793E084E84DFBCDB0F2264E7A009F3B453E205C | sha256: 1068D7A3C8F35A68DEFD012A6A712720C4C41C4D38F62C44877FFB769A6A9146 | sha512: A7DB786C71803A1764816F84859A0EAA5F92EC5307C52D217172EB72DC5D7ADE7DF8F4CFAB9D206723871F494588A082729D6EC43A78D44A183D7CF0A75FC9FC
tools\JavaScriptEngineSwitcher.Jint.dll
md5: E54E0F04BF42A6F6A811BB3FFA36CD22 | sha1: 2399476A5301CDDF7D3B976F78BC9F1853F5163C | sha256: 8C184F0DA387A1E9E0282428A780C203921C4FCAC17C4CA00DEB40568979838C | sha512: DF98ACDA8CAF88F5B358E3B85C20A15965CA6A9B236CC0E5C1CD6CB20CDCB17FA240EE5CC815B51C53F03AE63CAC650C54196886BD9D79E40BBB60EAC5E8833C
tools\Jint.dll
md5: C189F4B9E3D79392CCD2ECBBC615490E | sha1: 7F1374221FCF629D0CC1AB81CBE89A4B775EB76E | sha256: 3A7365506788116916F5BE279C6AAF41EA83673A12E713C3A67DF415C1304402 | sha512: 4A1A63F35125D0ACBFDA4160DE2BB2172CC11577F8C5FFAE8A0334E1949BD59B6349A966AAA8403D18F277214930842379CB856FA9D3A5645C850D96D52EFA3C
tools\JSPool.dll
md5: 7ED560572F1706EF8D0DBF2E3B8ADC8C | sha1: 535A660BDDDD097056C48D85C7FD89F0AC418A50 | sha256: 157D42906DD7357D25E4B58B2689547EDF9808232D4593AEBEEC3E39AF92BE8B | sha512: 0B2D08901A3185CE4456BC7DEC82850CA257911EEEA4F0836C953C76210AABAB4C0E1046E2ED9F26AB04F20CE10B5A6E428EE8A564CCE7A85CD4E8E241FBB135
tools\ko\Microsoft.CodeAnalysis.CSharp.resources.dll
md5: CED87AF9381DD8A99FDF2028B56CE465 | sha1: 579CD3825C964F43AF4C6D94982562C23B613431 | sha256: 8F7587AB9BE1DA570F7F905F23BA76DB10CE638E9036605656C68DA40A23C085 | sha512: 7464D7ADC7A06FD9E8FB656A7BC926D11A1BAA25F89DE7FE0DC0E24211480D200212E6499086886068B73BA0114DD7FFD1950AB68159CA59ACE2A42E85BA70E7
tools\ko\Microsoft.CodeAnalysis.resources.dll
md5: 979A9451D4841F4DD897D3DB66968891 | sha1: 5495C509A17AA221E943CA51C3D35D597AA672B4 | sha256: 7388C5D1CC1A26D72FA17973827AA3B396E0F9EAA970F6BAEF6ADDD94E365C9E | sha512: 93A070F07EB15A3214E8C8F4B313614ABB52F165C1E0ED53828D8C87F92FBD4C9DA0D071F6C1F765FEA09DC4C7923FA7219EC2BAAE1EC5247E4D78F079E26712
tools\LICENSE
 
tools\Microsoft.AspNetCore.Connections.Abstractions.dll
md5: 390CBC5D82129BC6F4A816A7FE0D37E7 | sha1: 92B9AD43AFCC781D72334733D4ACBF87E84F2757 | sha256: B260E0C06E128A95109658C0E4F4A52C8C755DF52C0BF49E4166608ECD06C472 | sha512: 48BC5486DA80BFEA8BEDB21EEB84174D3CA155A432711750D64C71EB3CCFCE5234668B23DAED66B5671167A7D5672862813F51FB456E754EE183C436D74560D1
tools\Microsoft.AspNetCore.Hosting.Abstractions.dll
md5: 14A7A2B79865DE5C273B13583BF49763 | sha1: 34B5D578BD1C1FB0FD29ADBAF8E270909A803CFB | sha256: E15127AFF5576B0C5C84B8E716BF3AB7C5C0E5F17764B6FAD45E88E781810284 | sha512: FA3E7550887133551094548D4E089B219F9DCD4FF07D3C9298CA85B1BE8ED3004A7643E03D1293D1A378345D40ED86FF7B44036B2B7B1D2D42A7DEB7BAADDAD2
tools\Microsoft.AspNetCore.Hosting.dll
md5: 158BCC3EB400F5FEEE9E3033EFFB4C21 | sha1: 4522210C7A39A9C409F5715111815D7058ADF4B3 | sha256: CCDACFF9C323DA118EF33F19F0263A6568797FAB5439E6A3AD282695A9FAC23B | sha512: FDC4AC628795D3DDD7B3E1C8928C75C60F7B289FDAFDFC54C7DDE072E59DC3A6B0A8669D23549B282B66E0EADAEC34F533ECA8355BB1345812B73D39575E08B6
tools\Microsoft.AspNetCore.Hosting.Server.Abstractions.dll
md5: 4D9D797C82B0AF93625718CA9012C17A | sha1: 910EEE42753057E3E1849391E5FD4746C1F876B3 | sha256: DC55B200190E101780720EA8C8D3B53F2B5653EBE6F0E0676F1B64595BA9D132 | sha512: 3C812B52C00E8771849D991F8A518A0AF4AD3B52332C86078A3DE08077625784804FF0FD95BF568743F06CD4B26EC3B7634EB02B1AEFA2394A8DFCD21DD4C369
tools\Microsoft.AspNetCore.Http.Abstractions.dll
md5: 4106A161BDBCE068267E9054FD907A85 | sha1: 0B5679B632122A75F91F151CF88D63F672875BEE | sha256: A852A628DAFD880662671395BCB2417CC86429F0F2D46BD8F357C7875862A615 | sha512: 731F1998717AA3F156033B7C2D711F4609200C1BFDB24902ED366CEE2808675CAA8C1AA8D3687E5AE0126B136F02BF9BDDFD2CE9BDF462FB630D5D7F087D1092
tools\Microsoft.AspNetCore.Http.dll
md5: 916A2FDA1B8F177E3498435E0B3F7D40 | sha1: B71DE9C781164148508043E3B5C8DE8E6CC77BA2 | sha256: ACBEF20C8A120482B61C4A570FF88E86852B564237AEC474EEC9F9040E5D7548 | sha512: 55F78889E58B6954FE6D7EEA82871F01F694C40EB7D309D49064FB390A7C2A976B23ACDD7EB0E34F49E2E4FACE10D772168B980C0A913DF0A35D46A299EF40F5
tools\Microsoft.AspNetCore.Http.Extensions.dll
md5: 32344C4A2ADF49250DC6E641AEEF0467 | sha1: F1D0325B897AFC15C7BDA9BA3464628244521694 | sha256: 76C199FAC18976B62780C83BD82205DF54C716D97AA2F70A4E3B46B63F68AE7F | sha512: 085AFDC4C3B58462C005E68A0C5F5C1F9699F5904D4ADD1678366A5EA3AD440F2CEA88209739E243A39475EAFDEEDCE1BC838923A1E2BBC676B089625780F8D9
tools\Microsoft.AspNetCore.Http.Features.dll
md5: 2CC772C2E93D19E28098E17A6A6EB03D | sha1: 790B8F91CF0688B92152112305B9C076CCB7D889 | sha256: 276C50519E010FAB6CAD092F192E470D07E44C633399A4BBE9303D9C9AED0A98 | sha512: 980EAC653EAF674310B9CE543BFC967DECA56B3ED47B917E4916E7A7EED13584E05DEAA5639C2F3EB6E0671C2795E6948D1A22ADCA1D8AAECBE77696AA2088A3
tools\Microsoft.AspNetCore.Owin.dll
md5: BBF67F0DDE3BF4A2B3A9888A6EA3D667 | sha1: 56F167F0BBD8D7026968103E87B6936D72903B61 | sha256: 232C86A6D100EE03BF601C6A5412376551EF20B1CCBE39466A46E1617B98287A | sha512: FCD49BDE9EE3DDAD947B3676A87CA459FE75AA598917BAB8EF599BC638EFC6BC9310C6AD65135C6715714473FDE6F961A292D8B20078F156904F997D05BEEC8E
tools\Microsoft.AspNetCore.Server.Kestrel.Core.dll
md5: ECEB16B304AD6A5C37E84E81D9B3542B | sha1: 221C6F6A660E959FC8826DEDF6FCC92EBD0862BB | sha256: 36E6DD19B5E41165654E33FBFB80B4F76F710F1E509BC56E97CC8F738D81C450 | sha512: 7EEFD423FBE3A32F30A421EC34F2D4B312EFBFC2BBD131C4B6B93A79042DEF28AADD53360C1B582157FD430BC8AB887A3044809BBB40E60CAD1C1E15DD4C9DBD
tools\Microsoft.AspNetCore.Server.Kestrel.dll
md5: 3004EF05D102AFA76BF3460E5A2E76B9 | sha1: AE8D85EE777A3E0EECACAE58175E852103005398 | sha256: 54831FA6DA2E428FD05BB82336F6882D41F49FE79F0B04D4DB2ED8D2674FE23B | sha512: 9DEBE1636FB1595B4DFA2BDB78B1D8AEB5D90B72635FE4592E1A4CAFCB53291BF9002830B7024E5CCD7F3E77E52322B9A364CA2AD7863E85F43EAE50AA000610
tools\Microsoft.AspNetCore.Server.Kestrel.Https.dll
md5: 337804D96F37A0F74F7F1291A68F6672 | sha1: 9B17BABDC0A6341FBDE227889C48FE4896DCF760 | sha256: 014EEE2C859804A6B52BF00D54A96C24EACAD0A006B8AD2D56BE686EB3613E86 | sha512: 25648A756DF2BB495C01850ECAA95757AD51378D4F3607C513E3C0C2397E39262AA41C7E0BC53497DBF725EDFF6066A97E5CBC3AB00C9BB85CAC36B0963A296D
tools\Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.dll
md5: 877A2436FB99D0CA59C56E38ABF5959F | sha1: 028568BC166509C3CF2BFB5826224BE23255E4CD | sha256: E98B0F67476A4040CE6C227E107285C790E538A171269EC6FBAE031B3D7B0E7E | sha512: CFB42550FD2AC8EE15632BC867743F7379269A64D16D9F141E1A876084050233A432448410BD14F3FF8C892AA6939DE5AD55AFCD48E65A61B1BD9D20BBF757D7
tools\Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll
md5: 4EDEB149494732CC16B86C0D205A936B | sha1: 79F284432AD2F8EF0A2F42FE48FA1E47239B6BC4 | sha256: 8F0AF6B2EA3D1216B9EF89876383E90CF71CB9813143BF2FDACE3E9578C12FFD | sha512: 99AD5D88DC1830B16D9B1AAC3E09C83FB1F93B9B7D400716C6835CC5AFF32ACCE9369C0EB6BF3B2DC378DE3EC47B41C8B250CB9D2CD411EE90E92BD37EBC2787
tools\Microsoft.AspNetCore.StaticFiles.dll
md5: 476A1DEC39CB62E5D48E7B949512250C | sha1: AFD467369E4F610BCAE68F3AFF6091B76009A167 | sha256: 02E7608657C4C5E46B20DC079ABFDB96EE2AF6149880B364F239FD598D84AE02 | sha512: 2EB876462138D201332A2703C237897E1C2B1A73DAC57F72F42E0AA0E73F0B7C1F161B8F1237EE6715D2D29A41BC30814731602D12B5A3616C95B51CB06A5857
tools\Microsoft.AspNetCore.WebSockets.dll
md5: FB08199BC94EF1829EBC1A5105917594 | sha1: 8538C7CB6F211DDDCFA2E50D843C83AF55FD7847 | sha256: 9C4D59F5C74C6C2C3BF69FB1E5707B04EAB14B3311C89B974142FDEC88BC44B8 | sha512: E589D56CEBD4E5E104DBF8C760FAED7444158FBF41659CE739A63093FAF5CEC6AEC4983587D6F89E78400CF22E322217D81A638DC3CD7FE90BFC74A5AF9E4A15
tools\Microsoft.AspNetCore.WebUtilities.dll
md5: 0D65948A9719AA94218B0012409C3398 | sha1: 92DEEE204350C7C029F59054B115CBED8FFDF1E6 | sha256: 0F96A425E05DECD3484EECC05F1957EF39768DFB1CE2E4CAC9E10AC30361AA8A | sha512: 8438CEEB545F80709594EB32219961E5D13D830DDF7C391866E7E27431FB0658BE0A24653F47C8311AD451C365984ECF8ED9B88E963283E8A99B9FE5A637486A
tools\Microsoft.CodeAnalysis.CSharp.dll
md5: 86786B9AEF7FD72DE54E2BC4AC12D4F9 | sha1: 9F0649CE76111636E89953C8AEA07CC6650C107E | sha256: D3C93C6B965D1045F37210EE006BE3C57DF1D34F905D83A04213B7FB177845D6 | sha512: 9A7DD18010C1B149F25332AFCA68DE90F2EDE3B34D50A1684B363DB495006F25CA56B1FBD7917717761BA82B960E7C2A6CE0D2ADFC2E6E9B5D6055FA83B49C8D
tools\Microsoft.CodeAnalysis.dll
md5: 8CD4B0D6B895E7C4816F90C21064A3B8 | sha1: 4F651449D2F09CC7AEE03B0FC0EB0C355B0D98F0 | sha256: 4D2A2635E30DD0CE2E30580F17B2CF35EF4E0675F5E6A7D9B0757F82BECCBF72 | sha512: 3987E1986516A4C8D580BA81403F98095D25668CA7915E417754CC381121C7DF8540D98507CDB8EEAACA6CBA9323B639F92CCE150DB77E2AF9272415E3BB1D09
tools\Microsoft.Extensions.Configuration.Abstractions.dll
md5: D8E064AD8F2419F204723CF7CAA7AB0B | sha1: F19F20D758DAE8563FC4914C737E06F1292F58E2 | sha256: 32CCDB2AB4348F195D247F920D1432C0CBB1CC5FD548FEC8EE562C438AA48849 | sha512: B2ED620BC914433435E655F7A1C956735F959C3E8C60A182D96AB0A59A54C81FFA0C52214D88C6E48CA82E198AD7E9FCB603D6DC017EC64399FCF40D3178C341
tools\Microsoft.Extensions.Configuration.Binder.dll
md5: 3FC2AA5A1717ACCF911040B215BCE29E | sha1: 4B70D0392884C1DFD5EC66242EF58F7F804F58E8 | sha256: 8D0BBBD3DA37805186B4958E9EB8C7DA038A759176E26EAE64DBDEA75E535AD2 | sha512: C74240A310AD5F236A805B40C8C407F0BF501BA6664E259FFF610DEA0D0148628DF01EA96DD1D03A7C6CB01C7F59D374CB9B2E613A0B93813CC590AEAF0E2D4B
tools\Microsoft.Extensions.Configuration.dll
md5: BA5145200FCEA6B50A2223F98B468BD3 | sha1: 7AF4F0B8A4A7B75763BBC72C5C3EDF3D85FD8A50 | sha256: 5971CA80CF7EC34845334C9734542CD4DE2548FB15192A19E6DF3272019E6317 | sha512: 3E442028CB9208B1925D53BC3F0146FA832E1A912B8C09DACC6B5EE419C78931E4B5E256D58299A3ADB9F54B2A66F24E454BE74017FD0F0E2FBE5B7E98ADA464
tools\Microsoft.Extensions.Configuration.EnvironmentVariables.dll
md5: A388C8374DED1834EB686E18B19A9B1F | sha1: 4A45907E162BA6AE86F21A87747CD7E9FB7A0E84 | sha256: F2762C16619608D987352485674F72E3E82BDD26089F86E86E18CF333D7DF24C | sha512: DD3316602A5851B289E1D674B46DCCD0612D3E59D981910CF400D38C2F56F166D2315DD44C019FFBEFC2E4643DC69091807BDCB9E6CEAF5F82FB35D30E417C67
tools\Microsoft.Extensions.Configuration.FileExtensions.dll
md5: E78DF79160EF9ECB882E92EE9ACA7B3B | sha1: 05EAFE02A6A0F2B5AF245101CECEEFF54736447A | sha256: 6C89704A56236F7886CFD6677DC2AAA22984D5F5312F31735360DB7C8C3B51CA | sha512: 8D953A88E81E44AA04827D136598D98F1445C2665E1ADC323A88AD5F6634571CD4827B57BA0F28D7CC9289E40CA8B7AA5A3366CE2F244A8B8AED86B9B4D34E79
tools\Microsoft.Extensions.DependencyInjection.Abstractions.dll
md5: BD0CB2BC62A2485E93AA36FA6941C0CE | sha1: 453CFC5D9A9CB9C54EC38FEF07D7BB3289484C7E | sha256: 4CBAFB5C80B11692638D857C0227429F56CD27DEE8FBF85B75CB1A98C8A86F84 | sha512: 14C74166CD8F010CC6F0C496931E0AD11B9292E35FD3C899620980432C191EF4E44A44100D675B5D288BC779FE850E0727E161EE718CAA60D1FDE286BD65A8AA
tools\Microsoft.Extensions.DependencyInjection.dll
md5: 363E7F5278CD44DB9FA09C37F2C6C151 | sha1: 68A19233EB39050BBCDE8DED96E71CA07AA63590 | sha256: 4D3B9C60FED4B0DDDEDF4B4C4A9E2C3DE886E06C7EADE81C0635F4C7D57F8CB1 | sha512: B44071712A01FAA5472AB20E20125CE4E3CD295E9B1344B34B54CBEF89909EFDFD1C13FE044B33A9AE585D06D894340691D69F925A014D4D0053D162CF314781
tools\Microsoft.Extensions.FileProviders.Abstractions.dll
md5: 4483C37E62EF068827B6B1CB296D506B | sha1: B8B72443C0E38DD3FD107D2F7FDD4AF924F8E47C | sha256: 5A4E55AA9C0F4E3950B5080E314C114B497878A2985CA5B496794B4E2D649A95 | sha512: 8FBBB6D02C7605C839B7A87D02BE43083AEEF005C9C8FE0B0A7B130850726F1C788BBF6551FB6C1E04685A0BEC38D4D2E7915E1F461BF3D4AE65A4EE29878387
tools\Microsoft.Extensions.FileProviders.Composite.dll
md5: 2596365E3C4A9D15C91CDD9FA8733EA2 | sha1: CC57549B96E2DDA8C6B646E476378FEB6769DD1F | sha256: AC2CE33A44CDF26D75AA9885A150E9AFC2C4C676FB94E6A7ED1CA01E856DC1A4 | sha512: 28F99B184701F5D9A0DAA43272C94CCC6AA7E75B8664C808B436F505A39A7ABCA16184E78DD973E7BD655C15B7C5C3B65A9B425DFFA4AE7D0F7825507D94E265
tools\Microsoft.Extensions.FileProviders.Embedded.dll
md5: 476F1E2F6C37DE1FBD6DC275935AE3B2 | sha1: E07E62E23466EDA7397B5BED09FB29DED523F9DC | sha256: 9BA37C67D600C3D3FDDB0A0428F4EEAA5007AC41B79D0E939D6B1ED96CEB7681 | sha512: 7B774A68010730D6A4AEB2F55A2A17E0EDEC78640B425908963B4F06D4E68123217640BD428FEF21C66868A6A43C36701F90FA1F2B06E05E835C350131EDAE62
tools\Microsoft.Extensions.FileProviders.Physical.dll
md5: 1BE5FFCA9BD7F3E8761574783605C7A8 | sha1: 10715AF2097136185EFB665817213374AE865C3F | sha256: 69E686E91DEEA8B0671FAA31C3AE00B43A99CD124CB0B524BBDD261F81A4507E | sha512: 645F85DF8A8B05E2EBE69D53B3C1DDC852C22EB8557118633A46D0189BC714DA156CCDA453A4C9BF9E0FA1225CF971A65BBAFC77A47D650A336D81AC99CC8A34
tools\Microsoft.Extensions.FileSystemGlobbing.dll
md5: 76C9E64046B8C8BFE24E782B2272782C | sha1: D4FD4EB46F81D82A6D1D33BCBDFE345F1A8D3725 | sha256: 5AFAC60A95DD1E942F249ABD32818E448535F058985B1FFE9163BA5D9902952F | sha512: E8C90AA3637E88A388D5EC1981533FCA4B752572C29DAB5E1D067787967644F6E330C96AE1124760CE1017461FB6DA9AE5578E24BC5FD0BB53F969DC110D6F11
tools\Microsoft.Extensions.Hosting.Abstractions.dll
md5: F3616191069793A8C40045ED0FCB6309 | sha1: 8F4D447F6E5BC442953517DBF5598CD7CCD945A6 | sha256: FC67990FB44D03C9C61323E362AEFB749024192963D87CC99EACCCF5B468449F | sha512: 3819305D55BCAFB33FA867F6888C738B1464519E3915F47773C3044116706C7381F226A72AE62241418B6B1AF68FDDB5AF6A85FCBE49D63B1F6C099B592D72B8
tools\Microsoft.Extensions.Logging.Abstractions.dll
md5: FA43B31FAC519D4537325B2D77595C3F | sha1: DC3C0912D2275684A95816401F63E155FE2B5ED1 | sha256: CE4721EB7591C77EC23650C079C25730BC9E4F2AF440ED0CE913258151434CDA | sha512: E9E050EC7BD310CE3C5C13AC7F3849DD96EE34CA68A91956B956EEF6C228A23D790736D05F07562B039A888471F823107D11384E72E172F505192964680335F4
tools\Microsoft.Extensions.Logging.dll
md5: B7F13CB30356DBE3E3BF7C01E2D8C7B1 | sha1: 712900D638167A85017AB7F99119964D84E0A39F | sha256: 9CB78661A77FBBAE56DE368F018AC9B06E6A171DAB37E49091AC4ABC4A3D1126 | sha512: 6DF9337D590ADB72DF002CD64005A59F60BA064B2AE2D207559F0B43C9C8978AE75B22115556F0F4E7567B7B7862B99FE069EC92B3C98752623636BEA92D1BB5
tools\Microsoft.Extensions.ObjectPool.dll
md5: EFB942EDF1D49CCD20F900B0749D73CF | sha1: 02640AD2D0578BFB0ADE2522BE39142857AFB15D | sha256: 50256A3A6BBECFDFCCE566A1B20AFBCCA45674641636F5C658B9446B582416EC | sha512: 27E2EA03A2ED6CFFCB01A156E7EDFC7A699EC4EEF4A96D2353B57F53EE2B10620DCFA876AB8B58F38BDF7594F20B6026DA166A2629449423C3D231516F9BCBE9
tools\Microsoft.Extensions.Options.dll
md5: D195309528F364DFACD3BAE393EA08B8 | sha1: 763721AA95EB354FE7CB88AC5EADBF6D854BC5CB | sha256: 123766D210B9793CE76C2779FA87B3C8FE122A526FAA6D46841CF7CF6E5495FF | sha512: 332578FC59E8C518A0E45957D20A9A491B7D6D7567C1655C2F2FA5535450D2D9238B7937BA26B1EB271335E0DD605CB64768AC875EB0901692D021ACB1E344D1
tools\Microsoft.Extensions.Primitives.dll
md5: 30F911D2FF61105F7B5680006A9E4DEF | sha1: 12285FFDA48A642F3B06B06CE73F79341475C006 | sha256: 42BBC209A1A39F3BAB6652478DE1BC7DD240146E3B668D34253425EB663BCC4F | sha512: BCC6E1B979A370D1E11083327776364620E7055CF21D05F56F5867839DE77C5C3823BD1ADF123865533263FE7766A6FDE6E66A55535C705A9097662E1181D463
tools\Microsoft.Extensions.WebEncoders.dll
md5: 50CEC5B3682A9D94510EE756D8E93E11 | sha1: 81DD3B508059F250AC99F32AB8D3D0CCE48CAEB8 | sha256: DADF2C6C37BB7FF4756C88719C13DA2C7556C0F65CCA12A847CBC092F37FF899 | sha512: 2D74B0CD796AFD58D6C42F711BD696B245056A286B311465605E57A03ED566FF2F93F838187F8489396D8486B65D6110BFFED2F739BC7B8F967F571D122A3105
tools\Microsoft.IO.RecyclableMemoryStream.dll
md5: C11D13A3233ACBDC58CF2A909CB3F650 | sha1: CD964B3CD017B52DE975C66955AB4B42DF3BDA59 | sha256: 265E85A286DBD102F3701963A5DDBFB15B3ADEFA87FD94EC194ECA1C00223345 | sha512: 870A32A67D49C1A8774FC1CE3718EC72F6743431DDD4D0ED51C9A92F541183CE3442AC9D9BCC58F639A1AF99E870DCA353F67279E7CFFF5F98616711A4A3FA98
tools\Microsoft.Net.Http.Headers.dll
md5: 56D833CB79FA1BDE835EBA801899F55E | sha1: F04EEA7AC13ADF4224199D6362573B866E91EB97 | sha256: 3FAE9FB43AD7C1CE9AC8D0FCB98CC893408F432D468CD6403C7C7D44C862DD5E | sha512: 1011803AD92CCF94F4118663D0A151AC7B1029752FDFFCB50EA24EB3042A86B01E2FC5D9D7C6C8D39BAA82F45167F8AA66D31D5605687B19B74354A61042A620
tools\Microsoft.Web.XmlTransform.dll
md5: 9709B6954CC22CB20AB0FA2BE1E071DC | sha1: C53A5219906D852C99DBE74A0E6E63CC2B5EDE25 | sha256: 6882B7F8543407739E7610E65CFF7E46772D6BC6EE246870170F6CF6567C0020 | sha512: 14EC32EA52DD0B75ADD3A862667490BE9380AE15137D6D0B49DB0764F9814699CB6F4DEA7176BB91D38BA150333D3715EF386050C227E02AEC71EE6E3A2B72F9
tools\Microsoft.Win32.Registry.dll
md5: 67CFD807DC31FD7926AF761F6C3BF876 | sha1: 81A84D647E1199A9E6128CFE957B73F6B0B1CAB6 | sha256: 7AA3A699FA9A35E6857BA9CFD1F382E3BDFE3EB382D58B43E3282E1BD6F80AA6 | sha512: 891D2F1E4F5A833B319088E7024EED4584E8A10AE12007D1F67ACB0255B65F3449A3C290026AEC3657C7F3B9FFE4D84C5C81F55D5593523BA2A5A576EFAAAFBC
tools\Newtonsoft.Json.dll
md5: 916D32B899F1BC23B209648D007B99FD | sha1: E3673D05D46F29E68241D4536BDDF18CDD0A913D | sha256: 72CF291D4BAB0EDD08A9B07C6173E1E7AD1ABB7AB727FD7044BF6305D7515661 | sha512: 60BD2693DAA42637F8AE6D6460C3013C87F46F28E9B0DBF9D7F6764703B904A7C8C22E30B4BA13F1F23F6CBEE7D9640EE3821C48110E67440F237C2BB2EE5EB6
tools\NuGet.Commands.dll
md5: E63DA7A8419E92833B50F9BEE5344E94 | sha1: 94E1C354820A63FF8A9A7DB5C50A29121F539625 | sha256: 8EC8075D354F345044037DB539A14FF9256B278B4D628A675345EA6AD32E8B44 | sha512: 53766457FFDADBE8D2C33490CC3ADA7EAF2ADE3DD3A29C30D3D68C36CCAA2320840191C44BE6B295C3A71BFB4EA3ACDF4D0D563B1D2DD280E8359BA38D52A2F2
tools\NuGet.Common.dll
md5: F6C4E877AB3160B7EB6BBD6B462FE650 | sha1: 15A6ED0F5FC741AEF80FBBECDDD832F647FB0708 | sha256: 6730DF6EEF5841039F2CD127B6B829764DE67EB8BE98C07585FE3321B2CA7E17 | sha512: 7441DD4F0752D0D1BDCE55A2A396286438D4CEA1118A30357C8AB8A32C5B02FF151A45DAA20231F05F6E8B67A991751DD2BF60912B82CEBEED60F870006B231D
tools\NuGet.Configuration.dll
md5: 325A4FC6ABFE121A8B7107A699A4F396 | sha1: 17833EDB66D3A422388D44C75A700FBB84BB18E9 | sha256: EBA9167384DEB453677D36C00BE786FB35D0AA03DD3B862FB8DD10A794F6A3EE | sha512: 2E12E25AEA3A184A1F31A0107F222EC4F8234AF69EF78B9BEF1A58F60904DE2621D560DD043BBEDABE92191F7C2CC85A5FE7043741BF03D05E46B6050F5E5C15
tools\NuGet.Credentials.dll
md5: 7B1C54315E7845373E368EDB6EB53634 | sha1: 070E870B0726E15AF306F724B07175DCB425D388 | sha256: A6409BD8E061C5EC4983B7A67B5AB98BCE86408DC43A73A82809774AC828A1A3 | sha512: 611DF17E60CE513ABA37E60BCB1772CD23D7B4DDC1B5DE97B540CE491316A3CEB610CD9EA6D193142A8058A0B8A9A3226D057883A2DBF390282B808E57D60181
tools\NuGet.DependencyResolver.Core.dll
md5: 8C285D6A8C9FB163D3DBF844B4BB0077 | sha1: 5AC0141CCAA6AD725DAE3F205C5E10F55D7293DE | sha256: 374617DBD0ED1A5D5886A7B12D97899F48141C5FC0E7AA376CBE4D6DB257F03E | sha512: 8D7278279BD4A73C25194550F3449A378CDDEABBDA3C030B6AC5EEA76708706C095C49049616683CB2C35CCDC3342C3F5BE05F22AC16A949551634EA917D4800
tools\NuGet.Frameworks.dll
md5: 95932675E76C36435D53C8A821697A61 | sha1: 76C4B2DCED20E3A0937B283875A828C268866ABA | sha256: 434AC77FDB275445A5B7209430A3E9E4E56890A1F1F16E53F1A1BF0374455928 | sha512: 34E49C6754E5DBE0178BFF613FF8607EC0BB6887573B8A47C9BA435B082F10D3A62CA283D2F62090037EAA8A6E5B20A0918A27D24FCD3E04295D8A3595333056
tools\NuGet.LibraryModel.dll
md5: 40290021AAE0B0E958AF2EF320562C21 | sha1: 73EE439DE585CAB535397CE321C402A1E06534FC | sha256: C87BF4075974EFB287B268FA4284B3B23DFD0F8061FD7F3466A65F9C9AC6DD6B | sha512: CFA99BF7B4CFE3481E6F6AC787BA76D12DA3C49E7F7B45757530F78527AFF9A8D96E8D1DF2247D0968AB7A4C3897E5DC82DDFDEC7701DCD3ED74BCDF3946FCB0
tools\NuGet.PackageManagement.dll
md5: 96D173EAD5F62569F6E4411EA2BCC270 | sha1: B06C789684EB4D9D2C4C24F34C8D7F9E2531EFEC | sha256: CD449C04696A170E8F4ED7233E271F9D7FAC8306D2500CF1BB1D07601E93AD76 | sha512: BFEAF6DBAFF47202B6A4F2207DA0824FDB31D257820FCA012983BEAE760D761EB46AC0E2E4988111BC94368714197BDF6A5B88929F62177ECE61E9AAA42750EF
tools\NuGet.Packaging.Core.dll
md5: 527C31091FF6D7CC18AF21B20192857F | sha1: 8450D8A0E9E0252E88488CD12D2A108FB25210EB | sha256: D92EEA179F8DA7AB517797C511DB73AFAC766A105353234154EE73E77744AF46 | sha512: 64BB9F943DC906D65F1C2FED6086233A997CC14E75F8CDADC50829B6C1B1C51D2999869B1FC5E30E87E7BC58058486BC3120289A91FB95961CB8AFC3F6CE1E12
tools\NuGet.Packaging.dll
md5: 09A449FAB28E4761DACCECFAA42E544F | sha1: 5C5354997DF6D9A65688E63E7817857B11F03B49 | sha256: D6220193E1723099977682D65EADB0D9D7962392633E086CFFAC924044261583 | sha512: E16249DC344B882AFABDE697ED8754C70236DF994B7EBC41FB9DD19B566D78378FCC96DB4733B79CF801FF01B72A185D658E1AE110541C224B5DD54002175805
tools\NuGet.ProjectModel.dll
md5: 2649A77579A36D4EA3E27C4AC0765EC4 | sha1: 2DB00B6D6AE12852676EBB1D20D76FC1260BD6DA | sha256: FE02D108E675701C80547747AEFCE5FE64144F451602C26D565A426F98AE9000 | sha512: D549F8CB664ABD338848A4F6608363E8409660298F34B75A0D7009E31654A28B9FE4765A79B5810C445AE173192A058148920A6948CF841166C7339A1A1D9A31
tools\NuGet.Protocol.dll
md5: DF2AEEDB6E9A7E140C6E94669C5458E4 | sha1: 0A6213A62D094C6ADA53EAA59053CF7F9B8D2766 | sha256: FBB1D5A015ACE2923DC361016403D63BB7814A37E6EF99E26B7D1CF135A3B6B2 | sha512: 904B7E00248160DCD9FCB9F6BE508F4D9DCDA872D19B9844F9645123C1C5DF7791340D5C0DD2C1732297602FC42296C7451377A9A1FCD9951540BC20793ED213
tools\NuGet.Resolver.dll
md5: 29E100F4776703D6E84642433DF8958E | sha1: 6264787ECD162C02EB023B9A5475EFB7DB772595 | sha256: 9A95658067ABE52738322577E73F86F042DBB8B80E42234630CA479615A83EF0 | sha512: F491E97E0B427846E6F33469088263E526BEEDE08F50532A8183A7D145895C79F7EF8C73E75101F7D31FE5E6068998B5783CB12B9DE870312EEB0E13170624E3
tools\NuGet.Versioning.dll
md5: 03D453F46F88D933C4993E5311D469E2 | sha1: C5C4A8040BC87F804798194EEC4812698865B2A6 | sha256: 1B43E137CC5C262722861B323C67775B83FFF814DA05DBCE4A8DD27E7AAF768B | sha512: 6F7A8DB690E1A071C5461F0A8C33FE23C2696CE98862264D5F25637ECB8C3C536F8C87DF00366AB9779507AF33C69DD357466AD927153AF1AFDFF1C869ED2254
tools\pl\Microsoft.CodeAnalysis.CSharp.resources.dll
md5: 0E7B4C335C4996AC1386F4672BE4D934 | sha1: FD57FC7C5D20E462F6597BB4CFB2B1FE931B33E5 | sha256: 0488F01E4C05005300F923BE26606F23A6E0735E492DEC75C71F2401C8A87E9C | sha512: 0B9983BC648671C87EFD70E4E5E5DDDF95A9B12084E6BAE69A35F3B163B0BFDD059A5F839618249B1892C0BCD03D30DFD87D59FDED14EE97130BA8B4AFE61ADF
tools\pl\Microsoft.CodeAnalysis.resources.dll
md5: 366AC9FA8933F906F9DC7A61B4A21121 | sha1: E90C48D794DC95A62AFC56F9698AE6D74975CEDE | sha256: 02B83D88F807F546358CE0A9909290B906A090BF6A13699CFDFE17B5856ADFB6 | sha512: EEEBAC821305A55F0776EA425E01919CFB82E98458ED30D6F36B0A060E05B45770CBF161D7E33AE5A8E45EAF7826FF0DCF05C30E69AA18F0F2759E4595691EB1
tools\pt-BR\Microsoft.CodeAnalysis.CSharp.resources.dll
md5: A03903F3176033F1AADF0F8697FF57D8 | sha1: 50A4001BB6BE85013ECD809BE73FD5169728FD88 | sha256: 56156A62A6C86FEE5D0CFC2306131C1C48BDA5607D31767D7334BCB12BED2034 | sha512: 82059C566E7C93B059D453C502B2F6CD059336500E22F1461795B5F56B13B32E7E0DAB7C3B0F088E48BA94A446E7B3C99ED32E21DBAF563CBAED6DEEEED08BB9
tools\pt-BR\Microsoft.CodeAnalysis.resources.dll
md5: C5089CFB8F3DDF73883CFEEE67432727 | sha1: 98B90153F1A792B24B6F06F5533F67D4111D82FC | sha256: AA0F48630B5C6A8B4684F77727AB7432E3D75FA23F4DA09C27F9BE293394B060 | sha512: 4FA59BF0E644F59BE7F3757A38EC287F054018397FA76A194E5E45466FD1C609C245709FB500B2DEAC79D55768A0DCB4C4B4E17A3C14DD782C7722F792CB51D1
tools\README.md
![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/Wyam2/wyam?display_name=tag&sort=semver&style=plastic) [![Join the chat at https://gitter.im/Wyam2/Wyam2](https://badges.gitter.im/Wyam2/Wyam2.svg)](https://gitter.im/Wyam2/Wyam2) 

![Nuget](https://img.shields.io/nuget/dt/Wyam2?label=NuGet%20downloads&style=plastic) ![Chocolatey](https://img.shields.io/chocolatey/dt/Wyam2?label=Chocolatey%20downloads&style=plastic) ![GitHub release (latest by SemVer)](https://img.shields.io/github/downloads/Wyam2/wyam/latest/total?label=GitHub%20downloads%40latest&sort=semver)  
 
[![Wyam2 build](https://github.com/Wyam2/wyam/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/Wyam2/wyam/actions/workflows/build.yml)  [![Wyam2 nightly build](https://github.com/Wyam2/wyam/actions/workflows/nightly.yml/badge.svg?branch=main)](https://github.com/Wyam2/wyam/actions/workflows/nightly.yml) ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/Wyam2/wyam?style=plastic)  

A continuation of the awesome project [Wyam](https://github.com/Wyamio/Wyam) created by [Dave Glick](https://github.com/daveaglick) since it's the only open-source, cross-platform .NET documentation project that I know of, except [docFX](https://github.com/dotnet/docfx). 
For Windows-only there is also [Sandcastle](https://github.com/EWSoftware/SHFB).
---


# Wyam2

Wyam2 is a simple to use, highly modular, and extremely configurable static content generator that can be used to generate web sites, produce documentation, create ebooks, and much more. Since everything is configured by chaining together flexible modules (that you can even write yourself), the only limits to what it can create are your imagination.

The easiest way to get started is to install as a .NET Core global tool and use a [recipe and theme](https://wyam2.github.io/recipes).

1. Download and install Wyam as a global tool:

    `dotnet tool install -g Wyam2.Tool`

2. Scaffold a new blog:

    `wyam2 new --recipe Blog`

3. Edit the scaffolded files.

4. Build the blog with a theme:

    `wyam2 --recipe Blog --theme CleanBlog`

To go deeper, read more about the [underlying concepts](https://wyam2.github.io/docs/concepts) and then read about [configuration files](https://wyam2.github.io/docs/usage/configuration) and the [available command line arguments](https://wyam2.github.io/docs/usage/command-line). Then check out the full list of [modules](https://wyam2.github.io/modules).

For more information see [Wyam2](https://wyam2.github.io).  
For questions and everything else
- please open a [new discussion on GitHub](https://github.com/Wyam2/wyam/discussions) 
- or [chat on Gitter](https://gitter.im/Wyam2/community)
- or [on Matrix](https://matrix.to/#/#Wyam2_community:gitter.im)


## Contributing
For more details about how you can help this project, see [this](CONTRIBUTING.md).

For details on building this project, see [this](BUILDING.md).


## History
- up to v2.2.9 
    - builds are provided by original project, [Wyam](https://github.com/Wyamio/Wyam)
    - dotnet tool is `Wyam.Tool` and `wyam`
- from v3.0.0
    - builds are provided by this fork [Wyam2](https://github.com/Wyam2/Wyam)
    - dotnet tool is called `Wyam2.Tool` and `wyam2`


## Acknowledgements

* Original project [Wyam](https://github.com/Wyamio/Wyam) under MIT license.
* Portions of the IO support were originally inspired from [Cake](http://cakebuild.net) under MIT license.
* The RSS/Atom support was originally ported from [WebFeeds](https://github.com/mckamey/web-feeds.net) under MIT license.
* Themes:
    - [Phantom](https://html5up.net/phantom) under CreativeCommons license.
    - [SolidState](https://html5up.net/solid-state) under CreativeCommons license.
    - [Stellar](https://html5up.net/stellar) under CreativeCommons license.
    - [Trophy](https://github.com/thomasvaeth/trophy-jekyll) under MIT license.
    - [Boostrap](https://getbootstrap.com/) under MIT license.
    - [AdminLTE](https://adminlte.io/) under MIT license.
* Many other fantastic OSS libraries are used directly as NuGet packages, thanks to all the OSS authors out there!
tools\ReleaseNotes.md
# 3.0.0
- [DevOps] Simplified extraction of git branch and SHA in build script
- [DevOps] Fixed Wyam2 and Wyam2.Tool nuget packages description
- [DevOps] Roslynator.Analyzers 4.x requires Roslyn 4.0.1 thus .NET SDK 6.0 build
- [Refactoring] Update JavaScriptEngineSwitcher.Jint to v3.18.0-preview to support ES6, [see here](https://github.com/sebastienros/jint/issues/343#issuecomment-1133930693)
- [Refactoring] Update Microsoft.NET.Test.Sdk to v17.2.0
- [Refactoring] Update SixLabors.ImageSharp to v2.1.2
- [Security] Update NuGet.* packages to v6.2.1 to mitigate CVE-2022-30184 / GHSA-3885-8gqc-3wpf
- [Refactoring] Update Google.Apis, Google.Apis.Auth, Google.Apis.Core and Google.Apis.YouTube.v3 to v1.57.0
- [Refactoring] Update StyleCop.Analyzers to v1.2.0-beta.435
- [Refactoring] Update Roslynator.Analyzers to v4.1.1
- [Refactoring] Update Microsoft.SourceLink.GitHub to v1.1.1
- [Refactoring] Update Castle.Core to v.5.0.0
- [Refactoring] Update Markdig to v0.30.2
- [Refactoring] Update Octokit to v0.51.0
- [Refactoring] Update Nunit to v3.13.3
- [DevOps] GHA(deps): Bump peter-evans/repository-dispatch from 1 to 2
- [DevOps] GHA(deps): Bump actions/upload-artifact from 2 to 3
- [DevOps] GHA(deps): Bump github/codeql-action from 1 to 2
- [DevOps] GHA(deps): Bump crazy-max/ghaction-github-labeler from 3 to 4
- [DevOps] GHA(deps): Bump actions/setup-dotnet from 1 to 2
- [Fix] Cake addin documentation updated to specify Wyam2 instead of the original Wyam project
- [Fix] Wyam 3.0.0-rc3 does not render correctly note and table list XML comments (#92) 
- [Refactoring] Update NuGet.* packages to v6.1.0
- [Refactoring] Added dependency NuGet.PackageManagement to Wyam2.Configuration project
- [Refactoring] Removed dependencies to NuGet.Client, NuGet.ContentModel, NuGet.PackageManagement.NetStandard, NuGet.Repositories, NuGet.RuntimeModel in Wyam2.Configuration project
- [Refactoring] Update SixLabors.ImageSharp to v2.1.0
- [Refactoring] Update Polly to v7.2.3
- [Refactoring] Update Microsoft.CodeAnalysis.CSharp to v4.1.0
- [Refactoring] Update SharpZipLib to v1.3.3
- [Refactoring] Update MetadataExtractor to v2.7.2
- [Refactoring] Update Google.Apis, Google.Apis.Auth, Google.Apis.Core to v1.56.0
- [Refactoring] Update CsvHelper to v27.2.1
- [Refactoring] Update Markdig to v0.28.0
- [Refactoring] Update NSubstitute to v4.3.0
- [Refactoring] Update Microsoft.NET.Test.Sdk to v17.1.0
- [Refactoring] Update System.Data.SqlClient to v4.8.3
- [Refactoring] Update NUnit3TestAdapter to v4.2.1
- [Refactoring] Update Microsoft.IO.RecyclableMemoryStream to v2.2.0
- [Refactoring] Downgrade Roslynator.Analyzers to v3.3.0 due to [dependency on .NET SDK 6.0](https://github.com/JosefPihrt/Roslynator/issues/878)
- [Refactoring] Update AngleSharp to v0.16.1
- [Refactoring] Update Google.Apis.YouTube.v3 to v1.56.0.2630
- [DevOps] GHA(deps): Bump smartsquaregmbh/delete-old-packages from 0.3.3 to 0.4.0
- [DevOps] GHA(deps): Bump actions/checkout from 2 to 3

# 3.0.0-rc3
- [DevOps] Mark release as prerelease if there's a version suffix available
- [DevOps] GHA(deps): Bump smartsquaregmbh/delete-old-packages from 0.3.1 to 0.3.3
- [DevOps] Allow prerelease versions in choco package 
- [DevOps] Fixed 'The format of value  Wyam2 wyam release' is invalid.' in the Release cake target

# 3.0.0-rc2
- [Fix] Fixed Wyam.All nuget package not containing the proper dependencies
- [DevOps] Adjustments to the release process

# 3.0.0-rc1
- first release of Wyam2, as a drop-in replacement for Wyam
    - Wyam.Tool was renamed to Wyam2.Tool `dotnet tool install -g Wyam2.Tool`
    - wyam was renamed to wyam2 `wyam2 new --recipe Blog`
    
- [Documentation] Markdown table not well rendered #73
- [Documentation] AutoLinkTypes docs theme setting is slightly confusing #74 
- [Refactoring] Update JSPool to v4.0.0
- [Refactoring] Update JavaScriptEngineSwitcher.Core to v3.3.0 and JavaScriptEngineSwitcher.Jint to v3.1.0
- [Refactoring] Update Microsoft.NET.Test.Sdk to v16.11.0
- [Refactoring] Update NuGet to 5.11.0
- [Refactoring] Update MetadataExtractor to v2.7.0 
- [Refactoring] Update Google.Apis.* to v1.54.0 and Google.Apis.YouTube to 1.54.0.2378
- [Fix] Update blog themes: CleanBlog to v6.0.4, Phantom, SolidState, Stellar
- [Feature] Render all XML comment tags (#24)
    - added support for: revisionHistory, note, definition list, cref langword
- [Refactoring] Update System.Data.SqlClient to v4.8.2
- [Refactoring] Update System.Reflection.TypeExtensions to v4.7.0
- [Fix] Could not reference Wyam.Common namespace with nuget (#1)
- [Refactoring] Update Markdig to v0.25.0
- [Refactoring] Update SixLabors.ImageSharp to v1.0.3
- [Refactoring] Update Google.Apis.YouTube.v3 to v1.52.0.2366
- [Refactoring] Update CsvHelper to v27.1.1
- [Refactoring] Update MetadataExtractor to v2.6.0 
- [Refactoring] Update dotless.Core to v1.6.7
- [Refactoring] Update SharpScss to v2.0.0
- [Refactoring] Update ReflectionMagic to v4.1.0
- [Refactoring] Update Polly to v7.2.2
- [Refactoring] Update WebMarkupMin.Core to v2.9.0 
- [Refactoring] Update Octokit to v0.50.0
- [Refactoring] Update Microsoft.AspNetCore to latest version targeting .NET Standard 2.0
- [Refactoring] Update ConcurrentHashSet to v1.2.0
- [Refactoring] Update YamlDotNet to v11.2.1
- [Refactoring] Update Microsoft.IO.RecyclableMemoryStream to v2.1.2    
- [Refactoring] Update System.Data.SqlClient to v4.8.1
- [Refactoring] Update System.Collections.Immutable to v1.5.0
- [Refactoring] Update Microsoft.CodeAnalysis.CSharp to v3.4.0
- [Refactoring] Update Microsoft.NET.Test.Sdk to v16.10.0
- [Refactoring] Update NuGet to 5.10.0
- [Refactoring] Update Google.Apis.YouTube.v3 to v1.52.0.2343
- [Feature] Add command-line switch for no logo (#4, logo was removed)
- [Refactoring] Update Microsoft.AspNetCore.WebSockets to v2.2.1
- [Refactoring] Update YamlDotNet to v5.1.0
- [Fix] Cake.Wyam "Could not execute because the specified command or file was not found" error (#25)
- [DevOps] Added build, nightly, dependabot labels sync, AZDO issues sync and CodeQL GitHub actions
- [DevOps] Build: NuGet pack errors NU5125 (licenceUrl) and NU5048 (iconUrl) (#6)
- [Refactoring] Update ConcurrentHashSet to v1.1.0
- [Refactoring] Update SharpZipLib to v1.3.2 
- [Refactoring] Update XmpCore to v6.1.10.1 and MetadataExtractor to v2.5.0
- [Refactoring] Update StyleCop.Analyzers to v1.1.118 and Roslynator.Analyzers to v3.2.0
- [Refactoring] Update Shouldly to v4.0.3
- [Refactoring] Update NSubstitute to v4.2.2 (thus upgrading Castle.Core to v4.4.1)
- [Refactoring] Update Autofixture to v4.5.1
- [Refactoring] Update NUnit to v3.13.2 and NUnit3TestAdapter to v4.0.0
- [Refactoring] Update Buildalyzer.Workspaces to v2.6.0
- [Refactoring] Update Google.Api to v1.52.0
- [Refactoring] Update NuGet to 5.9.1
- [Refactoring] Update Newtonsoft.Json to v13.0.1
- [Refactoring] Update CsvHelper to v27.1.0
- [Refactoring] Update EPPlus to latest LGPL version 4.5.3.3
- [Refactoring] Update Cake to v1.1.0
- [Refactoring] Update AngleSharp to v0.16.0
- [Refactoring] Update Cake.Wyam NuGet package icon to the new Cake-Contrib logo for Cake addins (#22, thanks @augustoproiete)
- [Refactoring] Cake.Wyam: Add cake-addin tag to NuGet package(#21, thanks @augustoproiete)
- [Refactoring] Update Cake.Wyam to target Cake v1.0.0 (#19, thanks @augustoproiete)

# 2.2.9

- [Fix] Updated to latest Buildalyzer (#865)
- [Documentation] Fixed a typo (#860, thanks @pascalberger)
- [Fix] Moved CleanBlog JS to the bottom so not to block rendering (#867, thanks @pug-pelle-p)

# 2.2.8

- [Fix] Updated NuGet packages in an attempt to fix ongoing package installation and signature verification problems

# 2.2.7

- [Fix] Fix for the fix that fixes bugs related to package installation and signature verification

# 2.2.6

- [Fix] Fixes for bugs related to package installation and signature verification

# 2.2.5

- [Refactoring] Updated to latest version of Markdig (#855, thanks @rchande)
- [Refactoring] Updated Cake dependency to 0.33.0 (#823, thanks @devlead)
- [Fix] NuGet restore now uses the correct target framework (#820, thanks @devlead)
- [Fix] Sets a default user agent for the `HttpClient` (#802, thanks @SeanKilleen)
- [Documentation] Enhances docs for the `Include` module and shortcode (#816, thanks @johanvergeer)

# 2.2.4

- [Feature] Updates JavaScriptEngineSwitcher to 3.0

# 2.2.3

- [Feature] New `Raw` shortcode useful for escaping inner shortcode syntax
- [Refactoring] Changes the special nested escape processing instruction for shortcodes from a standard processing instruction to `<?* ... ?>`
- [Fix] Fixes a regression in `AutoLink` where a new document was being returned when it shouldn't have been (#786)
- [Fix] Moved the `AutoLink` module in docs to execute after all template processing (#786)

# 2.2.2

- [Feature] The `Include` shortcode now tracks what file it's been called from (including nested includes) and attempts to first resolve includes relative to the current file
- [Feature] Shortcodes are now evaluated recursively and can be nested (but must use the same pre vs. post rendering delimiter as their parent)
- [Feature] Shortcodes can now be evaluated _before_ rendering with the `<?! ... /?>` syntax as well as after rendering with the existing `<?# ... /?>` syntax
- [Fix] Temporary workaround for shortcodes not working under certain conditions after HTML processing (#784)

# 2.2.1

- [Feature] New `Highlight` shortcode
- [Feature] New `YouTube` shortcode
- [Feature] New `Giphy` shortcode
- [Feature] New `CodePen` shortcode
- [Feature] Improvements to `Sass` module processing of `@import` including a new `.WithImportPath()` delegate that can fine-tune import path locations
- [Refactoring] Refactored `Embed` shortcode to make derived oEmbed shortcodes easier to implement
- [Refactoring] Refactored `HttpClient` support in `ExecutionContext` to work more like `HttpClientFactory` by sharing a `HttpMessageHandler` instead of a `HttpClient` instance

# 2.2.0

- **[Breaking Change]** Removes BookSite and the Velocity theme (#764)
- [Feature] Shortcodes! Take a look at [the docs](https://wyam.io/docs/concepts/shortcodes) for more information (#359)
- [Feature] New `MirrorResources` module to download CDN links and mirror them locally (#781)
- [Refactoring] New `IExecutionContext.HttpClient` and `IExecutionContext.GetHttpClient(HttpMessageHandler)` to manage a single shared `HttpClient` instance
- [Refactoring] New support in `Wyam.Testing` and `TestExecutionContext` for testing modules that use a `HttpClient`
- [Feature] New `IMetadata.String()` extension that takes a formatting function to apply if the key exists in the metadata
- [Feature] New `IMetadata.TryGetValue<T>()` method to attempt getting a metadata value, but only if it can be converted/cast to `T`
- [Feature] New `IMetadata` extension methods to make generating XML-to-LINQ trees from metadata values easier
- [Fix] Fixed a bug when the `Sass` module processes Sass files that have includes which aren't under an `input` folder

# 2.1.3

- [Fix] Fixes a possible concurrency bug when adding/removing trace loggers and indenting
- [Fix] Fixes for URL absolute link validation (#773, thanks @glennawatson)
- [Refactoring] Changed line ending behavior for files in the repository and re-normalized line endings to LF (#772, thanks @glennawatson)
- [Feature] Updates to the globber and file system abstractions to deal with file system case sensitivity better (#771, thanks @glennawatson)
- [Fix] Allow the `If` module indexer to be accessed without casting (#769, thanks @ociaw)
- [Refactoring] Big performance improvement to the `AutoLink` module (#766)
- [Fix] Fixed some quirks with the new diagram panning/zooming

# 2.1.2

- [Fix] Fixed directional arrows in docs class diagrams (#765, thanks @gpriaulx)
- [Feature] Improved large docs class diagrams by adding panning and zooming (#718)
- [Fix] Fixed links in docs class diagrams (#719)
- [Feature] New extensions for `IModuleList` to make getting specific modules easier (#763)
- [Feature] `If` module now exposes conditions and their modules (#761, thanks @ociaw)
- [Fix] Fixed `BookSiteKeys.BookImage` references in the Velocity theme (#760, thanks @damccull)
- [Feature] Improved the fakes in Wyam.Testing to allow for custom type conversions when needed
- [Refactoring] `IExecutionContext.GetLink()` overloads now return the absolute URI if one is provided instead of trying to convert it to a relative link (#629)

# 2.1.1

- [Fix] Fixed a bug with early closure of HTTP response objects when validating links (#759)
- [Fix] Fixed a regression bug with the BookSite recipe (#758)
- [Feature] Adds support for `IgnoreConfigHash` to Cake.Wyam (#628)
- [Fix] Fixed a bug in blog and docs recipes when the `Published` front matter contained an invalid date according to the culture (#611)
- [Fix] Added favicon and empty override CSS output to docs theme so that settings `ValidateRelativeLinks` or `ValidateAbsoluteLinks` does not error (#607)

# 2.1.0

- **[Breaking Change]** No longer reads standard input by default, adds a new `--read-stdin` flag to turn on this behavior (#752)
- [Fix] Blog posts in the docs recipe no longer require Author or Category metadata (#751)
- [Feature] New `Markdown.PrependLinkRoot()` method to prepend a configured `LinkRoot` to all `Markdown` links (#735, #748, thanks @tbolon)
- [Feature] New `MarkdownPrependLinkRoot` setting for the blog and docs recipes to turn on this behavior for Markdown documents (#735)
- [Fix] Fix for tuples in generic type parameters in docs (#749)

# 2.0.0

- **[Breaking Change]** It's here! Wyam now runs on .NET Core 2.1 and the .NET Framework client is no longer distributed (at least initially).

# 1.7.4

- [Feature] Updated Buildalyzer which includes new features like honoring MSBuild constants

# 1.7.3

- [Fix] Fixes a regression with the new Razor module when using nested layouts
- [Refactoring] Even better code signing (thanks @vcsjones) 

# 1.7.2

- [Fix] Updated Authenticode certificate

# 1.7.1

- [Fix] Fixed Authenticode signing of `wyam.exe`

# 1.7.0

- **[Breaking Change]**[Refactoring] New Razor parser based on ASP.NET Core 2.x (potentially breaking due to differences in Razor behavior such as tighter local variable scope)
- [Refactoring] New integrated preview server based on ASP.NET Core 2.x (#300, thanks @RLittlesII)
- [Feature] New `IExecutionContext.GetDocument()` overload to get an empty document while defining a source
- [Fix] Updates `Tree` module placeholder function to set document source for the placeholder
- [Feature] Adds `Keys.TreePlaceholder` metadata to indicate a placeholder tree document from `Tree` module
- [Feature] Adds ability to configure blog title in docs recipe (#710, thanks @rschoenbach)

# 1.6.0

- [Refactoring] Big update to Buildalyzer which should make MSBuild-based project introspection for docs much more reliable
- [Fix] Fixes a bug with docs `NoTitle` not working correctly
- [Feature] Adds support for linking generic type arguments (#707, #709) 
- [Fix] Fix for generic type argument names (#709)
- [Fix] Fix for a bug when linking nullable types in docs recipe

# 1.5.1

- [Refactoring] Updated Cake.Wyam Cake reference to 0.28.0 (#701)
- [Refactoring] Added NuGet repository link to packages (#705, #706, thanks @MaximRouiller)
- [Feature] Better display and linking of nullable type in docs (#470)
- [Fix] Fixes for generic type parameters in docs (#702, #610)

# 1.5.0

- **[Breaking Change]**[Refactoring] Removed the `TextGeneration` module since it's not .NET Core compatible
- [Fix] Set `wyam.exe` to `x64` to avoid problems with `NuGet.Build.Tasks.dll`, libuv, and .NET Framework (#699)
- [Feature] Updated Buildalyzer/MSBuild for `CodeAnalysis` modules, documentation project builds should work more reliably and on more project types now
- [Refactoring] Updated version of lunrjs used by the `SearchIndex` module and related themes (#660, #661, thanks @SteveLowe)
- [Fix] Added support for no trailing slash on edit link URL in `Docs` theme (#698, thanks @Foxtrek64)
- [Fix] Fixed a JavaScript console error in the Stellar theme (#685, thanks @jdecarli)
- [Fix] Removed unintentional Google Analytics code from Stellar theme (#684, thanks @jdecarli)
- [Fix] Fixes for tag archive links in all themes when using a subdirectory (#590, #681, thanks @schulz3000)
- [Fix] Fixed problems loading F# projects for code analysis and documentation generation (#687)
- [Fix] Fixed some assembly loading problems with `System.Text.Encodings.Web` (#667)
- [Feature] Added a `Sitemap` pipeline to the `Blog` recipe (#680, thanks @schulz3000)
- [Feature] Added methods to specify additional word separators in the `AutoLink` module
- [Feature] Added ability for `Docs` recipe to auto-link generic types (#674, #679, thanks @k94ll13nn3)
- [Feature] Added an `--ignore-default-sources` option to ignore the NuGet gallery (#673, #662)
- [Feature] Added `InsertPrefix()` and `InsertSuffix()` to `FilePath`
- [Fix] Encodes type names when linking them in the `Docs` recipe (#674, #676, thanks @k94ll13nn3)
- [Fix] Fixes some edge-case bugs with root-like paths and recipes (#675)
- [Refactoring] Replaced Tabular with EPPlus and CsvHelper in tables modules (#672, thanks @MisinformedDNA)
- [Refactoring] Replaced ImageProcessor with ImageSharp in `Image` module (#671, thanks @MisinformedDNA)
- [Fix] Fix for hard coded blog path in some parts of `Docs` recipe (#670, thanks @tbolon)
- [Fix] Fixed problems with month and day names in date strings (#655, thanks @jonasdoerr)

# 1.4.1

- [Fix] Fixed missing known extensions which should help make future version updates smoother (#652)
- [Feature] Added ability to turn on binary logging from MSBuild for `CodeAnalysis` modules
- [Feature] Updated Buildalyzer/MSBuild for `CodeAnalysis` modules

# 1.4.0

- [Refactoring] Totally rewrote assembly loading
- [Refactoring] Converted a bunch of support and extension libraries to .NET Standard (#646, thanks @pauldotknopf)

# 1.3.0

- [Refactoring] Configuration caches will always append to original configuration file ("config.wyam.dll", "config.wyam.hash", "config.wyam.packages.xml", etc.) (#619) - **Note** while this isn't a breaking change, it may require you to change your `.gitignore` files to handle the revised cache file names
- [Fix] Graceful handling of missing cached config dll file (#617)
- [Refactoring] Trace settings at startup as verbose (#618)
- [Feature] Added an overload to `Replace` module that allows using the document in the content finder delegate (#625)
- [Fix] Switches to `Regex.Replace()` when using a replacement delegate in the `Replace` module to avoid an infinite recursion edge case (#624)
- [Fix] Better handling of . (dot) character in `RedirectFrom` module (#620, #621, thanks @wozzo)
- [Feature] Added a new default behavior for `Sitemap` to generate a document link if no `SitemapItem` key is provided or usable (#622)
- [Feature] Adds support for defining custom content types in the preview server
- [Feature] Added `IMetadata.GetMetadata()` to get a new metadata object with only the specified keys
- [Feature] Adds an additional constructor to the `Execute` module to process the entire input set at once
- [Feature] Adds ability to serialize selected metadata keys to a JSON object in `GenerateJson` module
- [Feature] Adds ability to specify additional serializer settings for `GenerateJson` module
- [Fix] Fixes bug with `GenerateJson` module not setting metadata key
- [Refactoring] Removed the Wyam.Windows installer, it's been replaced by Chocolatey and eventually a .NET CLI global tool

# 1.2.0

- [Feature] Locks in matching recipe and theme package versions (#587)
- [Refactoring] Some docs updates (#604, thanks @olevett)
- [Feature] Can add Markdown extension instances directly (#602, thanks @Silvenga)
- [Fix] Fixes adding multiple custom Markdown extensions (#601, thanks @Silvenga)
- [Fix] Fixes output corruption when using `--noclean` (#593, thanks @Silvenga)
- [Feature] Added support for generating a Chocolatey package (#598, #95, thanks @phillipsj)
- [Fix] CSS cleanup for arrows in the docs theme
- [Feature] Docs recipe now ignores Razor pages from the theme if an equivalent Markdown page exists (#595)
- [Feature] Added a `Where()` method to the `Concat` module 
- [Feature] Added `DocsKeys.ShowInSidebar` to hide pages from the sidebar in the docs recipe
- [Fix] Ignore case when locating index files for the `Tree` module
- [Feature] Added support for JSON content types to the embedded web server
- [Feature] Added sidebar header and footer overrides to docs theme
- [Refactoring] Updated MD5 hashes to SHA512 for FIPS compliance (#597, thanks @kakrofoon)
- [Feature] Enabled code signing for wyam.exe
- [Feature] Adds `DocsKeys.ApiPath` to allow changing the path where API docs are placed in the docs recipe

# 1.1.0

- **[Breaking Change]**[Refactoring] Removed the `Git` module since it's not fully SDK compatible
- **[Breaking Change]**[Refactoring] Removed the `Xslt2` module since it uses packages that are not cross platform or SDK compatible
- [Fix] Referenced assemblies are not loaded if a version was already directly loaded
- [Fix] Fix for excerpts in the BlogTemplate blog theme (#580, thanks @AWulkan)
- [Fix] Fix for "Back to Posts" link in the BlogTemplate blog theme (#581, #583, thanks @jbrinkman)
- [Fix] `CodeAnalysis` and the docs recipe can now read SDK and .NET Core projects via [Buildalyzer](https://github.com/daveaglick/Buildalyzer) (#575)
- [Refactoring] Updated Cake.Wyam to Cake 0.22.2 and targeting .NET Framework 4.6 and .NET Standard 1.6 (#579, #573, thanks @ProgrammerAl and @RLittlesII)
- [Fix] Fix for generated syntax from `CodeAnalysis` for more than one attribute within a bracket (#577, thanks @jonasdoerr)
- [Refactoring] Converted most of the projects to the SDK (no impact on release artifacts, but important for contributors)

# 1.0.0

- **[Breaking Change]**[Refactoring] Removed all deprecated code including string-based document creation methods
- **[Breaking Change]**[Refactoring] Renamed `Download.CacheResponse()` to `Download.CacheResponses()`
- **[Breaking Change]**[Refactoring] Renamed `RequestHeader` class for use with the `Download` module to `RequestHeaders`
- [Feature] Added support for custom headers to `RequestHeaders` for use with `Download` module
- [Feature] New `YouTube` module for interacting with the YouTube API (#547, thanks @ghuntley)
- [Feature] New Trophy theme for Blog recipe (#522, thanks @adamclifford)
- [Fix] Fixed a bug in Docs recipe when generating lowercase links
- [Fix] `NormalizedPath` no longer trims spaces (#566) 
- [Feature] New Stellar theme for Blog recipe (#563, thanks @arebee)
- [Feature] The compiled config script is now cached to disk as `config.wyam.dll` and `config.wyam.hash` (prefixed with whatever the config file name is) (#557, thanks @Silvenga)
- [Feature] New `Objects` module for populating metadata by reflecting on an arbitrary object (#539, thanks @deanebarker)
- [Feature] New `Xml` module for populating metadata by reading elements from XML content (#539, thanks @deanebarker)
- [Feature] New `Sql` module for populating metadata by reading data from a SQL server (#539, thanks @deanebarker)
- [Feature] New `ReadDataModule` abstract base module for populating metadata from arbitrary data (#539, thanks @deanebarker)
- [Fix] Several fixes related to generic types in `AnalyzeCSharp` module and Docs recipe (#494, #564)
- [Fix] Excludes empty namespaces from `AnalyzeCSharp` module by default (#526)
- [Feature] Updated globbing pattern in Blog and Docs recipes to include blog posts in subfolders (#560, thanks @archnaut)
- [Feature] If a module implements `IDisposable` it will now be disposed when the engine is
- [Refactoring] Disabled data protection services in `Razor` module (#559, thanks @Silvenga)
- [Fix] Additional inherit doc support for properties and events in `AnalyzeCSharp` module (#553)
- [Fix] Fix for search index items when virtual directory is used (#554)
- [Fix] Normalizes culture in all the examples (#544)
- [Fix] Fixes HTML escaping in API search results in Docs theme (#552)

# 0.18.6

- [Feature] Added flag `DocsKeys.ImplicitInheritDoc` to docs recipe to globally assume `inheritdoc` (#551)
- [Feature] Added `AnalyzeCSharp.WithImplicitInheritDoc()` to assume `inheritdoc` for symbols without any XML comments (#551) 
- [Fix] Fixed a bug in the `AutoLink` module when containing node also has escaped HTML content (#550)
- [Fix] Fixed a bug with `If` module when using a `ContextConfig` delegate, unmatched documents were not falling through. You may need to add `.WithUnmatchedDocuments()` if you are using an `If` module with the incorrect behavior.
- [Feature] Added `Keys.LinkLowercase` to always generate lowercase links (default is false) (#546)
- [Fix] Fixed a bug when using `NoSidebar` in docs recipe (#549)

# 0.18.5

- [Refactoring] Moved the blog theme index template file from `index.cshtml` to `_Index.cshtml` to match other template conventions (#520)
- [Feature] Added settings to the blog recipe to configure index template and output path (#541)
- [Feature] Added note to readme file about platform support (#540, thanks @perlun)
- [Fix] CLI commands are now case-insensitive, though options and flags are still case-sensitive for now (#539)
- [Refactoring] Preview server now logs a full localhost URL so terminals can link it (#533)
- [Refactoring] Switching exit key combination to Ctrl-C instead of any key (#534)
- [Feature] New BlogTemplate theme for the blog recipe to use as basis for new themes (#518, thanks @adamclifford)
- [Fix] Docs fix for Cake addin (#535, thanks @ghuntley)
- [Refactoring] Suppress CS1701 in config file compilation instead of filtering (#529, thanks @filipw)
- [Refactoring] Performance boost for Razor rending (#509, thanks @jontdelorme)
- [Feature] New SolidState theme for the blog recipe (#514, thanks @RLittlesII)

# 0.18.4

- [Fix] Fixes feed content and description for common web pipelines (#528)

# 0.18.3

- **[Breaking Change]**[Refactoring] Moved Blog recipe theme file `/_PostIndex.cshtml` to `/_Archive.cshtml`, no other changes should be needed to this file in themes other than to move it - sorry for the rename (again), the first name was kind of dumb, this one is better
- **[Breaking Change]**[Refactoring] Moved Blog recipe theme file `/tags/index.cshtml` to `/_Tags.cshtml`, no other changes should be needed to this file in themes other than to move it
- [Feature] Suppressed tag page generation if no tags are present in Blog recipe (#456)
- [Refactoring] Refactored `Wyam.Web` pipelines to encapsulate settings in classes
- [Feature] Added a ton of flexibility and new settings to index and archive pages for the Blog recipe (#516)
- [Feature] Adds the background check JS to BookSite Velocity theme
- [Feature] Excludes `.git` from all recipes in case an input subfolder was closed from a repository
- [Fix] Resolved some edge-case bugs with the globbing engine

# 0.18.2

- [Fix] Fix for invalid metadata key in Docs theme (#515)

# 0.18.1

- **[Breaking Change]**[Refactoring] Moved a couple theme template files in Blog themes: `posts/index.cshtml` -> `_PostIndex.cshtml`, `tags/tag.cshtml` -> `_Tag.cshtml` - if you were overriding these theme files, you'll need to move and rename your override file to match
- [Refactoring] Deprecated `BlogKeys.HeaderTextColor` and the CleanBlog theme now automatically calculates header text color from background image using JS
- [Feature] Added default settings to recipe scaffolding (#503)
- [Fix] Manually copies the native git libraries for the `Git` module (#506)
- [Feature] Added support for Less and Sass files to the Blog recipe
- [Feature] Added `WithPageMetadata()` method to `Paginate` module to add metadata to generated page documents
- [Feature] Added `NextPage` and `PreviousPage` output metadata to `Paginate` module
- [Refactoring] Prefixed all Less include files in the Docs theme with an underscore and excluded underscore files from being processed directly by recipe (#507)
- [Feature] `Less` module now sets `Keys.WritePath` with a `.css` extension - this may result in warnings if you follow the `Less` module with the `WriteFiles` module with an extension specified, remove the extension from the `WriteFiles` module and the warnings should go away
- [Feature] `Less` module will now automatically check for underscore prefixes and add `.less` extension when looking for includes (#507)
- [Feature] New `Sass` module (#7, thanks @enkafan)
- [Feature] New `Sort` module for ordering documents using a comparison delegate
- [Feature] `If` module can now ignore unmatched input documents
- [Refactoring] Made `IModuleList` extensions fluent
- [Feature] `Documents` module can now get documents from more than one pipeline at a time
- [Refactoring] Moved source code for recipes to a dedicated folder
- [Refactoring] All current recipes now share a common set of reusable pipelines from the new `Wyam.Web` library (#501)
- [Feature] New BookSite recipe for book and ebook marketing sites (#488)

# 0.17.7

- [Fix] Fixes LiveReload support when under a virtual directory (#496)
- [Fix] Fixed some asset links in docs theme when under a virtual directory (#497)

# 0.17.6

- [Fix] Fixes some dependency issues with the MEF 2 libraries and Roslyn packages

# 0.17.5

- [Feature] `CodeAnalysis` module (and docs recipe) now supports loading source code directly from projects and solutions (#493)
- [Fix] Fixes regression of missing `BlogKeys.Posts` for tag documents (it broke when pagination was added)

# 0.17.4

- [Feature] Adds a warning when output path is also one of the input paths (#490)
- [Refactoring] Refactored `IMetadata` type conversion convenience methods into extension methods
- [Refactoring] Refactored `IExecutionContext.GetLink(...)` methods into extension methods
- [Feature] Adds settings and extensions for dealing with input and output date cultures (#475)
- [Refactoring] Tons of documentation comment updates
- [Refactoring] Added server tests back in (#484)

# 0.17.3

- [Fix] Fixed occasional missing XML doc comments from assembly XML doc files (#483)
- [Fix] Fixed inheritdoc behavior when interface is inherited from base class (#481)
- [Refactoring] Turned off x86 runtime preference and switched to x64 libuv - this means the Wyam preview server will no longer work on x86 platforms without manually swapping the libuv library (#484)
- [Refactoring] Continuing to tweak memory pool settings
- [Fix] Excluding partials from the blog pages pipeline

# 0.17.2

- [Feature] Added `IExecutionContext.GetContentStream()` utility method to get streams for document content
- [Refactoring] Removed string content support from documents and deprecated string-based document factories (#477)
- [Feature] Added support for alternate content storage strategies (#476)
- [Feature] Special handling for CLI directory path inputs ending in an escape (#472)
- [Feature] Updated to latest Roslyn libraries supporting C# 7 (#473)
- [Feature] Added support for operators to the docs recipe (#468)
- [Feature] Added `Keys.TotalItems` for use with the `Paginate` module
- [Feature] Added optional pagination to tag archives for blog themes using `BlogKeys.TagPageSize` (#469, thanks @alfadormx)

# 0.17.1

- [Fix] Fixed regression in `Execute` module that caused tags not to be output in Blog recipe
- [Feature] Added a new `Pipeline` class in `Wyam.Common` to use as base for predefined pipelines (I.e., in recipes)
- [Refactoring] Moved `ModuleCollection` module to `Extensibility` namespace
- [Refactoring] Code quality ruleset updates
- [Fix] Resolves server errors with LiveReload (#465, thanks @Silvenga)

# 0.17.0

- [Fix] `CodeAnalysis` module only displays duplicate comments once for partial classes (#460, #463, thanks @M-Zuber)
- [Feature] New `Join` module for joining documents together (#461, #23, thanks @JamesaFlanagan)
- [Feature] Implemented a NuGet dependency cache making subsiquent generations *much* faster (#317)
- [Refactoring] Updated Cake to 0.17.0 (#457, thanks @pascalberger)
- [Refactoring] Ported hosting code to new `Wyam.Hosting` library that can be used outside Wyam (#385)
- [Fix] Ensures result documents get set, even for empty pipelines (#455)
- [Feature] New `Highlight` module for generation-time highlight.js highlighting (#452, thanks @enkafan)
- [Feature] Implements a new JavaScript engine framework including runtime engine switching for modules to use JavaScript libraries! (#452, thanks @enkafan)
- [Refactoring] Filters JetBrains assembly from loaded namespace list (#453, thanks @enkafan)
- [Feature] Adds LiveReload support for the preview server! (#420, thanks @Silvenga)
- **[Breaking Change]** [Refactoring] Removed `IPipelineCollection` overloads for specifying documents should be processed once to use a fluent method instead
- [Refactoring] Refactoring of `IPipelineCollection` to move a bunch of implementation logic into extension methods
- [Refactoring] Changed preview web server from Katana to Kestrel (#449, thanks @Silvenga)
- [Refactoring] Updated LibGit2Sharp to 0.23.1 (#450, thanks @pauldotknopf)
- [Feature] Adds extension methods to `IModuleList` to help tweak recipes (#445, thanks @enkafan)
- [Refactoring] Implements a new `IModuleList` interface and implementations that support named module collections and applies the concept to control modules as appropriate (#447, #448)
- [Refactoring] Moved `TraceExceptionsExtensions` to `Wyam.Common.Execution`
- [Feature] Added several code quality checkers and rulesets (#443, #444, thanks @Silvenga)
- [Fix] Relative URLs are now unescaped in `ValidateLinks` module

# 0.16.3

- [Feature] Docs recipe now checks for an "src" folder both inside and alongside the "input" folder (#436)
- [Feature] Outputs current settings on every build
- [Refactoring] Switched blog theme string constants to use the correct `BlogPipelines` keys (#435, thanks @enkafan)
- [Fix] Fixed null check in Phantom blog theme footer (#433, thanks @enkafan)
- [Feature] Added helpers for module developers to trace per-document exception messages (#320)
- [Feature] Greatly improved per-document error messages (#320)
- [Fix] jQuery CSS reference casing was wrong in docs theme

# 0.16.2

- [Fix] Fixes a bug when multiple input paths have the same starting characters (#414)
- [Fix] Adds support for duplicate single-value directives when values are equivalent (#430)
- [Feature] Adds ability to specify Markdig extension classes within the Blog and Docs recipes (#429, thanks @enkafan)
- [Refactoring] Changed MSBuild to use maximum number of CPUs, speeding up compile times (#428, thanks @enkafan)
- [Fix] Fixed guard clauses in `Image` module (#427, thanks @n-develop)
- [Feature] Exceptions and other execution errors no longer kill the watch loop (#422, #421, thanks @Silvenga)
- [Feature] Improved error messages when delegate invocation return types don't match
- [Feature] Adds support for complex nested object sequences to the `Yaml` module
- [Feature] Adds `IMetadata.DateTime()` shorthand method for getting `DateTime` values from metadata
- [Fix] Adds the missing `CsvToMarkdown` file to the project (#418, thanks @LokiMidgard)
- [Feature] Adds support for the `--attach` flag to the Cake addin

# 0.16.1

- [Refactoring] Docs recipe now allows you to specify a logo file using the `DocsKeys.Logo` setting
- [Fix] Fixes recipes and `Title` module so that page titles wouldn't use the global title settings if no explicit title was set
- [Feature] Added `IDocument.WithoutSettings` for getting metadata for a document without the global settings
- [Feature] Added `IMetadata.Bool(...)` for getting Boolean values from metadata

# 0.16.0

- [Refactoring] Out of beta!
- [Refactoring] All libraries now target .NET Framework 4.6.2
- [Refactoring] `GlobalMetadata`, `InitialMetadata`, and `Settings` have all been moved to a consolidated `Settings` metadata collection (#379)
- [Feature] An error is now displayed when running under Mono (#375)
- [Feature] Recipes can now output a config file (#388)
- [Fix] Preview server can now handle escaped URL characters when supporting extensionless files (#413)
- [Fix] Fixes CSS for block quote margins in CleanBlog theme (#412, thanks @n-develop)
- [Fix] Fixes CSS for dropdown menus in CleanBlog theme (#409, thanks @n-develop)
- [Fix] Fixes use of `PostsPath` setting for archive links in themes (#400, thanks @kamranayub)
- [Fix] Fixes `params` parameter types in `CodeAnalysis` module (#407)
- [Feature] Adds support for escaping CDATA XML doc comments to `CodeAnalysis` module (#411)
- [Feature] Adds a filter function for `CopyFiles` module to fine-tune destination path (#398, thanks @deanebarker)
- [Fix] Fixes support for `RssPath` and `AtomPath` settings in themes (#396, #397, thanks @kamranayub)
- [Feature] Adds option to replace RegEx matching groups in `Replace` module (#386, thanks @LokiMidgard)
- [Feature] New `CsvToMarkdown` module (#384, thanks @LokiMidgard)

# 0.15.8

- [Refactoring] Removed Turbolinks from the docs theme due to some oddness with JavaScript loading
- [Fix] Removes overridden members from the members collection in `CodeAnalysis` module
- [Refactoring] Moved remarks section up in docs theme
- [Feature] Added `_Head.cshtml` override file to the blog themes
- [Feature] Support for `<inheritdoc/>` in the `CodeAnalysis` module and docs recipe (#364)
- [Refactoring] Updated Markdig version

# 0.15.7

- [Fix] Fixed a bug with new docs recipe package downloads
- [Fix] Fix for wrong System.Console binding in Wyam.Windows (#372, thanks @adamclifford)
- [Fix] Fix for logo path in docs recipe (#369, thanks @meil)

# 0.15.6

- [Fix] Post date comparison now performed with current time instead of midnight (#365)
- [Refactoring] Better warnings when posts are skipped due to future or missing date in docs and blog recipes (#365)
- [Feature] Adds support for serving from a virtual directory to the preview server using the `--virtual-dir` option
- [Feature] New `ValidateLinks` module with opt-in use for blog and docs recipes (#15)
- [Fix] Modifying all assets and links in themes to use link generation for virtual directory support
- [Refactoring] Improvements to `LinkGenerator` to make it more flexible (this class isn't typically used by user code)

# 0.15.5

- [Fix] Fixed missing default paths for blog feeds
- [Refactoring] Made all theme resources except Google Fonts local for better HTTPS support

# 0.15.4

- [Fix] Fixing some deployment issues with last release and package dependencies

# 0.15.3

- [Refactoring] Updated Roslyn and Razor NuGet packages
- [Refactoring] Additional caching for Razor page compilation under certain conditions (especially for docs recipe)

# 0.15.2

- [Fix] Adds a warning for unparsed publish dates in docs and blog recipes (#361)
- [Fix] Added support for fields and constant values to `CodeAnalysis` module and docs recipe (#363)

# 0.15.1

- [Fix] Added the Docs recipe and Samson theme to the set of known recipes and themes

# 0.15.0

- **[Breaking Change]** [Refactoring] Moved several of the blog recipe files to the root to accomodate different post paths. If you have a file override for `/posts/_PostFooter.cshtml` it'll need to be moved to `/_PostFooter.cshtml` (likewise with other theme files in `/posts` except for `/posts/index.cshtml` which is still in `/posts`).
- [Fix] Suppresses CS1701 (binding redirect) warnings in config script host
- [Refactoring] Switched the blog themes to highlight.js (#345)
- [Feature] Added ability to set a comparer for `GroupBy`, `GroupByMany`, and `OrderBy` modules
- [Fix] Several bug fixes for `AutoLink` module
- [Refactoring] Moved `LinkGenerator` to `Wyam.Common`
- [Feature] New `Redirect` module for generating redirect pages (#44)
- [Feature] `IMetadataValues` are now searched recursivly (so an `IMetadataValue` and return another `IMetadaValue`)
- [Feature] New customization options in `SearchIndex` module
- [Feature] Added support for `NamespaceDoc` classes to `AnalyzeCSharp` module
- [Feature] Added support for namespace XML doc comments to `AnalyzeCSharp` module
- [Feature] Added support for inherited members to `AnalyzeCSharp` module
- [Feature] Ability to insert new pipelines before and after other named pipelines (useful for customizing recipes)
- [Feature] Added support for analyzing attributes to `AnalyzeCSharp` module
- [Fix] Fixed a bug in `Xslt2` regarding base URIs (#355, thanks @LokiMidgard)
- [Feature] Support for array values when specifying global/initial metadata via the CLI and Cake
- [Feature] New `AnalyzeCSharp.WithAssemblies()` method for assembly-based code analysis
- [Feature] New `TestExecutionContext` class in `Wyam.Testing` for easier test mocking
- [Feature] New `Headings` module for adding HTML headings in content to metadata
- [Feature] Added `.WithNesting()` to `Tree` module to nest documents inside metadata as a hierarchy
- [Fix] Fixed a bug with content folders in NuGet packages
- [Refactoring] Updated NuGet libraries to 3.5
- [Fix] Added `UseGlobalSources` flag to Cake addin
- [Fix] Fixed some bugs with Cake addin when specifying NuGet packages
- [Feature] `If` module now supports context-only predicates that only evaluate once for all input documents
- [Feature] Added `Meta.OnlyIfNonExisting()` to prevent setting metadata if value already exists
- [Feature] Support for Jekyll-style excerpt comment separators in the `Excerpt` module 
- [Feature] New `Include` module for including content from a file into an existing document
- [Feature] New `Title` module for setting title metadata
- [Feature] New `Flatten` module for flattening hierarchical document trees
- [Feature] Lots of improvements and fixes to `Tree` module
- [Feature] Adds new `Docs` recipe (#342)
- [Feature] Adds the `AdventureTime` sample from [Static-Site-Samples](https://github.com/remotesynth/Static-Site-Samples)
- [Fix] Fixes bug with link generation in `CodeAnalysis` module for nested types
- [Feature] Adds `Razor.WithModel()` for specifying a view model in config script
- [Feature] Support for alternate model types in Razor views (including partials)
- [Fix] Fixes some bugs with complex recursive globbing patterns
- [Feature] Adds `IDirectory.Parent` for finding parent directory
- [Refactoring] Big refactoring of source code organization
- [Fix] Add NuSpec for Xslt2 module, resolves #341

# 0.14.1

- [Feature] `Execute` module now processes documents in parallel with a new option to fall back to sequential processing
- [Feature] Adds support for executing modules and replacing content to the `Execute` module (this makes it much more powerful)
- [Feature] Adds `IsRegex()` to `ReplaceIn` module
- [Feature] New `Xslt2` module that uses Saxon to apply XSLT 2 transforms (#340, thanks @LokiMidgard)
- [Fix] Add themes to the set of known extensions, ensuring they stay up to date

# 0.14.0

- Note: this release introduces a new Razor engine and host based on ASP.NET Core MVC. It should be similar to the old one, but there might be some breaks, especially if using layouts and partial pages. Most of the differences have to do with stricter path handling by ASP.NET Core MVC than the previous implementation. If you find Razor pages aren't building correctly, try tweaking your layout and partial paths. 
- [Refactoring] When specifying official Wyam extension packages the current Wyam version will be used if no version is specified, forcing package download if the matching version isn't already available (#338)
- [Refactoring] Tweaked the naming scheme of test classes and methods (#329)
- [Feature] Adds `.WithLayout()` fluent methods to the `Razor` module
- **[Breaking Change]** [Refactoring] Totally rewrote the `Razor` module on top of ASP.NET Core MVC (#141)
- [Fix] Fixed some spelling mistakes (#337, thanks @hyrmn)
- [Feature] Added an example showing integration in ASP.NET web applications (with a fix in #335, thanks @jamiepollock)
- [Refactoring] Moved to a higher-performance `ConcurrentHashSet` implementation (#325)
- [Fix] Fixed excerpt rendering for posts in blog themes
- [Fix] Fixes related to using and generating links for HTTPS (#332, #333, thanks @leekelleher)
- [Fix] Inverted the order of tags in blog themes (#331, thanks @ibebbs)

# 0.13.5

- [Fix] Fixed lifting of using directives in the configuration file

# 0.13.4

- [Fix] Fixed duplicate posts in archive for CleanBlog and Phantom Blog themes
- [Feature] Added support for post footers in Blog themes
- [Refactoring] Changed Markdown processor to Markdig (#328, #165, thanks @FlorianRappl)
- **[Breaking Change]** [Refactoring] Removed declarations section of config file, any global classes are now automatically "lifted" out of the config method (#316)
- [Refactoring] Switched to a CDN for Bootstrap and jQuery resources in CleanBlog theme
- [Feature] Pretty print CSS class now automatically added to Blog recipe posts 

# 0.13.3

- [Refactoring] Removed cache hit/miss messages from the verbose log due to excessive noise
- [Fix] NuGet no longer crashes for lack of network access (#326)
- **[Breaking Change]** [Refactoring] Removed the `an` directive and command line argument, all assemblies should now be loaded with the `a` directive/argument regardless of if a full name, simple name, globbing pattern, or file path is specified
- [Feature] Will now attempt to load assemblies from a simple name like `System.Xml` with the same version as the current framework
- [Refactoring] Lots of refactoring related to assembly loading (#324)
- [Feature] Added new Phantom theme for the Blog recipe
- [Feature] Added support for hero images to the Blog recipe
- [Feature] Added an argument to recipe and theme directives to indicate any known recipe/theme packages should be ignored (mainly for debugging new recipe/themes)
- [Feature] Added an "about" page to the Blog recipe scaffolding

# 0.13.2

- [Fix] Added a NuGet dependency to the Wyam.Feeds package in the Wyam.Blog recipe package

# 0.13.1

- [Fix] Fix for scaffolding a recipe to a non-existing directory

# 0.13.0

- [Feature] Implemented general support for recipies (#1)
- [Feature] Implemented Blog recipe
- [Refactoring] Local file system now uses non-blocking read/write sharing
- [Feature] Adds a default "theme" folder to the set of default input folders
- [Refactoring] Better automatic metadata conversion of enumerable types to atomic values
- [Refactoring] Improvements to collection and document collection extensions (#195)
- [Feature] Added `Where()` fluent method to `GroupBy` and `Paginate` modules
- [Feature] Added new `GroupByMany` module
- [Feature] Implemented themes (#72)
- [Feature] Implemented CleanBlog theme for the Blog recipe
- [Fix] Fixed some bugs with globbing and assembly loading from the file system
- [Feature] Implemented default theme support for recipes (#310)
- [Fix] Fixed a bug when watching non-existing input paths
- [Feature] Added support for initial document metadata to the CLI and Cake addin (#11)
- **[Breaking Change]** [Refactoring] Renamed the CLI argument for global metadata to `--global` (#11)
- **[Breaking Change]** [Refactoring] All metadata collections are now case-insensitive (including document metadata) (#312)
- **[Breaking Change]** [Refactoring] `IMetadataValue` no longer passes the requested key (#312)
- [Refactoring] Pipeline names are now case-insensitive (#313)
- [Feature] `IExecutionContext` now implements `IMetadata` for the global metadata (#311)
- **[Breaking Change]** [Refactoring] Method `IMetadata.Documents()` is renamed to `IMetadata.DocumentList()` to avoid conflicts with `IExecutionContext.Documents()` (#311)
- [Refactoring] Added support for different commands to the CLI (#309)
- [Feature] Added a `new` command to the CLI for scaffolding initial files for a recipe (#309)
- [Feature] Added a `preview` command to the CLI for previewing a site without actually building it (#309)
- [Feature] Added a `OnlyMetadata()` method to the `WriteFiles` module that adds the same metadata the `WriteFiles` module usually does but does not actually write the files to disk (useful for staging files in one pipeline and then writing them in another)
- [Fix] Warns when NuGet communication fails (instead of terminating)
- [Feature] Adds new empty `IExecutionContext.GetLink()` method to get a bare site link
- **[Breaking Change]** [Feature] New `GenerateFeeds` module in `Wyam.Feeds` package to replace legacy `Rss` module (can generate RSS, Atom, RDF) (#322)
- [Fix] Fixes for nullables in metadata type conversion
- [Fix] Fix for stemming toggle in `SearchIndex` module (#315)
- [Refactoring] Assemblies are now loaded in parallel for performance
- [Refactoring] Removed beta pre-release version designation

# 0.12.4

- **[Breaking Change]** [Refactoring] Extension NuGet packages have been renamed from `Wyam.*` to `Wyam.*` to better represent other non-module extension points (#295)
- **[Breaking Change]** [Feature] The NuGet package version now takes a *version range*, so you must use `[x.y.z]` instead of `x.y.z` to specify a specific version
- [Feature] Added a `use-global-source` flag to trigger the use of globally configured NuGet package sources
- [Feature] WriteFiles now supports an `Append()` method to trigger appending to existing file instead of overwritting them (#304)
- [Refactoring] WriteFiles now has better handling of outputting multiple documents to the same file (#303)
- [Feature] New `Sidecar` module to pull metadata for a document from a sidecar file (#306, thanks @LokiMidgard)
- [Refactoring] Additional documentation for Cake alias (#302, thanks @gep13)
- [Refactoring] New assembly type scanning algorithm will make future extension points easier to support (#281)
- [Refactoring] File providers are now specified as a URI (#277)
- [Feature] New `Tree` module to construct a hierarchy from a set of documents (#292, thanks @LokiMidgard)
- [Fix] Output directory is now created on demand instead of automatically at execution (#293)
- [Fix] Check for null stream if null content on `Document.ToString()` (#294, thanks @LokiMidgard)
- [Refactoring] Renamed CLI flag `--pause` to `--attach` and changed behavior to wait for a debugger to attach instead of requiring key press
- [Fix] Fixed some bugs with the Cake.Wyam NuGet package dependencies (#291)
- [Fix] Fixed some problems with the handling of dotfiles (#289)
- [Fix] Documentation fixes for `IDocument` (#288, thanks @LokiMidgard)

# 0.12.3

- [Fix] Fixed a bug where execution could hang in some environments that open stdin and leave it open like Azure CI or VS Code task execution (#287)
- [Feature] Added a `--latest` flag to the `#nuget` preprocessor directive to indicate that the latest available package version should always be installed
- **Breaking changes**: Please see https://wyam.io/docs/advanced/migrating-to-0.12.x for more information

# 0.12.2

- [Fix] Emergency resolution for a bug with NuGet operations ordering an file locks
- **Breaking changes**: Please see the release notes for 0.12.1 for more information

# 0.12.1

- **[Breaking Change]** [Refactoring] Non-core module packages are no longer included with the default distribution and will need to be downloaded and installed by NuGet at runtime, see https://wyam.io/knowledgebase/migrating-to-0.12.x for more information (#275)
- [Feature] Preprocessor directives are now supported in your configuration files for NuGet package and assembly loading (#274)
- [Feature] The CLI also supports a similar syntax to the preprocessor directives for specifying NuGet packages and assemblies on the command line (#280)
- [Feature] We now have a Windows installer! (#127 and #283, thanks @FlorianRappl)
- [Feature] We also now have a Cake addin! (#129 and #276, thanks @gep13)
- [Refactoring] Migrated internal NuGet libraries to v3 (#190)
- [Refactoring] Moved configuration file and NuGet API logic out of Wyam.Core to new Wyam.Configuration library (#279)

# 0.12.0

- **MAJOR BREAKING CHANGES, BEWARE YE WHO ENTER HERE!*- - The entire I/O stack has (finally) been rewritten and modules that were using `System.IO` classes have been ported to the new abstraction - read about how to migrate your pre 0.12.0 code at https://wyam.io/docs/advanced/migrating-to-0.12.x and keep on the lookout for bugs
- [Feature] New globbing engine with brace expansion, negation, and wildcard support (see https://wyam.io/docs/concepts/io for more details)
- **[Breaking Change]** [Refactoring] ReadFiles now uses the new I/O API and several configuration methods have been removed or changed
- **[Breaking Change]** [Refactoring] `IDocument.Source` is now a `FilePath`
- [Feature] You can now explicitly specify if a given `FilePath` or `DirectoryPath` is absolute or not
- **[Breaking Change]** [Refactoring] Moved `IMetadata.Link()` to `IExecutionContext.GetLink()`
- [Feature] Control global link settings (like hostname or whether to hide extensions) from `ISettings` (available from config file as `Settings`)
- [Feature] New `MinifyHtml` module that can minify HTML content (#260, thanks @leekelleher)
- [Feature] New `MinifyCss` module that can minify CSS content (#266, thanks @leekelleher)
- [Feature] New `MinifyJs` module that can minify JavaScript content (#266, thanks @leekelleher)
- [Feature] New `MinifyXhtml` module that can minify XHTML content (#266, thanks @leekelleher)
- [Feature] New `MinifyXml` module that can minify XML content (#266, thanks @leekelleher)
- [Feature] Added `IMetadata.FilePath()` and `IMetadata.DirectoryPath()` to make getting strongly-typed paths from metadata easier
- **[Breaking Change]** [Refactoring] Refactored several methods in `FilePath` and `DirectoryPath` into properties (`FilePath.GetFilename()` to `FilePath.Filename`, etc.)
- [Fix] Added support for root sequences to the Yaml module
- [Fix] Engine now retains global metadata between invocations in watch mode (#269, thanks @miere43)
- [Feature] New `Combine` module that can combine multiple documents into one
- [Refactoring] Content from NuGet packages is no longer copied to a staging folder and is instead retrieved directly

# 0.11.5

- [Fix] Well this is embarrassing - fix for the fix to properly handle undownloaded NuGet packages

# 0.11.4

- [Fix] Ongoing work with IO abstraction layer (#123, #214) to resolve some file system errors on build

# 0.11.3

- [Fix] Specifying input path(s) on the command line now correctly removes the default input path (#241 and #231)
- [Fix] Correctly handle paths that contain single . chars (#244)
- [Fix] Duplicate trace messages when config file is changed in watch mode (#243)
- [Feature] New support for specifying global metadata on the command line and accessing it from config files, the engine, and the execution context (#233 and #237, thanks @miere43)
- [Fix] Incorrect number of pipelines reported in output (#235 and #236, thanks @miere43)
- [Fix] Exceptions are now highlighted in the CLI (#230 and #232, thanks @miere43)

# 0.11.2

- A special thanks to @deanebarker who contributed a ton of new functionality as well as generated lots of great ideas, discussion, and bug reports - this release wouldn't be what it was without his help and support
- Note that the I/O abstraction support is still under development and may continue to change in the next version
- [Feature] Support for custom document types (#183)
- [Feature] Support for reading from stdin, including a new `ReadApplicationInput` module (#226, thanks @deanebarker)
- [Feature] New command-line switch `--verify-config` for validating the config file without actually running (#223, thanks @deanebarker)
- [Feature] New `ValidateMeta` module for validating metadata (#220, thanks @deanebarker)
- [Feature] New command-line switch `--preview-root` to set an alternate root path for the preview server (#213, thanks @deanebarker)
- [Feature] New `Merge` module that merges the content and metadata from documents output by a module sequence into the input documents 
- **[Breaking Change]** [Refactoring] ReadFiles now outputs new documents and only reads the files once if supplying a search pattern, to replicate the old behavior where ReadFiles read the matching files for each input document wrap it in the new Merge module
- [Feature] New `GenerateCloudSearchData` module to generate JSON data for AWS Cloud Search (#213, thanks @deanebarker)
- [Feature] New `Take` module that only outputs the first N input documents (#208 and #211, thanks @deanebarker)
- [Feature] New `CopyMeta` module to allow copying metadata from one key to another with optional formatting (#209 and #207, thanks @deanebarker)
- [Feature] Added `.WithGuidMetaKey()` to the Rss module to specify a metadata item that has the GUID (#206, thanks @deanebarker)
- [Feature] A tools NuGet package is now published that includes the CLI (#204)
- [Feature] Added void delegates to Execute module so you no longer have to return a value (#194)
- [Feature] Added `.IsRegex()` to Replace module (#201 and #203, thanks @deanebarker)
- [Feature] New `ModuleCollection` module to wrap a sequence of child modules for reuse (#197)
- [Feature] Added `IMetadata.Documents()` to return an `IReadOnlyList<IDocument>` from metadata (#200)
- [Feature] Added `IMetadata.Document()` to return an `IDocument` from metadata
- [Fix] Type conversions now properly take compatibility with enumerated item type into account (#198)
- [Fix] Fixed possible race condition when cloning documents with different sources (#196)
- **[Breaking Change]** [Feature] Implemented new IO framework and replaced all uses of strings for passing path information with new IO classes, `Engine.RootFolder`, `Engine.InputFolder`, and `Engine.OutputFolder` are now replaced by `IFileSystem.RootPath`, `IFileSystem.InputPaths`, `IFileSystem.OutputPath` (#123)
- **[Breaking Change]** [Refactoring] Changed `Trace` to a static class to better support forthcoming parallel pipeline processing
- **[Breaking Change]** [Refactoring] `Metadata` property in config file renamed to `InitialMetadata` to distinguish from run-time metadata
- [Refactoring] Removed the need to pass `Engine` to many core classes since it was just needed for the `Trace` instance (which is now static)
- [Refactoring] Split internal configuration classes for better separation of concerns and testability
- [Refactoring] Added Wyam.Testing library with common testing classes
- [Refactoring] Reorganized tests to better follow a specific convention
- [Refactoring] Changed color of critical errors in the console to white on a red background for better readability (#182)
- [Refactoring] Changed model type of Razor pages to `IDocument` instead of `IMetadata` (#188)
- [Refactoring] Uncaught exceptions now cancel the build (#187)

# 0.11.1

- **[Breaking Change]** [Refactoring] Changed the name of the release file from `wyam.zip` to `wyam-[verson].zip`
- [Fix] Namespaces are now added for `Engine.Configure()` calls without a script (#147 and #148, thanks @heavenwing)
- [Fix] CopyFiles was no returning a sequence for invalid folders (#166)
- [Fix] Better documentation and small bug fixes for CopyFiles (#158)
- [Fix] Excludes the output folder from watching (#156)
- [Fix] Fixes some odd behavior with FileName used with WriteFiles (#159)
- [Fix] Better failure handling to overcome locked file errors when watching (thanks @miere43)
- [Fix] Implemented file operation retry for several modules (#167, #169)
- [Feature] New `Rss` module (#174, thanks @miere43)
- [Feature] Added support for unknown file types to preview server (#175)
- [Feature] Added more specific error codes (#171)
- [Refactoring] Small improvements to Yaml module (better error messages, parallel processing) (#177)
- [Feature] New `GitHub` module (#145)
- [Feature] Added `Meta.IgnoreNull()` to control if null values should still be added to metadata
- [Feature] Added `IMetadata.Dynamic()` to return metadata values as dynamic objects
- [Refactoring] Adds an extra optional key to the cache for use by module authors
- [Feature] Added additional Markdown module constructor to render Markdown content in metadata
- [Feature] New `Json` and `GenerateJson` modules to read and write JSON data (#5)
- [Feature] Added support for setting input and output path from the configuration script
- [Fix] Git module now correctly ascends folder hierarchy
- [Refactoring] Migrated build system to Cake

# 0.11.0

- [Feature] New `Download` module for downloading content during generation (#68 and #75, thanks @dodyg)
- [Feature] New `AnalyzeCSharp` module that performs code analysis on C# source files, including XML documentation comments (#70)
- [Feature] New `ReadProject` module that loads all the source files referenced in an MSBuild project (#70)
- [Feature] New `ReadSolution` module that loads all the source files referenced in an MSBuild solution (#70)
- [Feature] Added `WithoutExtensions()` to CopyFiles to make it easier to specify which files to copy
- [Feature] Added additional `IExecutionContext.GetNewDocument()` overloads
- [Refactoring] Moved `Crc32` to `Wyam.Common` so other module libraries can also use it
- [Fix] NuGet support now considers .NET 4.6 packages when resolving libraries
- [Fix] Console application now exists with a non-zero error code so automated builds can be aborted if something goes wrong
- [Refactoring] Additional trace output for debugging, especially in NuGet resolve process
- [Refactoring] Better example test fixture (thanks @yetanotherchris)
- [Refactoring] Moved `Wyam.Common` types to appropriate nested namespaces
- [Feature] Added `WithMatchOnlyWholeWord()` to AutoLink module (#80, thanks @LokiMidgard)
- [Feature] New `HtmlEscape` module for escaping HTML characters (#81, thanks @LokiMidgard)
- [Feature] Additional `ToLookup()`, `ToDocumentDictionary()`, and `ToDictionary()` extension methods for `IDocumentCollection` (#82)
- [Feature] Added new `Execute()` constructor to Execute module that only gets evaluated once per pipeline (#83, thanks @LokiMidgard)
- [Feature] New `GitCommits` and `GitContributors` modules for getting information from Git repositories (#84, thanks @LokiMidgard)
- [Feature] New `ConcatBranch` module for branching and then concatenating the output (#87, thanks @LokiMidgard)
- [Feature] New `DirectoryMeta` module for applying metadata supplied for an entire directory to all documents sourced from that directory (#86, thanks @LokiMidgard)
- [Fix] Fixed several file locking issues (#92)
- [Feature] Performance boost by using parallel disposal at the end of pipelines
- [Feature] Added `ThenBy()` to OrderBy module (#101, thanks @LokiMidgard)
- [Feature] Can now output the config script files the way Roslyn sees them (after adding modules, etc.) for debugging purposes using the `--output-scripts` flag (#99)
- [Feature] New `FileName` module for generating SEO-friendly file names (#99, #104, and #107, thanks @yetanotherchris)
- [Feature] Added `UseWriteMetadata()` to WriteFiles module to control if metadata values are used for file destination (#106)
- [Feature] Default for FrontMatter module is now to ignore delimiter(s) if on the first line
- [Feature] All configured namespaces are added as `IExecutionContext.Namespaces` for other code generating modules to use
- [Feature] WriteFiles module now sets relative path information metadata (#111, thanks @reliak)
- [Feature] New `Sitemap` module to generate standards-compliant sitemap files (#113, thanks @reliak)
- [Feature] New `Xmp` module to import XMP encoded metadata (#114, thanks @LokiMidgard)
- [Feature] Updates to CopyFiles for better path handling (#116, thanks @reliak)
- [Feature] New `SearchIndex` module to generate Lunr.js compliant search indexes (#118, thanks @reliak)
- [Feature] New `Switch` module to provide `switch` statement like control for a pipeline (#120, thanks @reliak)
- [Feature] Added `IgnoreEmptyContent()` to WriteFiles module to ignore empty files (#117)
- [Feature] New `Xslt` module to apply XSLT transformations (#126, thanks @LokiMidgard)
- [Feature] New `CsvToHtml` and `ExcelToCsv` modules for working with tabular data (#132, thanks @LokiMidgard)
- [Refactoring] Removed static helper methods in `MetadataHelper` and replaced with `MetadataItem` and `MetadataItems` classes to make working with metadata easier
- [Refactoring] Renamed `Wyam.Core.MetadataKeys` to `Keys` and moved to `Wyam.Common` for common access (#131)

# 0.10.0

- [Feature] Added additional overloads to the `Documents` module that allow you to create new documents from scratch
- [Feature] New `IExecutionContext.GetNewDocument(...)` method that also allows you to create a new document from scratch from within your modules
- [Feature] New `GenerateMeta` module that procedurally generates metadata text using a text template (#55)
- [Feature] New `GenerateContent` module that procedurally generates document content using a text template (#55)
- **[Breaking Change]** [Refactoring] Renamed several fluent methods to better follow accepted fluent method naming conventions (I.e., `Xyz(...)` to `WithXyz(...)`)
- [Fix] Resolved memory consumption problems with using a large number of Razor templates by caching referenced assemblies (#69)
- [Feature] New `UnwrittenFiles` module that can prevent processing pipeline documents that have already been written to disk in a prior generation (#56)
- [Feature] Added `.WithExtensions(...)` fluent method to the `ReadFiles` module that makes it easier to restrict file reads to a set of file extensions
- [Feature] New `HtmlQuery` module that provides powerful querying of HTML content and sets result document content and/or metadata based on the results

# 0.9.0

- [Feature] New `Paginate` module for partitioning documents into pages (#60)
- [Feature] New `GroupBy` module for grouping documents
- [Feature] New `OrderBy` module for ordering documents (#61)
- [Feature] Several new constructor overloads to the `Documents` module that allow you get documents based on context.
- [Fix] Errors in the config file now report the correct line numbers (you will never know the pain I felt trying to get this to work correctly) (#67)
- [Refactoring] Changed `IDocument.Stream` to `IDocument.GetStream()` which now returns a wrapper stream that blocks on usage and must be disposed after use to prevent concurrent stream access for the same stream (#65)
- [Feature] Added support for automatic lambda expansion of `@doc` and `@ctx` variables in the configuration file
- [Feature] Added `ContextConfig` and `DocumentConfig` delegates to support the new automatic lambda expansion and encourage a standardized way of lazily configuring a module (#63)
- [Feature] Added `ConfigHelper` to support the common module configuration pattern where a module has either a `ContextConfig` or a `DocumentConfig`
- [Refactoring] Removed the `ConcatDocuments` module. The behavior can be easily represented by using other existing modules: `Concat(Documents(...))`
- [Fix] Fixed a bug in the Execute module when returning null
- [Fix] Fixed a bug in the ReadFiles module when no files match the specified pattern
- [Fix] Fixed some bugs in automatic module constructor factory method generation for configuration files for generic modules
- [Refactoring] now using more collections from System.Collections.Immutable for improved performance and safety

# 0.8.0

- [Feature] Improved caching support in multiple modules including Razor and Markdown
- [Feature] New `IDocument.Source` property to uniquely identify the source of each document (#38)
- [Feature] New `AutoLink` module for automatically generating links within HTML content (#36)
- [Refactoring] Major changes to how Wyam handles the storage of content inside a document to include operating on streams and/or string buffers for increased performance (#42)
- [Refactoring] Improvements to document and engine life cycle for proper disposal of resources
- [Feature] New `Images` module for manipulation of images within a pipeline (#25 - thanks @dodyg)
- [Refactoring] Renamed `Wyam.Abstractions` to `Wyam.Common` to reflect that it also contains non-abstract common code (#45)
- [Feature] New `ForEach` module that allows processing child documents one at a time (#47)
- [Fix] Fixes to how the Less module handles relative URLs (#49 - thanks @rohansi)
- [Refactoring] Made the cache thread-safe for parallel processing within a module (#50)
- [Refactoring] Changed behavior of several modules including Razor, Less, Markdown, ReadFiles, and WriteFiles, to process documents in parallel resulting in significant performance improvements
- [Feature] ASCII art FTW
- [Refactoring] Moved `PathHelper` to `Wyam.Common`
- [Feature] New `Excerpt` module that can excerpt the first specified element from HTML content and add it to metadata (#26)
- [Feature] New `processDocumentsOnce` flag that can skip any documents previously processed by the pipeline (#56)
- [Fix] Fixed a bug with Razor sections and `IRazorPage` instance reuse on subsequent pipeline executions (#58)

# 0.7.0

- Moved all the libraries from alpha to beta to reflect improving stability
- [Refactoring] Updated all projects and solution to Visual Studio 2015 and .NET 4.6
- [Feature] Added ability to specify alternate ViewStart paths for the Razor module (#37 - thanks @mschumaker)
- [Feature] Added ability to specify file ignore prefixes for the Razor module, files prefixed with `_` are now ignored by default (#37 - thanks @mschumaker)
- [Feature] Added additional metadata to `ReadFiles`: `SourceFilePathBase`, `RelativeFilePathBase`, and `RelativeFileDir`
- [Feature] Added additional metadata to `WriteFiles`: `DestinationFileBase`, `DestinationFileExt`, `DestinationFileName`, `DestinationFileDir`, and `DestinationFilePathBase`
- [Fix] Better normalization of file paths
- [Feature] Adds a new `string IMetadata.Link(string key, string defaultValue = null)` method for automatically formatting links for HTML use (I.e., replacing slashes)
- [Refactoring] Updated to Roslyn 1.0
- [Feature] Adds a new universal `IExecutionCache` for modules to use for caching data

# 0.6.0

- [Feature] Yaml module now maps simple scalar sequences to metadata when flattening
- [Refactoring] Switched from Roslyn scripting engine to direct compilation for configuration files, improving capabilities of configuration file declarations (extension classes, etc.)
- [Fix] Lots of fixes and updates for assembly locating and loading
- [Feature] Implemented support for custom Razor base page types
- [Feature] Added new `Documents` module that replaces the documents in the pipeline with alternate ones
- [Feature] Added overload to the `Execute` module that allows use of the execution context
- [Refactoring] Moved `MetadataKeys` class out of `Wyam.Abstractions` to `Wyam.Core` so that `Wyam.Abstractions` would be more stable, though this means user code will have to go back to strings for metadata keys
- [Feature] Added ability to override write location in the `WriteFiles` module on a per-document basis by setting specific metadata
- [Feature] `IDocument` now implements `IMetadata` so metadata can be retrieved directly from the document object
- [Feature] Added a `.String(...)` method to `IMetadata` to make getting string values easier
- [Refactoring] Created a new `IDocumentCollection` interface and implementations to provide a better API for getting documents during execution
- [Feature] Implemented support for converting metadata between array types and between scalars and array types
- [Feature] Implemented a `.ToLookup<T>(...)` extension method to generate a lookup table of metadata values to documents (for example, get all tags and the documents that define those tags)

# 0.5.0

- [Feature] Implemented a **Less CSS*- module
- [Fix] Fixes for NuGet package dependencies
- [Feature] Can now declare prerelease NuGet packages in configuration file without specifying version specification
- [Feature] Calls to `System.Diagnostics.Trace` from third-party libraries are now picked up by a custom `TraceListener` and output to the Wyam `TraceSource`
- [Refactoring] Renamed several metadata keys for consistency
- [Feature] `Engine` now implements `IDisposable` for better lifecycle management

# 0.4.0

- [Feature] Added a `Concat` module to concatenate documents from child modules with the current documents
- [Feature] Added a `ConcatDocuments` module to concatenate documents from previous pipelines with the current documents
- [Feature] Added a `Where` module to filter the current documents with a predicate
- [Refactoring] Moved the predicate in the `Branch` module to a fluent `.Where(...)` method to follow established conventions
- [Feature] `IPipelineCollection` now implements `IReadOnlyDictionary<string, IPipeline>`
- [Feature] `IPipeline` now implements `IList<IModule>`
- [Feature] A new `IReadOnlyPipeline` interface that implements `IReadOnlyList<IModule>` has been introduced for use during execution (since pipelines can't be changed once execution starts)
- [Feature] Added a test fixture to run all examples during testing
- [Feature] Added `RootFolder`, `InputFolder`, and `OutputFolder` as available properties in the configuration script
- [Refactoring] Renamed the `Metadata` module to `Meta` so it wouldn't conflict with the `Metadata` property in configuration scripts
- [Feature] Specifying `--watch` now also watches the configuration file and initializes a new engine if it changes
- [Refactoring] Updated the default configuration (for when no configuration file is specified or found) to use a single pipeline for Markdown and Razor documents

# 0.3.0

- [Refactoring] Added the Roslyn nightly packages to source control for easier builds (since they don't stay on the feed for long)
- [Feature] Added sequence of configured assemblies to the `IExecutionContext` (so modules like Razor can pick them up)
- [Feature] Added a new `MetadataKeys` static class to `Wyam.Abstractions` to help eliminate magic strings

# 0.2.0

- [Feature] Implements default configuration
- [Feature] CopyFiles now sets metadata values for SourcePath and DestinationPath for each document
- [Fix] Crashes when certain directories didn't exist
- [Refactoring] Trace module now follows fluent conventions

# 0.1.1

- [Fix] Fixes a bug with parsing some of the command line argument options
- [Feature] Adds support for specifying input and output folder on the command line

# 0.1.0

- Initial release!
tools\ru-ru\JavaScriptEngineSwitcher.Core.resources.dll
md5: A7F5B42F8226C2BCACCC1BC63B28B109 | sha1: 57515689C695D9FFDF6284AF6669C4CF190C0A15 | sha256: 5E64F62059D589C3B89B3019C1CD5949A27AD0C1D0D27E7EB4A1E6A9EE29EBBD | sha512: 27960B5A50C006E3D5B17F88DDD4BD9FE9E5E4999A6BD975F012795C6FDBDF2FCCB3734CD27C6BD1A72CBC83F5C121E23AD904EA02B53D1B12A0892B98C87057
tools\ru\Microsoft.CodeAnalysis.CSharp.resources.dll
md5: CFD17BE58D0876E8DCF65516CE76021C | sha1: C12C3C3844107FF4D077A857B7AFCE47A67F4A3B | sha256: DC0F7ABCEF8C6CB35C89EF0C9F8620C6C91ECC77E99F34ACF7BE38E22779FA4C | sha512: 210B3618458F8EFC9291DCD254E47BF621C40FE3BBAEFD65DD0BC508713F087EF9929F1F1D5899D018D93E8D3D73A92566E9DD317418B40D35558FC907365EE5
tools\ru\Microsoft.CodeAnalysis.resources.dll
md5: 7BBE0712F66C29BE335B6E4B3F34EC63 | sha1: F06C30292EC835D6A407AC85B84831743E7517D2 | sha256: C50566ADBDB95D4C93BD54CE120AD6B40D032BE717175D1AF04A015539E03789 | sha512: DBE8FFDEC7655232D0402427B7169AFBA64BD40F8E9906FF0722519A0DB71D05E5E9154D553F99C02E7596ACE3257CAEAC5E64642A70DB3BB842F63A98B1FEC0
tools\runtimes\linux-x64\native\libsass.so
md5: 580CC018A89133244A673799E36E01A3 | sha1: 086572A6C02644950DEC4742923788FDBFC6A872 | sha256: 7878012C91B6312853EF726C46CBCF8FA0B08D4362299E371E6F0545CF160445 | sha512: A6FE80DE74628B89B8110A1360C8C90DE4B61FF9D74BC2FE91FF66CB1C43E25E0FFFBC122D6B1E814B1159EE586BF40E6A7F23DDCD8E347798A883EA05193D9B
tools\runtimes\osx-x64\native\libsass.dylib
 
tools\runtimes\unix\lib\netcoreapp2.1\System.Data.SqlClient.dll
md5: 24697E2A7DC0F4BE58C7737D0456E37B | sha1: 7D6B805264309383CEC7A1445E6782332F55506B | sha256: F17FE2EA5F92F91FBA3889C3C19954E2F8B5F46E19FC6605829E22F7FB994C20 | sha512: DC8969A556669E1D1229F7BFFF9E1C8499DEAADD4327562E461CD9DF1BE10367CA9B7074D24CE6E4379DF4C234FB92D2022A015DE110DB1FA998CD60634DB2E4
tools\runtimes\unix\lib\netcoreapp2.1\System.Security.Principal.Windows.dll
md5: C7C364B2E9547FC8E19374DBFAB0D3AD | sha1: 62072CF8311687EA6D31C1368B54ABEACA7DAA16 | sha256: C4674AFA4C3003017238F77D9CCDE5673F492A516C41F01F23977818E0C9B152 | sha512: EFD5664A1EAC26C34A2B8A6D856630AE52F010EEA29D1CF9981779405D1A17C4CB2818A5FE5C83A67A3F11895A3B12BF4B630B2695DAA32740E7C6D8C8CC2AE7
tools\runtimes\unix\lib\netstandard2.0\Microsoft.Win32.Registry.dll
md5: 2C19FB4C7D9ED11EE71D4E14993FBC31 | sha1: 33BCBE913A79D03D251357909645EF00451E4153 | sha256: E26AE23EF01E663DD32C9CA47340CFD0E13871E4B0D5E4E10E1A254C069C01E0 | sha512: 4361F9CBBDE9DCCB738590926DF75A9A8B86E3C1E09DF340C89536CD7B46BD5ABB2A7CFF398E02C665A7E00D8B28153EE6739990413D8C7E17608F48925FD750
tools\runtimes\win-arm64\native\sni.dll
md5: 167136D7A81BCC85ACF4930AA7AC835F | sha1: 1E70240CC820796E78D77B1219291EEE2FB6DBE0 | sha256: EF18458C4DCB93F6B4EAC07E1589CF3450BF878F2DD623F5D34F6A0F1B16E57A | sha512: 2C084142E09AE1B850F8550A55142FBBF996F3DFB122BBCAD4FFFC11A6FDC5417D623683F383C4AC4A35E46EA0D441D82588231093F179FF4601CC598A1C8896
tools\runtimes\win-x64\native\libsass.dll
md5: 35CA707254E30FC2C500A15D46D55A46 | sha1: FE437ABF3D9BC7B03083700A1D7D63BC8E3D2C8D | sha256: D861BF9E025F013F04B33A35F1A7853BFA889A0F6F1AA4841F70E7CD05317390 | sha512: DB80FAFC25157B6E6F9A10222FFAC958E47350E881E454EDD3FE7C98963D015650131D8E8D122AAA6A93E01A9275600121ED0F01D8F326B4A1CC484979608FFB
tools\runtimes\win-x64\native\sni.dll
md5: 7F1799B65B98450A19E4D049E9D3E70D | sha1: EC80C5A33374423A9E986C383A36A97DA70A3584 | sha256: 68705C4EF9AB818F2956A78E05F3FEFCE501A1448793B073B46110BEB49B47D6 | sha512: 8D67297C5CDED487C88FCAAD5A36E80926DAD8F1863E38F397751056F51258AC7B5A9E5C09C01BBA7A224F38FB2EE719586FAF0BA81516E05A19649EB09E7B78
tools\runtimes\win-x86\native\libsass.dll
md5: FFCFFB006B9AE1A3AC7EE2863809FE96 | sha1: A90507FD09B65F460CCF1A4B63179E52A27383C1 | sha256: FF90B81F98AB437AF8DFF57A1106D4D1C7289F052FF231ACB3B54AE30D2BD2FA | sha512: 446AC1D9EA75A77F22CF2C4149B06CCBAD04213BB6EC5D3D3B1C3A9FB7BDECC96FE70E6EF524EBCFFD05A207290D84CAD6169FAB7648BD1548EA1E6CEAF7F117
tools\runtimes\win-x86\native\sni.dll
md5: C62A83F20BC23AEFACE70EC13003C4C5 | sha1: 35553CFCDCBECCDC49710E68AEC495C16880F0BD | sha256: 1446D6B26DA49A5A9F366972F89F4E236F916955F31DDC38EBB96217C1CACE9C | sha512: 4DDA44FD5B538F5DA9E8CB46A3AB1BDC14B43425B9A61249ECCC925D986AF7B8B3548DB9490238F14807909ECF479415117141DDB344119438A59F97E894EA37
tools\runtimes\win\lib\netcoreapp2.0\System.Security.AccessControl.dll
md5: 2CB23A23369178CD7E238705B238E516 | sha1: D71AB8B69734F983B8F102885390447FF9651666 | sha256: FE46D8C19CA5D1BB123C5AE8F464597EFA03496B081840AD2A57389E1C0EFDC2 | sha512: 42D3AFFE595F7F7AA55396A3226DC9F265C7F257C6F62C4D274A465E9FFC4A260F4E4F4956068D18F81571C5B3DB11871E3EAD2877197D90E699AB5EE0FBCA56
tools\runtimes\win\lib\netcoreapp2.0\System.Text.Encoding.CodePages.dll
md5: F2627EC47B4C29BFECCA4563945F0C41 | sha1: 31E6B389948BB39E793BCCC02319F23547ED58BA | sha256: 97BD0B6753BC771963261B61D8876986ABD284836B80F76AB91E7E8E7A225B04 | sha512: A064EB8C596D8BF58E74B78E5B9C465603902F4194D83832F4E4E9E7F73348142552B60F137AC904D74275B9F717697B85087F54096E964428E7B19BB4442BF0
tools\runtimes\win\lib\netcoreapp2.1\System.Data.SqlClient.dll
md5: 1D59B0B4CE6E00F17E326AAA8725E465 | sha1: 86C77DDAE4BF7C6BE9EF4A9DFEDAD572154AE8ED | sha256: C99593246B0FF528C2DD96EEB4C160A7E134BC0D79989D0784682A69F1156803 | sha512: 10529BF07BAA167FE41B9748F2BBA1F4DC726E993402E635CE55AFCE0DD39309EB523807707E8AFAFE97D557F92DF6F8AD5578326B48E8E342BB7FCA50C519EC
tools\runtimes\win\lib\netcoreapp2.1\System.Security.Cryptography.Pkcs.dll
md5: EDF7880A6D5D2295890ED4BBEB58ACC1 | sha1: D492A0219525F3A8E9C31FEEC3BEDC654D6B43EB | sha256: 0DD15CFE1825C4C53C6B0BB9CF594ED4BB61A557733CFDF8B9FA09C71B8314C7 | sha512: A5E9792189342AC57CA9DA3CD79550ADF525E49EB2074342792A8E0C96C29664924C344E1CF6C7C4E05BFF683562BB84AD90E3B219A1A1FE8E8B56C4A2554C0E
tools\runtimes\win\lib\netcoreapp2.1\System.Security.Principal.Windows.dll
md5: 6649B90B2F163268FB8FB578F25194CE | sha1: 9D3A984C00A29AC53B4C2C0577AC6ACFFC22BC5B | sha256: 99DF0E017858DE6377C868CB661B125DB0E924E29626FE659167193012624852 | sha512: 74E2624F592E75222B9B6CB80C90572B0C03E40F7E20398A9635A5E5D0A821A72BB16D8EF3081A9F942171421C93C2F9CC1B50498D71F748F284D90409F5005E
tools\runtimes\win\lib\netstandard2.0\Microsoft.Win32.Registry.dll
md5: 6431402C47FFB48F00361935150EEBBE | sha1: A0CF83A7A85A4A2E01EFCB9AB9AA2016B5B8FA86 | sha256: 4E04BA83FC98C60B5C95FC01684E85AD19D5C135EC00E0C6F5F4A3F0DC22964F | sha512: 8088B1DBBBBD7729F593D37B62B146BA565B72EF9999B3BF3C4766A221598EB9B1E26B226B5D0E5E01AB701A018D5B83B7A51EFF17F9C9DADFCB50C125FB180B
tools\runtimes\win\lib\netstandard2.0\System.Security.Cryptography.ProtectedData.dll
md5: 91B5141F40E650DF9F24959E002E6C66 | sha1: AC8675F91A4879042ED660C1D800058185552A57 | sha256: 1C73A1B016CFC8D497106EEC08AF07616F2F4C07E4DDC807C9F120CEACD0A53A | sha512: 6E1F88FC7C1ED560C4CA6168FAE9275583C7D664AF1A70F2A0A97A717D4B7E1D40A33F06B2782BB4ADB47AFC8B30B136DC28C0487A9DAEE183D8156DE5E5161B
tools\SharpScss.dll
md5: 2DD2F70ED4152CC953AFA8FE050496F8 | sha1: 8EE88C3242432F71D52AF7A568C4DE76ED5877EA | sha256: D8167A47856D0335908498EB4FD00B9E1E200075533B38D8968D7C5F4105DA95 | sha512: C3F660FFBA4F2B9DA16CC9A4DDB4A82B7EAACBFFCF9C67165ABEDFD6E700D6D5E5CA17CA7C94B13A56D0B8B7DF6CED1F0C05F04F6E57A3A594CCE79C2FB5BD2B
tools\System.CommandLine.dll
md5: DCA696CBB6268F6C661CD5E09E9992FD | sha1: 0F2035EAA9E455E3F8B1C1534DA48688E9979DD8 | sha256: 53FD9C5C156F391B266470B21BEF3610B782C5A54B0494F732C19BEC912F9128 | sha512: A07A98E8D44E8A31888143D7D85BCA860E0C4DE86D97C16F5A5AD9695B58B15561A5D282D74E5980EC48B8D354FE77ACE95C1CC0DECF15F6EB13D5AED1CA5ADB
tools\System.ComponentModel.Composition.dll
md5: 868AD071108F7B0ADCEEC2E9FFCD0FE0 | sha1: 79AE0C2B26937D94DFFAE39ACFAB724D79F88630 | sha256: AB23A9EE4AD84643847865D6E975C6746BD913270DD63E7CA9125E4DC255645F | sha512: 4E6BBD0B4C1FD177120CF92B510C07A19034C0487B48A63F824AD7FA53156236B2E3169523C240908446043D2014FF0CF16012CB73A0F5B04BF38EDC002A5A4B
tools\System.Data.SqlClient.dll
md5: 5DAB94399D68803D02574944E1C92FE8 | sha1: 946B586A2264D2E95FBF3CEEE438E57A5031F8E4 | sha256: 30486583763DC4F8383D5C39D2D74772D9731C7A874C02EDD5D3A58C8F38249A | sha512: 6BAB37F1C8C99B45E60F8223ADDDCA43E8E67D58B052EFF2B4ACF4C81110258AA01D0B1985227F5BCE520328A86B22346F94D603844051A241275DA83F4E827F
tools\System.Diagnostics.DiagnosticSource.dll
md5: 884D5C1C31519C48A8FEB5FA345BD7A9 | sha1: F645500CC6ECDBF20BB0A4C16E363BF1160B4ECD | sha256: 927E993BA2BDCA721CA4E1D253D34C6B5B681F338A34FF436DB4988AB0926598 | sha512: A1111DF396CE754B97ECD4599900CE653E23A6F6D38055E88EBC8920780EF59EBC3A7418FFF487494DE261B3588814375CA94AAED9B2DD33A434CCB456B98736
tools\System.IO.Pipelines.dll
md5: 277B23F72BC5F12468F29423AE5DCC8F | sha1: 9E9D94A012F951035767EE34322685A8DA190C3A | sha256: 319F18E1EC9E9537DFFBEDB6EBB5717D668A0D114235132B93CB710BD821DF86 | sha512: A75EACE0AA1C6050679146DCE7B6A0F78F0B38C3F9B5CFEEBB7F44DEC587BBD2F999B9E254654A4356A4BC69A11DBF16C5BC0F25FB9C7FF7BF23064F9F61FD84
tools\System.Net.WebSockets.WebSocketProtocol.dll
md5: 45207754B2267DDF2CCEED2B42F3E0DE | sha1: 50831847599FDEB04F07E7CA521CF350ADD52900 | sha256: 4D0E4AEC02402990AE7CCDFFA27D93EF14DAE9FF672F0A348544B52641ABFE1B | sha512: EEC14AF711C3EE5665544D403E4E8D0A89C35BC690DEFF274BEC49CD506CE72E956A820CF2B8C6738C91A6620B02930FF04499EC3B6B7865903374F5008D4B41
tools\System.Runtime.CompilerServices.Unsafe.dll
md5: F10997737E2C08A162A02232A7BBB4EF | sha1: 0E18935414B4268012A279A937B0BD0E2110EF5E | sha256: FFCC0D646189BB9364D49EC721DA0BAEE82B09159F7ED5C911D0609E4DF4C45F | sha512: 1BB3998F695BBBE25DBADDA3D8D9F478D6532027CA5D649E2571703A132A3B18F0D02558DF50C6B956DCB8D27A31765DB692F4E03E5CE2C3C320AB9CB5CC89AF
tools\System.Security.AccessControl.dll
md5: A609E9801C83714435A0BC5DD69D6140 | sha1: 7128CADA2900416EC336D1CCDA6843DFAF774C45 | sha256: 6F4DB849979D87B7CE36D68174439D7BA2EF1F366B13F3CEB966F600D5EE5DBD | sha512: 94C1E9E7C26A9EA07ABCF61EDAD9D1C7676EAD5E8EC03F5E8784E16FA3B51F6358035E2B2CF18135DA200C9F4BAA039F71423250065FCAAC1550EBD5108F6DA4
tools\System.Security.Cryptography.Pkcs.dll
md5: 46A75A0E70D54C58A17E7C905FAEC85A | sha1: 8357CA677AA79419FDC2FB838E38D031C1A0CD6E | sha256: AEA85DC499BE46D43C5B094CC530754A8B1A8EE088A67ADBDB6E5C951EFAC880 | sha512: E0BA8AB5C1F086A56C94B84F44067A2E45AA0CBDB38430E5976D8927C0997AC7397105F4A12594F8C5B56A8505689E002EDAF93BAC57A467F4DE9D13D1156074
tools\System.Security.Cryptography.ProtectedData.dll
md5: D3AD09FBF202167B7E6B5F0E1296380B | sha1: 2C099DB9745C21754B03A4C9AF55213A1A4444F5 | sha256: 81A0385CF1FED22F3153789D4AE1FEE75719F23E72CD543EDBA1AF48926FBF24 | sha512: 0B660A4ACB24D382BBD7058E2A3D21CDD741E7ED0A9D60672B0B667A75E145E229A594D302C78AECB5A729830092BA0117187665F8043A6590F8829D86991395
tools\System.Security.Permissions.dll
md5: 706D8592956EF30E4A23E479E302119C | sha1: 0E9D8F70884D8F90A492F8EF79CB37D02937A136 | sha256: 8CA99B4D76D2708D27040D82D87C9F2BEB26987E283146AEA6BC275D92E895CE | sha512: 40C3CA0A64F74110D3D7374919050A2AEF2C02C105EC44E96DC52FED6C7C82CBE392A070A25602C5813C9913FCB83D8964CBF380DE61E71B4FA958236B6A95D3
tools\System.Security.Principal.Windows.dll
md5: FF931FEFAE3158672308DA5A93C06835 | sha1: 71AFAB4BB492B2BB0C209AC800069E9C8AF2AE37 | sha256: 8FE54076455310A7F1F3F40032F89923822CC449D0FB713CDB2C796D5C90CD49 | sha512: B43C6B7D9DE704DF3365A1DE474D3E4FC2ECD2025A901AB56CCDBE1B8FC5A1A4B3559C1D95C2F2F1AC8E7170F8AE3EC2257C5EF9BC8FA6E796C7774813306737
tools\System.Text.Encoding.CodePages.dll
md5: EFCDF9CA98D00B524CA08FC5821B83E5 | sha1: 179F0591675E2ED4A2FCE4F41A8FED3BC870F054 | sha256: 7ECFDB8C86A2D2BB7505331AD5D797CFDE7C2EDC38CF44E086AFB8417A6B3022 | sha512: 12159748ABBB983FAF40B5B5233894E3734708A48735FE80A524E1414C8E7C64758BA6F8744C9FFD5DDC65B894BC30D587E9C6538587BFE38C118939FF0D40BB
tools\System.Text.Encodings.Web.dll
md5: CC8EC58D65F00F81C9FD4599C0E2D74B | sha1: D59E6886E01F31F56F848A5AA728190F0C27AA49 | sha256: 5E4C15EAD9A7417D1D31707EBB0DB1709C95D5F2D5D9D6D5DDCED5A96D0EBE06 | sha512: 05A4455362EBF7F7C0B90927F6DAD4D226186CC5B30F7B003275F94EA553CD60331E886C8EBE03372BA70647DEC762932E504B3D632647C64AA381B9D3D7D508
tools\tr\Microsoft.CodeAnalysis.CSharp.resources.dll
md5: CFE8DC01479DF5C4CA4216E424516B84 | sha1: AD39A0C46E351AD88AD4C8842C8C8F8BB82FAB47 | sha256: 6FFAA8A27E29F246D01B5773B9185A16E353C2C20DF4E63546E2ECF97CA2D780 | sha512: A5E81B65462C5ED0CEBB7C252C2DB4B509CEB51C385A44BC9C5847D27DB842D5883ADAEC7C17773FF1B5A5785D523F38423D67180860CB7480821C8E434C0A09
tools\tr\Microsoft.CodeAnalysis.resources.dll
md5: F0854B1491BFA72883CE29F00A169D95 | sha1: BFAA56B737D1D5DA5A68B02282D1282812AD95C4 | sha256: C7389DA12A758758372AE3937A2A8DBEF2F3EE0093C4CA458199C7C73818AB82 | sha512: 376C0095CC8F612B52430E09A59D03B705A149F5012706097F3F6332267F5824E7E15003EA844CFDD3032847A12F7CF1D41D0D4C636445878F87E3B26F1BE1D5
tools\UniversalTypeConverter.dll
md5: 398C1123EB0403260083C682F57F3BAD | sha1: CB4606F9CB63041A9F54F1733B199B1BBB2A65AD | sha256: D27ED7443C7A959E74AD6475A06B9301C80B9C701D56AD63410973A6242B1CBA | sha512: 19492A209F362E7521A94F4C5D76ECEFFB92A5A4AB8A8D46E7746A408AAE94BA84D21061B751AEB53610F94543437A85D771484753194AADDDDC8B030FE69A6D
tools\Wyam.Common.dll
md5: F9308CD810FCCA099A9018055C51E0AD | sha1: 99BD13FAE08AD134BEAE023F61CED2341D157202 | sha256: 54ED6DAC1AD4473B0E696784555D10EF8E5E6296623FECCC9E78123173702A39 | sha512: 49341F32335244B0B6759216EE1963BB036D2B58FD6A303423D8518AC10BC0A4D00D3567E1613C0CAFEEAE17905FC1422218BF1066EEB7F2A4B1F2FB1BB0414B
tools\Wyam.Common.pdb
 
tools\Wyam.Common.xml
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Wyam.Common</name>
    </assembly>
    <members>
        <member name="T:Wyam.Common.Caching.Crc32">
            <summary>
            A helper class to quickly calculate CRC32 codes.
            </summary>
            <remarks>
            The implementation was originaly taken from the ASP.NET v5 Razor caching implementation.
            </remarks>
        </member>
        <member name="M:Wyam.Common.Caching.Crc32.Calculate(System.IO.Stream)">
            <summary>
            Calculates a CRC32 code from a stream.
            </summary>
            <param name="stream">The stream.</param>
            <returns>A CRC32.</returns>
        </member>
        <member name="M:Wyam.Common.Caching.Crc32.Calculate(System.String)">
            <summary>
            Calculates a CRC32 code from a string.
            </summary>
            <param name="str">The string.</param>
            <returns>A CRC32.</returns>
        </member>
        <member name="T:Wyam.Common.Caching.IExecutionCache">
            <summary>
            Provides a cache that can be used by modules during execution to persist data
            between engine executions. Cached data is keyed by both a document and an
            optional key string.
            </summary>
        </member>
        <member name="M:Wyam.Common.Caching.IExecutionCache.ContainsKey(Wyam.Common.Documents.IDocument)">
            <summary>
            Checks if the document key is in the cache.
            </summary>
            <param name="document">The document key.</param>
            <returns><c>true</c> if the key is in the cache, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:Wyam.Common.Caching.IExecutionCache.ContainsKey(Wyam.Common.Documents.IDocument,System.String)">
            <summary>
            Checks if the document and string key is in the cache.
            </summary>
            <param name="document">The document key.</param>
            <param name="key">The string key.</param>
            <returns><c>true</c> if the key is in the cache, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:Wyam.Common.Caching.IExecutionCache.ContainsKey(System.String)">
            <summary>
            Checks if the string key is in the cache.
            </summary>
            <param name="key">The string key.</param>
            <returns><c>true</c> if the key is in the cache, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:Wyam.Common.Caching.IExecutionCache.TryGetValue(Wyam.Common.Documents.IDocument,[email protected])">
            <summary>
            Attempts to get a cached value from a document key.
            </summary>
            <param name="document">The document key.</param>
            <param name="value">The cached value.</param>
            <returns><c>true</c> for a cache hit, <c>false</c> for a cache miss.</returns>
        </member>
        <member name="M:Wyam.Common.Caching.IExecutionCache.TryGetValue(Wyam.Common.Documents.IDocument,System.String,[email protected])">
            <summary>
            Attempts to get a cached value from a document and string key.
            </summary>
            <param name="document">The document key.</param>
            <param name="key">The string key.</param>
            <param name="value">The cached value.</param>
            <returns><c>true</c> for a cache hit, <c>false</c> for a cache miss.</returns>
        </member>
        <member name="M:Wyam.Common.Caching.IExecutionCache.TryGetValue(System.String,[email protected])">
            <summary>
            Attempts to get a cached value from a string key.
            </summary>
            <param name="key">The string key.</param>
            <param name="value">The cached value.</param>
            <returns><c>true</c> for a cache hit, <c>false</c> for a cache miss.</returns>
        </member>
        <member name="M:Wyam.Common.Caching.IExecutionCache.TryGetValue``1(Wyam.Common.Documents.IDocument,``[email protected])">
            <summary>
            Attempts to get a typed cached value from a document key.
            </summary>
            <typeparam name="TValue">The type of the cached value.</typeparam>
            <param name="document">The document key.</param>
            <param name="value">The cached value.</param>
            <returns><c>true</c> for a cache hit, <c>false</c> for a cache miss.</returns>
        </member>
        <member name="M:Wyam.Common.Caching.IExecutionCache.TryGetValue``1(Wyam.Common.Documents.IDocument,System.String,``[email protected])">
            <summary>
            Attempts to get a typed cached value from a document and string key.
            </summary>
            <typeparam name="TValue">The type of the cached value.</typeparam>
            <param name="document">The document key.</param>
            <param name="key">The string key.</param>
            <param name="value">The cached value.</param>
            <returns><c>true</c> for a cache hit, <c>false</c> for a cache miss.</returns>
        </member>
        <member name="M:Wyam.Common.Caching.IExecutionCache.TryGetValue``1(System.String,``[email protected])">
            <summary>
            Attempts to get a typed cached value from a string key.
            </summary>
            <typeparam name="TValue">The type of the cached value.</typeparam>
            <param name="key">The string key.</param>
            <param name="value">The cached value.</param>
            <returns><c>true</c> for a cache hit, <c>false</c> for a cache miss.</returns>
        </member>
        <member name="M:Wyam.Common.Caching.IExecutionCache.Set(Wyam.Common.Documents.IDocument,System.Object)">
            <summary>
            Sets a cached value from a document key.
            </summary>
            <param name="document">The document key.</param>
            <param name="value">The cached value.</param>
        </member>
        <member name="M:Wyam.Common.Caching.IExecutionCache.Set(Wyam.Common.Documents.IDocument,System.String,System.Object)">
            <summary>
            Sets a cached value from a document and string key.
            </summary>
            <param name="document">The document key.</param>
            <param name="key">The string key.</param>
            <param name="value">The cached value.</param>
        </member>
        <member name="M:Wyam.Common.Caching.IExecutionCache.Set(System.String,System.Object)">
            <summary>
            Sets a cached value from a document key.
            </summary>
            <param name="key">The string key.</param>
            <param name="value">The cached value.</param>
        </member>
        <member name="T:Wyam.Common.Configuration.ConfigExtensions">
            <summary>
            Extensions for dealing with config delegates.
            </summary>
        </member>
        <member name="M:Wyam.Common.Configuration.ConfigExtensions.Invoke``1(Wyam.Common.Configuration.ContextConfig,Wyam.Common.Execution.IExecutionContext)">
            <summary>
            Invokes the delegate.
            </summary>
            <typeparam name="T">The desired result type.</typeparam>
            <param name="config">The delegate.</param>
            <param name="context">The execution context.</param>
            <returns>A typed result from invoking the delegate.</returns>
        </member>
        <member name="M:Wyam.Common.Configuration.ConfigExtensions.Invoke``1(Wyam.Common.Configuration.ContextConfig,Wyam.Common.Execution.IExecutionContext,System.String)">
            <summary>
            Invokes the delegate with additional information in the exception message if the conversion fails.
            </summary>
            <typeparam name="T">The desired result type.</typeparam>
            <param name="config">The delegate.</param>
            <param name="context">The execution context.</param>
            <param name="errorDetails">A string to add to the exception message should the conversion fail.</param>
            <returns>A typed result from invoking the delegate.</returns>
        </member>
        <member name="M:Wyam.Common.Configuration.ConfigExtensions.TryInvoke``1(Wyam.Common.Configuration.ContextConfig,Wyam.Common.Execution.IExecutionContext)">
            <summary>
            Attempts to invoke the delegate and returns a default value of <typeparamref name="T"/> if the conversion fails.
            </summary>
            <typeparam name="T">The desired result type.</typeparam>
            <param name="config">The delegate.</param>
            <param name="context">The execution context.</param>
            <returns>A typed result from invoking the delegate, or the default value of <typeparamref name="T"/> if the conversion fails.</returns>
        </member>
        <member name="M:Wyam.Common.Configuration.ConfigExtensions.Invoke``1(Wyam.Common.Configuration.DocumentConfig,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <summary>
            Invokes the delegate.
            </summary>
            <typeparam name="T">The desired result type.</typeparam>
            <param name="config">The delegate.</param>
            <param name="document">The document.</param>
            <param name="context">The execution context.</param>
            <returns>A typed result from invoking the delegate.</returns>
        </member>
        <member name="M:Wyam.Common.Configuration.ConfigExtensions.Invoke``1(Wyam.Common.Configuration.DocumentConfig,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext,System.String)">
            <summary>
            Invokes the delegate with additional information in the exception message if the conversion fails.
            </summary>
            <typeparam name="T">The desired result type.</typeparam>
            <param name="config">The delegate.</param>
            <param name="document">The document.</param>
            <param name="context">The execution context.</param>
            <param name="errorDetails">A string to add to the exception message should the conversion fail.</param>
            <returns>A typed result from invoking the delegate.</returns>
        </member>
        <member name="M:Wyam.Common.Configuration.ConfigExtensions.TryInvoke``1(Wyam.Common.Configuration.DocumentConfig,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <summary>
            Attempts to invoke the delegate and returns a default value of <typeparamref name="T"/> if the conversion fails.
            </summary>
            <typeparam name="T">The desired result type.</typeparam>
            <param name="config">The delegate.</param>
            <param name="document">The document.</param>
            <param name="context">The execution context.</param>
            <returns>A typed result from invoking the delegate, or the default value of <typeparamref name="T"/> if the conversion fails.</returns>
        </member>
        <member name="T:Wyam.Common.Configuration.ConfigHelper`1">
            <summary>
            This class satisfies a common use case for modules where you need to get some configuration value
            either directly, from a delegate at the module level, or from a delegate at a per-document level
            and the user should be able to specify any of these possibilities (typically via module constructor
            overloads).
            </summary>
            <typeparam name="T">The type of the value you want to eventually convert to.</typeparam>
        </member>
        <member name="M:Wyam.Common.Configuration.ConfigHelper`1.#ctor(`0)">
            <summary>
            Creates a new helper with the specified value.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:Wyam.Common.Configuration.ConfigHelper`1.#ctor(Wyam.Common.Configuration.ContextConfig,`0)">
            <summary>
            Creates a new helper with the specified delegate.
            </summary>
            <param name="config">The delegate.</param>
            <param name="defaultValue">A default value to use if the delegate is null.</param>
        </member>
        <member name="M:Wyam.Common.Configuration.ConfigHelper`1.#ctor(Wyam.Common.Configuration.DocumentConfig,`0)">
            <summary>
            Creates a new helper with the specified delegate.
            </summary>
            <param name="config">The delegate.</param>
            <param name="defaultValue">A default value to use if the delegate is null.</param>
        </member>
        <member name="M:Wyam.Common.Configuration.ConfigHelper`1.GetValue(Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext,System.Func{`0,`0})">
            <summary>
            Call this each time you need the value, passing in a post-processing function if required.
            If no document delegate is specified, then this will get and cache the value on first request.
            </summary>
            <param name="document">The document.</param>
            <param name="context">The execution context.</param>
            <param name="postProcessing">An optional post-processing function.</param>
            <returns>The result value.</returns>
        </member>
        <member name="T:Wyam.Common.Configuration.ContextConfig">
            <summary>
            A delegate that uses the execution context.
            </summary>
            <param name="ctx">The execution context.</param>
            <returns>A result object.</returns>
        </member>
        <member name="T:Wyam.Common.Configuration.DocumentConfig">
            <summary>
            A delegate that uses a document and the execution context.
            </summary>
            <param name="doc">The document.</param>
            <param name="ctx">The execution context.</param>
            <returns>A result object.</returns>
        </member>
        <member name="T:Wyam.Common.Configuration.INamespacesCollection">
            <summary>
            A collection of namespace strings used to inform modules of which namespaces
            should be available during dynamic code generation and/or execution.
            </summary>
        </member>
        <member name="M:Wyam.Common.Configuration.INamespacesCollection.Add(System.String)">
            <summary>
            Adds a namespace to the collection.
            </summary>
            <param name="ns">The namespace to add.</param>
            <returns><c>true</c> if the namespace was already in the collection, otherwise <c>false</c>.</returns>
        </member>
        <member name="M:Wyam.Common.Configuration.INamespacesCollection.AddRange(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Adds a range of namespaces to the collection.
            </summary>
            <param name="namespaces">The namespaces to add.</param>
        </member>
        <member name="T:Wyam.Common.Configuration.IRawAssemblyCollection">
            <summary>
            A collection of raw assembly bytes for dynamically
            compiled assemblies such as the configuration script.
            </summary>
        </member>
        <member name="M:Wyam.Common.Configuration.IRawAssemblyCollection.Add(System.Byte[])">
            <summary>
            Adds a raw assembly to the collection.
            </summary>
            <param name="rawAssembly">The bytes of the assembly to add.</param>
        </member>
        <member name="T:Wyam.Common.Configuration.IReadOnlySettings">
            <summary>
            Settings that can be globally set.
            </summary>
        </member>
        <member name="T:Wyam.Common.Configuration.IRecipe">
            <summary>
            A recipe configures a <see cref="T:Wyam.Common.Execution.IEngine"/> in a predefined way using code.
            Recipes should have an empty default constructor and shouldn't maintain
            any state.
            </summary>
        </member>
        <member name="M:Wyam.Common.Configuration.IRecipe.Apply(Wyam.Common.Execution.IEngine)">
            <summary>
            Applies the recipe to the engine.
            </summary>
            <param name="engine">The engine.</param>
        </member>
        <member name="M:Wyam.Common.Configuration.IRecipe.Scaffold(Wyam.Common.IO.IFile,Wyam.Common.IO.IDirectory)">
            <summary>
            Scaffolds an example for the recipe in the specified directory.
            </summary>
            <param name="configFile">
            The configuration file or <c>null</c> if the user
            chose not to overwrite an existing configuration file. An existing configuration file
            will not be automatically deleted, nor will a new configuration file be automatically
            created. If new configuration file content needs to be written,
            it's up to the recipe to create it or delete the existing file.
            </param>
            <param name="inputDirectory">The directory to place the example in.</param>
        </member>
        <member name="T:Wyam.Common.Configuration.ISettings">
            <summary>
            Stores global settings that control behavior and execution.
            </summary>
            <metadata cref="F:Wyam.Common.Meta.Keys.Host" usage="Setting" />
            <metadata cref="F:Wyam.Common.Meta.Keys.LinksUseHttps" usage="Setting" />
            <metadata cref="F:Wyam.Common.Meta.Keys.LinkRoot" usage="Setting" />
            <metadata cref="F:Wyam.Common.Meta.Keys.LinkHideIndexPages" usage="Setting" />
            <metadata cref="F:Wyam.Common.Meta.Keys.LinkHideExtensions" usage="Setting" />
            <metadata cref="F:Wyam.Common.Meta.Keys.UseCache" usage="Setting" />
            <metadata cref="F:Wyam.Common.Meta.Keys.CleanOutputPath" usage="Setting" />
            <metadata cref="F:Wyam.Common.Meta.Keys.DateTimeInputCulture" usage="Setting" />
            <metadata cref="F:Wyam.Common.Meta.Keys.DateTimeDisplayCulture" usage="Setting" />
        </member>
        <member name="T:Wyam.Common.Configuration.Recipe">
            <summary>
            A utility class that can be used as the base for recipes. It is not necessary to
            derive from this class to create a recipe, implementing <see cref="T:Wyam.Common.Configuration.IRecipe"/> is
            sufficient. However, this class does provide some helpful functionality such as
            using reflection to automatically iterate and add all <see cref="T:Wyam.Common.Execution.Pipeline"/>
            static properties.
            </summary>
        </member>
        <member name="M:Wyam.Common.Configuration.Recipe.Apply(Wyam.Common.Execution.IEngine)">
            <summary>
            This will reflect over all static <see cref="T:Wyam.Common.Execution.Pipeline"/> properties in the
            derived class and will add their modules as pipelines to the engine. This operation
            depends on <see cref="T:Wyam.Common.Util.SourceInfoAttribute"/> having been applied to all the properties
            in order to ensure proper ordering.
            </summary>
            <param name="engine">The engine.</param>
        </member>
        <member name="M:Wyam.Common.Configuration.Recipe.Scaffold(Wyam.Common.IO.IFile,Wyam.Common.IO.IDirectory)">
            <inheritdoc/>
        </member>
        <member name="T:Wyam.Common.Documents.CollectionExtensions">
            <summary>
            Extensions for working with specific types of collections.
            </summary>
        </member>
        <member name="M:Wyam.Common.Documents.CollectionExtensions.WhereContainsKey(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String)">
            <summary>
            Returns all documents that contain the specified metadata key.
            </summary>
            <param name="documents">The documents.</param>
            <param name="metadataKey">The key.</param>
            <returns>All documents that contain the specified metadata key.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.CollectionExtensions.WhereContainsAllKeys(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String[])">
            <summary>
            Returns all documents that contain all of the specified metadata keys.
            </summary>
            <param name="documents">The documents.</param>
            <param name="metadataKeys">The metadata keys.</param>
            <returns>All documents that contain all of the specified metadata keys.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.CollectionExtensions.WhereContainsAnyKeys(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String[])">
            <summary>
            Returns all documents that contain any of the specified metadata keys.
            </summary>
            <param name="documents">The documents.</param>
            <param name="metadataKeys">The metadata keys.</param>
            <returns>All documents that contain any of the specified metadata keys.</returns>
        </member>
        <member name="T:Wyam.Common.Documents.FileContentStream">
            <summary>
            This creates a file stream that deletes the underlying file on dispose.
            </summary>
        </member>
        <member name="T:Wyam.Common.Documents.FileContentStreamFactory">
            <summary>
            Provides content streams that are backed by a file in the file system. This
            trades performance (disk I/O is considerably slower than memory) for a
            reduced memory footprint.
            </summary>
        </member>
        <member name="M:Wyam.Common.Documents.FileContentStreamFactory.GetStream(Wyam.Common.Execution.IExecutionContext,System.String)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Common.Documents.GroupByExtensions">
            <summary>
            Extensions grouping document sequences.
            </summary>
        </member>
        <member name="M:Wyam.Common.Documents.GroupByExtensions.GroupBy``1(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String)">
            <summary>
            Groups the elements of a sequence of documents using the values of a specified metadata key.
            If a document does not contain the specified metadata key, it is not included in the result set.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.GroupByExtensions.GroupBy``1(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.Collections.Generic.IEqualityComparer{``0})">
            <summary>
            Groups the elements of a sequence of documents and the values of a specified metadata key
            and compares the keys by using a specified comparer.
            If a document does not contain the specified metadata key, it is not included in the result set.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="comparer">The comparer.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.GroupByExtensions.GroupBy``2(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.String)">
            <summary>
            Groups the elements of a sequence of documents and the values of a specified metadata key
            using the value of the specified element metadata for the elements of the group.
            If a document does not contain the specified key or element metadata keys, it is not included in the result set.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="elementMetadataKey">The element metadata key.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.GroupByExtensions.GroupBy``2(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.String,System.Collections.Generic.IEqualityComparer{``0})">
            <summary>
            Groups the elements of a sequence of documents and the values of a specified metadata key
            using the value of the specified element metadata for the elements of the group
            and compares the keys by using a specified comparer.
            If a document does not contain the specified key or element metadata keys, it is not included in the result set.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="elementMetadataKey">The element metadata key.</param>
            <param name="comparer">The comparer.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.GroupByExtensions.GroupByMany``1(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String)">
            <summary>
            Groups the elements of a sequence of documents according to a specified metadata key
            that contains a sequence of keys.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.GroupByExtensions.GroupByMany``1(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.Collections.Generic.IEqualityComparer{``0})">
            <summary>
            Groups the elements of a sequence of documents according to a specified metadata key
            that contains a sequence of keys
            and compares the keys by using a specified comparer.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="comparer">The comparer.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.GroupByExtensions.GroupByMany``2(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.String)">
            <summary>
            Groups the elements of a sequence of documents according to a specified metadata key
            that contains a sequence of keys
            and gets the elements for each group by using a specified metadata key.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="elementMetadataKey">The element metadata key.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.GroupByExtensions.GroupByMany``2(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.String,System.Collections.Generic.IEqualityComparer{``0})">
            <summary>
            Groups the elements of a sequence of documents according to a specified metadata key
            that contains a sequence of keys.
            The keys are compared by using a comparer and each group's elements
            are obtained by using a specified metadata key.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="elementMetadataKey">The element metadata key.</param>
            <param name="comparer">The comparer.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.GroupByExtensions.GroupByManyToMany``2(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.String)">
            <summary>
            Groups the elements of a sequence of documents according to a specified metadata key
            that contains a sequence of keys
            and gets the elements for each group by using a specified metadata key.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="elementMetadataKey">The element metadata key.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.GroupByExtensions.GroupByManyToMany``2(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.String,System.Collections.Generic.IEqualityComparer{``0})">
            <summary>
            Groups the elements of a sequence of documents according to a specified metadata key
            that contains a sequence of keys.
            The keys are compared by using a comparer and each group's elements
            are obtained by using a specified metadata key.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="elementMetadataKey">The element metadata key.</param>
            <param name="comparer">The comparer.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="T:Wyam.Common.Documents.IContentStreamFactory">
            <summary>
            Provides streams to use for document content.
            </summary>
        </member>
        <member name="M:Wyam.Common.Documents.IContentStreamFactory.GetStream(Wyam.Common.Execution.IExecutionContext,System.String)">
            <summary>
            Gets a <see cref="T:System.IO.Stream"/> that can be used for document content. If <paramref name="content"/>
            is not null, the stream is initialized with the specified content.
            <remarks>The position should be set to the beginning of the stream when returned.</remarks>
            </summary>
            <param name="context">The current execution context.</param>
            <param name="content">Content to initialize the stream with.</param>
            <returns>A stream for document content.</returns>
        </member>
        <member name="T:Wyam.Common.Documents.IDocument">
            <summary>
            Contains content and metadata for each item as it propagates through the pipeline.
            </summary>
            <remarks>
            Documents are immutable so you must call one of the <c>GetDocument</c> methods of <see cref="T:Wyam.Common.Documents.IDocumentFactory"/>
            to create a new document. Implements <see cref="T:Wyam.Common.Meta.IMetadata"/> and all metadata calls are passed through
            to the document's internal <see cref="T:Wyam.Common.Meta.IMetadata"/> instance (exposed via the <see cref="P:Wyam.Common.Documents.IDocument.Metadata"/>
            property). Note that both the <see cref="P:Wyam.Common.Documents.IDocument.Content"/> property and the result of the <see cref="M:Wyam.Common.Documents.IDocument.GetStream"/>
            method are guaranteed not to be null. When a document is created, either a string or a <see cref="T:System.IO.Stream"/>
            is provided. Whenever the other of the two is requested, the system will convert the current representation
            for you.
            </remarks>
        </member>
        <member name="P:Wyam.Common.Documents.IDocument.Source">
            <summary>An identifier for the document meant to reflect the source of the data. These should be unique (such as a file name).</summary>
            <value>The source of the document, or <c>null</c> if the document doesn't have a source.</value>
        </member>
        <member name="M:Wyam.Common.Documents.IDocument.SourceString">
            <summary>
            Gets a string representation of the source that's guaranteed non-null, used primarily for trace messages.
            </summary>
            <returns>A string representation of the source.</returns>
        </member>
        <member name="P:Wyam.Common.Documents.IDocument.Id">
            <summary>An identifier that is generated when the document is created and stays the same after cloning.</summary>
            <value>The identifier.</value>
        </member>
        <member name="P:Wyam.Common.Documents.IDocument.Metadata">
            <summary>Gets the metadata associated with this document.</summary>
            <value>The metadata associated with this document.</value>
        </member>
        <member name="P:Wyam.Common.Documents.IDocument.Content">
            <summary>Gets the content associated with this document as a string. This will result in reading the entire content stream.</summary>
            <value>The content associated with this document.</value>
        </member>
        <member name="M:Wyam.Common.Documents.IDocument.GetStream">
            <summary>
            Gets the content associated with this document as a <see cref="T:System.IO.Stream"/>.
            The underlying stream will be reset to position 0 each time this method is called.
            The stream you get from this call must be disposed as soon as reading is complete.
            Other threads will block on this call until the previously returned stream is disposed.
            </summary>
            <returns>A <see cref="T:System.IO.Stream"/> of the content associated with this document.</returns>
        </member>
        <member name="P:Wyam.Common.Documents.IDocument.WithoutSettings">
            <summary>
            Gets the metadata for this document without any global settings included.
            </summary>
            <returns>The document metadata without global settings.</returns>
        </member>
        <member name="T:Wyam.Common.Documents.IDocumentCollection">
            <summary>
            Contains a collection of documents output by each pipeline.
            The documents are populated for each pipeline as it is
            executed and will contain the most recent set of document
            outputs for the most recently executed module, even if the
            pipeline is not complete.
            </summary>
        </member>
        <member name="M:Wyam.Common.Documents.IDocumentCollection.ByPipeline">
            <summary>
            Gets documents by pipeline.
            </summary>
            <returns>All documents output by each pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.IDocumentCollection.FromPipeline(System.String)">
            <summary>
            Gets documents from a specific pipeline.
            </summary>
            <param name="pipeline">The pipeline.</param>
            <returns>The documents output by the specified pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.IDocumentCollection.ExceptPipeline(System.String)">
            <summary>
            Gets all documents output by every pipeline except those from the specified pipeline.
            </summary>
            <param name="pipeline">The pipeline.</param>
            <returns>All documents output by every pipeline except the specified one.</returns>
        </member>
        <member name="P:Wyam.Common.Documents.IDocumentCollection.Item(System.String)">
            <summary>
            Gets documents from a specific pipeline.
            </summary>
            <value>
            The documents output by the specified pipeline..
            </value>
            <param name="pipline">The pipeline.</param>
            <returns>The documents output by the specified pipeline.</returns>
        </member>
        <member name="T:Wyam.Common.Documents.IDocumentFactory">
            <summary>
            Responsible for creating new document instances.
            </summary>
        </member>
        <member name="M:Wyam.Common.Documents.IDocumentFactory.GetDocument(Wyam.Common.Execution.IExecutionContext)">
            <summary>
            Gets a new document with default initial metadata.
            </summary>
            <param name="context">The current execution context.</param>
            <returns>The new document.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.IDocumentFactory.GetDocument(Wyam.Common.Execution.IExecutionContext,Wyam.Common.Documents.IDocument,Wyam.Common.IO.FilePath,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}})">
            <summary>
            Clones the specified source document with a new source and additional metadata (all existing metadata is retained)
            or gets a new document if the source document is null or <c>AsNewDocuments()</c> was called on the module.
            </summary>
            <param name="context">The current execution context.</param>
            <param name="sourceDocument">The source document.</param>
            <param name="source">The source (if the source document contains a source, then this is ignored and the source document's source is used instead).</param>
            <param name="items">The metadata items.</param>
            <returns>The cloned or new document.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.IDocumentFactory.GetDocument(Wyam.Common.Execution.IExecutionContext,Wyam.Common.Documents.IDocument,Wyam.Common.IO.FilePath,System.IO.Stream,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}},System.Boolean)">
            <summary>
            Clones the specified source document with a new source, new content stream, and additional metadata (all existing metadata is retained)
            or gets a new document if the source document is null or <c>AsNewDocuments()</c> was called on the module.
            If <paramref name="disposeStream"/> is true (which it is by default), the provided
            <see cref="T:System.IO.Stream"/> will automatically be disposed when the document is disposed (I.e., the
            document takes ownership of the <see cref="T:System.IO.Stream"/>).
            </summary>
            <param name="context">The current execution context.</param>
            <param name="sourceDocument">The source document.</param>
            <param name="source">The source (if the source document contains a source, then this is ignored and the source document's source is used instead).</param>
            <param name="stream">The content stream.</param>
            <param name="items">The metadata items.</param>
            <param name="disposeStream">If set to <c>true</c> the provided <see cref="T:System.IO.Stream"/> is disposed when the document is.</param>
            <returns>The cloned or new document.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.IDocumentFactory.GetDocument(Wyam.Common.Execution.IExecutionContext,Wyam.Common.Documents.IDocument,System.IO.Stream,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}},System.Boolean)">
            <summary>
            Clones the specified source document with a new content stream, and additional metadata (all existing metadata is retained)
            or gets a new document if the source document is null or <c>AsNewDocuments()</c> was called on the module.
            If <paramref name="disposeStream"/> is true (which it is by default), the provided
            <see cref="T:System.IO.Stream"/> will automatically be disposed when the document is disposed (I.e., the
            document takes ownership of the <see cref="T:System.IO.Stream"/>).
            </summary>
            <param name="context">The current execution context.</param>
            <param name="sourceDocument">The source document.</param>
            <param name="stream">The content stream.</param>
            <param name="items">The metadata items.</param>
            <param name="disposeStream">If set to <c>true</c> the provided <see cref="T:System.IO.Stream"/> is disposed when the document is.</param>
            <returns>The cloned or new document.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.IDocumentFactory.GetDocument(Wyam.Common.Execution.IExecutionContext,Wyam.Common.Documents.IDocument,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}})">
            <summary>
            Clones the specified source document with identical content and additional metadata (all existing metadata is retained)
            or gets a new document if the source document is null or <c>AsNewDocuments()</c> was called on the module.
            </summary>
            <param name="context">The current execution context.</param>
            <param name="sourceDocument">The source document.</param>
            <param name="items">The metadata items.</param>
            <returns>The cloned or new document.</returns>
        </member>
        <member name="T:Wyam.Common.Documents.MemoryContentStreamFactory">
            <summary>
            Provides content streams that are stored in memory without pooling. This trades better performance
            for increased memory usage.
            </summary>
        </member>
        <member name="M:Wyam.Common.Documents.MemoryContentStreamFactory.GetStream(Wyam.Common.Execution.IExecutionContext,System.String)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Common.Documents.ToLookupExtensions">
            <summary>
            Extensions for creating lookups from document sequences.
            </summary>
        </member>
        <member name="M:Wyam.Common.Documents.ToLookupExtensions.ToLookup``1(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String)">
            <summary>
            Creates a lookup from a sequence of documents using the values of a specified metadata key.
            If a document does not contain the specified metadata key, it is not included in the result set.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.ToLookupExtensions.ToLookup``1(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.Collections.Generic.IEqualityComparer{``0})">
            <summary>
            Creates a lookup from a sequence of documents and the values of a specified metadata key
            and compares the keys by using a specified comparer.
            If a document does not contain the specified metadata key, it is not included in the result set.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="comparer">The comparer.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.ToLookupExtensions.ToLookup``2(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.String)">
            <summary>
            Creates a lookup from a sequence of documents and the values of a specified metadata key
            using the value of the specified element metadata for the elements of the lookup.
            If a document does not contain the specified key or element metadata keys, it is not included in the result set.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="elementMetadataKey">The element metadata key.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.ToLookupExtensions.ToLookup``2(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.String,System.Collections.Generic.IEqualityComparer{``0})">
            <summary>
            Creates a lookup from a sequence of documents and the values of a specified metadata key
            using the value of the specified element metadata for the elements of the lookup
            and compares the keys by using a specified comparer.
            If a document does not contain the specified key or element metadata keys, it is not included in the result set.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="elementMetadataKey">The element metadata key.</param>
            <param name="comparer">The comparer.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.ToLookupExtensions.ToLookupMany``1(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String)">
            <summary>
            Creates a lookup from a sequence of documents according to a specified metadata key
            that contains a sequence of keys.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.ToLookupExtensions.ToLookupMany``1(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.Collections.Generic.IEqualityComparer{``0})">
            <summary>
            Creates a lookup from a sequence of documents according to a specified metadata key
            that contains a sequence of keys
            and compares the keys by using a specified comparer.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="comparer">The comparer.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.ToLookupExtensions.ToLookupMany``2(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.String)">
            <summary>
            Creates a lookup from a sequence of documents according to a specified metadata key
            that contains a sequence of keys
            and gets the elements for each group by using a specified metadata key.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="elementMetadataKey">The element metadata key.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.ToLookupExtensions.ToLookupMany``2(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.String,System.Collections.Generic.IEqualityComparer{``0})">
            <summary>
            Creates a lookup from a sequence of documents according to a specified metadata key
            that contains a sequence of keys.
            The keys are compared by using a comparer and each group's elements
            are obtained by using a specified metadata key.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="elementMetadataKey">The element metadata key.</param>
            <param name="comparer">The comparer.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.ToLookupExtensions.ToLookupManyToMany``2(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.String)">
            <summary>
            Creates a lookup from a sequence of documents according to a specified metadata key
            that contains a sequence of keys
            and gets the elements for each group by using a specified metadata key.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="elementMetadataKey">The element metadata key.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="M:Wyam.Common.Documents.ToLookupExtensions.ToLookupManyToMany``2(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.String,System.String,System.Collections.Generic.IEqualityComparer{``0})">
            <summary>
            Creates a lookup from a sequence of documents according to a specified metadata key
            that contains a sequence of keys.
            The keys are compared by using a comparer and each group's elements
            are obtained by using a specified metadata key.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="documents">The documents.</param>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="elementMetadataKey">The element metadata key.</param>
            <param name="comparer">The comparer.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="T:Wyam.Common.Execution.DateTimeCultureExtensions">
            <summary>
            Extensions for working with input and output date cultures.
            </summary>
        </member>
        <member name="M:Wyam.Common.Execution.DateTimeCultureExtensions.TryParseInputDateTime(Wyam.Common.Execution.IExecutionContext,System.String,[email protected])">
            <summary>
            Attempts to parse and input date using the input date culture setting.
            </summary>
            <param name="context">The execution context.</param>
            <param name="s">The string to parse.</param>
            <param name="result">The resulting <see cref="T:System.DateTime"/> instance.</param>
            <returns><c>true</c> if the input string could be parsed, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.DateTimeCultureExtensions.GetDateTimeInputCulture(Wyam.Common.Execution.IExecutionContext)">
            <summary>
            Gets the <see cref="T:System.Globalization.CultureInfo"/> for the date input culture.
            </summary>
            <param name="context">The execution context.</param>
            <returns>The date input culture.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.DateTimeCultureExtensions.ToShortDateString(System.DateTime,Wyam.Common.Execution.IExecutionContext,System.String)">
            <summary>
            Gets a short date display string using the date display culture setting.
            </summary>
            <param name="dateTime">The <see cref="T:System.DateTime"/> to generate a string for.</param>
            <param name="context">The execution context.</param>
            <param name="targetCulture">The culture that should be used if the date display setting isn't provided. If the
            current culture is of the same family, then it will be used. If not, the specified target culture will be used.</param>
            <returns>A short date display string.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.DateTimeCultureExtensions.ToLongDateString(System.DateTime,Wyam.Common.Execution.IExecutionContext,System.String)">
            <summary>
            Gets a long date display string using the date display culture setting.
            </summary>
            <param name="dateTime">The <see cref="T:System.DateTime"/> to generate a string for.</param>
            <param name="context">The execution context.</param>
            <param name="targetCulture">The culture that should be used if the date display setting isn't provided. If the
            current culture is of the same family, then it will be used. If not, the specified target culture will be used.</param>
            <returns>A long date display string.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.DateTimeCultureExtensions.GetDateTimeDisplayCulture(Wyam.Common.Execution.IExecutionContext,System.String)">
            <summary>
            Gets the <see cref="T:System.Globalization.CultureInfo"/> for the date display culture.
            </summary>
            <param name="context">The execution context.</param>
            <param name="targetCulture">The culture that should be used if the date display setting isn't provided. If the
            current culture is of the same family, then it will be used. If not, the specified target culture will be used.</param>
            <returns>The date display culture.</returns>
        </member>
        <member name="T:Wyam.Common.Execution.IEngine">
            <summary>
            The engine is the primary entry point for the generation process.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IEngine.FileSystem">
            <summary>
            Gets the file system.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IEngine.Settings">
            <summary>
            Gets the settings.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IEngine.Pipelines">
            <summary>
            Gets the pipelines.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IEngine.Shortcodes">
            <summary>
            Gets the shortcodes.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IEngine.Documents">
            <summary>
            Gets the documents.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IEngine.Namespaces">
            <summary>
            Gets the namespaces that should be brought in scope by modules that support dynamic compilation.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IEngine.DynamicAssemblies">
            <summary>
            Gets a collection of all the raw assemblies that should be referenced by modules
            that support dynamic compilation (such as configuration assemblies).
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IEngine.ApplicationInput">
            <summary>
            Gets or sets the application input.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IEngine.DocumentFactory">
            <summary>
            Gets or sets the document factory.
            </summary>
        </member>
        <member name="T:Wyam.Common.Execution.IExecutionContext">
            <summary>
            All of the information that represents a given build. Also implements
            <see cref="T:Wyam.Common.Meta.IMetadata"/> to expose the global metadata.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IExecutionContext.ExecutionId">
            <summary>
            Uniquly identifies the current execution cycle. This can be used to initialize and/or
            reset static data for a module on new generations (I.e., due to watching).
            For example, cache data could be cleared when this changes between runs.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IExecutionContext.DynamicAssemblies">
            <summary>
            Gets the raw bytes for dynamically compiled assemblies (such as the configuration script).
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IExecutionContext.Namespaces">
            <summary>
            Gets a set of namespaces that should be brought into scope for modules that perform dynamic compilation.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IExecutionContext.Pipeline">
            <summary>
            Gets the currently executing pipeline.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IExecutionContext.Module">
            <summary>
            Gets the currently executing module.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IExecutionContext.ExecutionCache">
            <summary>
            Gets the current execution cache. Modules can use the cache to store data between executions.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IExecutionContext.FileSystem">
            <summary>
            Gets the current file system.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IExecutionContext.Settings">
            <summary>
            Gets the current settings metadata.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IExecutionContext.Shortcodes">
            <summary>
            Gets the available shortcodes.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IExecutionContext.Documents">
            <summary>
            Gets the collection of all previously processed documents.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IExecutionContext.ApplicationInput">
            <summary>
            Gets any input that was passed to the application (for example, on stdin via piping).
            </summary>
            <value>
            The application input.
            </value>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.GetContentStream(System.String)">
            <summary>
            Gets a <see cref="T:System.IO.Stream"/> that can be used for document content. If <paramref name="content"/>
            is not null, the stream is initialized with the specified content. It is prefered to use
            this method to obtain a stream over creating your own if the source of the content does
            not already provide one. The returned streams are optimized for memory usage and performance.
            <remarks>The position is set to the beginning of the stream when returned.</remarks>
            </summary>
            <param name="content">Content to initialize the stream with.</param>
            <returns>A stream for document content.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.CreateHttpClient">
            <summary>
            Creates a <see cref="T:System.Net.Http.HttpClient"/> instance that should be used for all HTTP communication.
            </summary>
            <returns>A new <see cref="T:System.Net.Http.HttpClient"/> instance.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.CreateHttpClient(System.Net.Http.HttpMessageHandler)">
            <summary>
            Creates a new <see cref="T:System.Net.Http.HttpClient"/> instance that uses a custom message handler.
            </summary>
            <param name="handler">The message handler to use for this client.</param>
            <returns>A new <see cref="T:System.Net.Http.HttpClient"/> instance.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.GetDocument">
            <summary>
            Gets a new document with default initial metadata.
            </summary>
            <returns>The new document.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.GetDocument(Wyam.Common.IO.FilePath,System.IO.Stream,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}},System.Boolean)">
            <summary>
            Gets a new document with the specified source, content stream, and metadata (in addition to the default initial metadata).
            If <paramref name="disposeStream"/> is true (which it is by default), the provided
            <see cref="T:System.IO.Stream"/> will automatically be disposed when the document is disposed (I.e., the
            document takes ownership of the <see cref="T:System.IO.Stream"/>).
            </summary>
            <param name="source">The source.</param>
            <param name="stream">The content stream.</param>
            <param name="items">The metadata items.</param>
            <param name="disposeStream">If set to <c>true</c> the provided <see cref="T:System.IO.Stream"/> is disposed when the document is.</param>
            <returns>The new document.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.GetDocument(Wyam.Common.IO.FilePath,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}})">
            <summary>
            Gets a new document with the specified source and metadata (in addition to the default initial metadata).
            </summary>
            <param name="source">The source.</param>
            <param name="items">The metadata items.</param>
            <returns>The new document.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.GetDocument(System.IO.Stream,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}},System.Boolean)">
            <summary>
            Gets a new document with the specified content stream and metadata (in addition to the default initial metadata).
            If <paramref name="disposeStream"/> is true (which it is by default), the provided
            <see cref="T:System.IO.Stream"/> will automatically be disposed when the document is disposed (I.e., the
            document takes ownership of the <see cref="T:System.IO.Stream"/>).
            </summary>
            <param name="stream">The content stream.</param>
            <param name="items">The metadata items.</param>
            <param name="disposeStream">If set to <c>true</c> the provided <see cref="T:System.IO.Stream"/> is disposed when the document is.</param>
            <returns>The new document.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.GetDocument(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}})">
            <summary>
            Gets a new document with the specified metadata (in addition to the default initial metadata).
            </summary>
            <param name="items">The metadata items.</param>
            <returns>The new document.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.GetDocument(Wyam.Common.Documents.IDocument,Wyam.Common.IO.FilePath,System.IO.Stream,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}},System.Boolean)">
            <summary>
            Clones the specified source document with a new source, new content stream, and additional metadata (all existing metadata is retained)
            or gets a new document if the source document is null or <c>AsNewDocuments()</c> was called on the module.
            If <paramref name="disposeStream"/> is true (which it is by default), the provided
            <see cref="T:System.IO.Stream"/> will automatically be disposed when the document is disposed (I.e., the
            document takes ownership of the <see cref="T:System.IO.Stream"/>).
            </summary>
            <param name="sourceDocument">The source document.</param>
            <param name="source">The source (if the source document contains a source, then this is ignored and the source document's source is used instead).</param>
            <param name="stream">The content stream.</param>
            <param name="items">The metadata items.</param>
            <param name="disposeStream">If set to <c>true</c> the provided <see cref="T:System.IO.Stream"/> is disposed when the document is.</param>
            <returns>The cloned or new document.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.GetDocument(Wyam.Common.Documents.IDocument,System.IO.Stream,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}},System.Boolean)">
            <summary>
            Clones the specified source document with a new content stream, and additional metadata (all existing metadata is retained)
            or gets a new document if the source document is null or <c>AsNewDocuments()</c> was called on the module.
            If <paramref name="disposeStream"/> is true (which it is by default), the provided
            <see cref="T:System.IO.Stream"/> will automatically be disposed when the document is disposed (I.e., the
            document takes ownership of the <see cref="T:System.IO.Stream"/>).
            </summary>
            <param name="sourceDocument">The source document.</param>
            <param name="stream">The content stream.</param>
            <param name="items">The metadata items.</param>
            <param name="disposeStream">If set to <c>true</c> the provided <see cref="T:System.IO.Stream"/> is disposed when the document is.</param>
            <returns>The cloned or new document.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.GetDocument(Wyam.Common.Documents.IDocument,Wyam.Common.IO.FilePath,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}})">
            <summary>
            Clones the specified source document with a new source and additional metadata (all existing metadata is retained)
            or gets a new document if the source document is null or <c>AsNewDocuments()</c> was called on the module.
            </summary>
            <param name="sourceDocument">The source document.</param>
            <param name="source">The source (if the source document contains a source, then this is ignored and the source document's source is used instead).</param>
            <param name="items">The metadata items.</param>
            <returns>The cloned or new document.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.GetDocument(Wyam.Common.Documents.IDocument,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}})">
            <summary>
            Clones the specified source document with identical content and additional metadata (all existing metadata is retained)
            or gets a new document if the source document is null or <c>AsNewDocuments()</c> was called on the module.
            </summary>
            <param name="sourceDocument">The source document.</param>
            <param name="items">The metadata items.</param>
            <returns>The cloned or new document.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.TryConvert``1(System.Object,``[email protected])">
            <summary>
            Provides access to the same enhanced type conversion used to convert metadata types.
            </summary>
            <typeparam name="T">The destination type.</typeparam>
            <param name="value">The value to convert.</param>
            <param name="result">The result of the conversion.</param>
            <returns><c>true</c> if the conversion could be completed, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.Execute(System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule},System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument})">
            <summary>
            Executes the specified modules with the specified input documents and returns the result documents.
            </summary>
            <param name="modules">The modules to execute.</param>
            <param name="inputs">The input documents.</param>
            <returns>The result documents from the executed modules.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.Execute(System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule},System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}})">
            <summary>
            Executes the specified modules with an empty initial input document with optional additional metadata and returns the result documents.
            </summary>
            <param name="modules">The modules to execute.</param>
            <param name="metadata">The metadata to use.</param>
            <returns>The result documents from the executed modules.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.Execute(System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule},System.Collections.Generic.IEnumerable{Wyam.Common.Meta.MetadataItem})">
            <summary>
            Executes the specified modules with an empty initial input document with optional additional metadata and returns the result documents.
            </summary>
            <param name="modules">The modules to execute.</param>
            <param name="metadata">The metadata to use.</param>
            <returns>The result documents from the executed modules.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.GetJavaScriptEnginePool(System.Action{Wyam.Common.JavaScript.IJavaScriptEngine},System.Int32,System.Int32,System.Int32,System.Nullable{System.TimeSpan})">
            <summary>
            Gets a new <see cref="T:Wyam.Common.JavaScript.IJavaScriptEnginePool"/>. The returned engine pool should be disposed
            when no longer needed.
            </summary>
            <param name="initializer">
            The code to run when a new engine is created. This should configure
            the environment and set up any required JavaScript libraries.
            </param>
            <param name="startEngines">The number of engines to initially start when a pool is created.</param>
            <param name="maxEngines">The maximum number of engines that will be created in the pool.</param>
            <param name="maxUsagesPerEngine">The maximum number of times an engine can be reused before it is disposed.</param>
            <param name="engineTimeout">
            The default timeout to use when acquiring an engine from the pool (defaults to 5 seconds).
            If an engine can not be acquired in this timeframe, an exception will be thrown.
            </param>
            <returns>A new JavaScript engine pool.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.GetShortcodeResult(System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}})">
            <summary>
            A factory method for use from inside an <see cref="T:Wyam.Common.Shortcodes.IShortcode"/> to create an <see cref="T:Wyam.Common.Shortcodes.IShortcodeResult"/>.
            </summary>
            <param name="content">
            The content of the shortcode.
            If you don't want the shortcode to add new content, you can use <c>null</c> for the content.
            </param>
            <param name="metadata">New metadata to be added to the document as a result of executing the shortcode.</param>
            <returns>A shortcode result.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IExecutionContext.GetShortcodeResult(System.IO.Stream,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}})">
            <summary>
            A factory method for use from inside an <see cref="T:Wyam.Common.Shortcodes.IShortcode"/> to create an <see cref="T:Wyam.Common.Shortcodes.IShortcodeResult"/>.
            </summary>
            <param name="content">
            The content of the shortcode. The passed in stream will be disposed when the shortcode has been rendered.
            Use <see cref="M:Wyam.Common.Execution.IExecutionContext.GetContentStream(System.String)"/> if you need to create a content stream from a string.
            If you don't want the shortcode to add new content, you can use <c>null</c> for the content stream.
            </param>
            <param name="metadata">New metadata to be added to the document as a result of executing the shortcode.</param>
            <returns>A shortcode result.</returns>
        </member>
        <member name="T:Wyam.Common.Execution.IPipeline">
            <summary>
            Represents a named collection of modules that should be executed by the engine.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IPipeline.Name">
            <summary>
            The name of the pipeline.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IPipeline.ProcessDocumentsOnce">
            <summary>
            Specifies that a given pipeline doesn't use data from other pipelines and prevents reprocessing of documents after the first pass.
            </summary>
            <remarks>
            when set, the pipeline looks for the first occurrence of a given <see cref="P:Wyam.Common.Documents.IDocument.Source"/> and then caches all final result
            documents that have the same source. On subsequent executions, if a document with a previously seen <see cref="P:Wyam.Common.Documents.IDocument.Source"/>
            is found and it has the same content, that document is removed from the module output and therefore won't get passed to the next
            module. At the end of the pipeline, all the documents from the first pass that have the same source as the removed one are added
            back to the result set (so later pipelines can still access them in the documents collection if needed).
            </remarks>
        </member>
        <member name="T:Wyam.Common.Execution.IPipelineCollection">
            <summary>
            A collection of pipelines.
            </summary>
        </member>
        <member name="M:Wyam.Common.Execution.IPipelineCollection.Add(System.String,Wyam.Common.Modules.IModuleList)">
            <summary>
            Adds a new named pipeline to the collection.
            </summary>
            <param name="name">The name of the pipeline to add.</param>
            <param name="modules">The modules the pipeline should contain.</param>
            <returns>The added pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IPipelineCollection.Add(Wyam.Common.Execution.IPipeline)">
            <summary>
            Adds an existing pipeline to the collection.
            </summary>
            <param name="pipeline">The pipeline to add.</param>
            <returns>The added pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IPipelineCollection.Insert(System.Int32,System.String,Wyam.Common.Modules.IModuleList)">
            <summary>
            Inserts a new pipeline into the collection.
            </summary>
            <param name="index">The index at which to insert the new pipeline.</param>
            <param name="name">The name of the pipeline to insert.</param>
            <param name="modules">The modules the pipeline should contain.</param>
            <returns>The inserted pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IPipelineCollection.Insert(System.Int32,Wyam.Common.Execution.IPipeline)">
            <summary>
            Inserts an existing pipeline into the collection.
            </summary>
            <param name="index">The index at which to insert the pipeline.</param>
            <param name="pipeline">The pipeline to insert.</param>
            <returns>The inserted pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IPipelineCollection.Remove(System.String)">
            <summary>
            Removes a pipeline from the collection by name.
            </summary>
            <param name="name">The name of the pipeline to remove.</param>
            <returns><c>true</c> if the pipeline was found and remove, otherwise <c>false</c>.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.IPipelineCollection.RemoveAt(System.Int32)">
            <summary>
            Removes a pipeline from the collection by index.
            </summary>
            <param name="index">The index of the pipeline to remove.</param>
        </member>
        <member name="M:Wyam.Common.Execution.IPipelineCollection.IndexOf(System.String)">
            <summary>
            Gets the index of a named pipeline.
            </summary>
            <param name="name">The name of the pipeline.</param>
            <returns>The index of the pipeline.</returns>
        </member>
        <member name="P:Wyam.Common.Execution.IPipelineCollection.Count">
            <summary>
            Gets the number of pipeline in the collection.
            </summary>
        </member>
        <member name="M:Wyam.Common.Execution.IPipelineCollection.GetEnumerator">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Common.Execution.IReadOnlyPipeline">
            <summary>
            A read-only pipeline.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IReadOnlyPipeline.Name">
            <summary>
            The name of the pipeline.
            </summary>
        </member>
        <member name="P:Wyam.Common.Execution.IReadOnlyPipeline.ProcessDocumentsOnce">
            <summary>
            Indicates whether this pipeline only processes documents once.
            </summary>
        </member>
        <member name="T:Wyam.Common.Execution.LinkExtensions">
            <summary>
            Extensions to generate web links using global settings.
            </summary>
        </member>
        <member name="M:Wyam.Common.Execution.LinkExtensions.GetLink(Wyam.Common.Execution.IExecutionContext)">
            <summary>
            Gets a link for the root of the site using the host and root path specified in the settings.
            </summary>
            <param name="context">The execution context.</param>
            <returns>A link for the root of the site.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.LinkExtensions.GetLink(Wyam.Common.Execution.IExecutionContext,Wyam.Common.Meta.IMetadata,System.Boolean)">
            <summary>
            Gets a link for the specified metadata (typically a document) using the
            "RelativeFilePath" metadata value and the default settings from the
            <see cref="T:Wyam.Common.Configuration.IReadOnlySettings" />. This version should be used inside modules to ensure
            consistent link generation. Note that you can optionally include the host or not depending
            on if you want to generate host-specific links. By default, the host is not included so that
            sites work the same on any server including the preview server.
            </summary>
            <param name="context">The execution context.</param>
            <param name="metadata">The metadata or document to generate a link for.</param>
            <param name="includeHost">If set to <c>true</c> the host configured in the output settings will
            be included in the link, otherwise the host will be omitted and only the root path will be included (default).</param>
            <returns>
            A string representation of the path suitable for a web link.
            </returns>
        </member>
        <member name="M:Wyam.Common.Execution.LinkExtensions.GetLink(Wyam.Common.Execution.IExecutionContext,Wyam.Common.Meta.IMetadata,System.String,System.Boolean)">
            <summary>
            Gets a link for the specified metadata (typically a document) using the
            specified metadata value (by default, "RelativeFilePath") and the default settings from the
            <see cref="T:Wyam.Common.Configuration.IReadOnlySettings" />. This version should be used inside modules to ensure
            consistent link generation. Note that you can optionally include the host or not depending
            on if you want to generate host-specific links. By default, the host is not included so that
            sites work the same on any server including the preview server.
            </summary>
            <param name="context">The execution context.</param>
            <param name="metadata">The metadata or document to generate a link for.</param>
            <param name="key">The key at which a <see cref="T:Wyam.Common.IO.FilePath"/> can be found for generating the link.</param>
            <param name="includeHost">If set to <c>true</c> the host configured in the output settings will
            be included in the link, otherwise the host will be omitted and only the root path will be included (default).</param>
            <returns>
            A string representation of the path suitable for a web link.
            </returns>
        </member>
        <member name="M:Wyam.Common.Execution.LinkExtensions.GetLink(Wyam.Common.Execution.IExecutionContext,System.String,System.Boolean)">
            <summary>
            Converts the specified path into a string appropriate for use as a link using default settings from the
            <see cref="T:Wyam.Common.Configuration.IReadOnlySettings" />. This version should be used inside modules to ensure
            consistent link generation. Note that you can optionally include the host or not depending
            on if you want to generate host-specific links. By default, the host is not included so that
            sites work the same on any server including the preview server.
            </summary>
            <param name="context">The execution context.</param>
            <param name="path">The path to generate a link for.</param>
            <param name="includeHost">If set to <c>true</c> the host configured in the output settings will
            be included in the link, otherwise the host will be omitted and only the root path will be included (default).</param>
            <returns>
            A string representation of the path suitable for a web link.
            </returns>
        </member>
        <member name="M:Wyam.Common.Execution.LinkExtensions.GetLink(Wyam.Common.Execution.IExecutionContext,System.String,System.String,Wyam.Common.IO.DirectoryPath,System.Boolean,System.Boolean,System.Boolean)">
            <summary>
            Converts the path into a string appropriate for use as a link, overriding one or more
            settings from the <see cref="T:Wyam.Common.Configuration.IReadOnlySettings" />.
            </summary>
            <param name="context">The execution context.</param>
            <param name="path">The path to generate a link for.</param>
            <param name="host">The host to use for the link.</param>
            <param name="root">The root of the link. The value of this parameter is prepended to the path.</param>
            <param name="useHttps">If set to <c>true</c>, HTTPS will be used as the scheme for the link.</param>
            <param name="hideIndexPages">If set to <c>true</c>, "index.htm" and "index.html" file
            names will be hidden.</param>
            <param name="hideExtensions">If set to <c>true</c>, extensions will be hidden.</param>
            <returns>
            A string representation of the path suitable for a web link with the specified
            root and hidden file name or extension.
            </returns>
        </member>
        <member name="M:Wyam.Common.Execution.LinkExtensions.GetLink(Wyam.Common.Execution.IExecutionContext,Wyam.Common.IO.NormalizedPath,System.Boolean)">
            <summary>
            Converts the specified path into a string appropriate for use as a link using default settings from the
            <see cref="T:Wyam.Common.Configuration.IReadOnlySettings" />. This version should be used inside modules to ensure
            consistent link generation. Note that you can optionally include the host or not depending
            on if you want to generate host-specific links. By default, the host is not included so that
            sites work the same on any server including the preview server.
            </summary>
            <param name="context">The execution context.</param>
            <param name="path">The path to generate a link for.</param>
            <param name="includeHost">If set to <c>true</c> the host configured in the output settings will
            be included in the link, otherwise the host will be omitted and only the root path will be included (default).</param>
            <returns>
            A string representation of the path suitable for a web link.
            </returns>
        </member>
        <member name="M:Wyam.Common.Execution.LinkExtensions.GetLink(Wyam.Common.Execution.IExecutionContext,Wyam.Common.IO.NormalizedPath,System.String,Wyam.Common.IO.DirectoryPath,System.Boolean,System.Boolean,System.Boolean)">
            <summary>
            Converts the path into a string appropriate for use as a link, overriding one or more
            settings from the <see cref="T:Wyam.Common.Configuration.IReadOnlySettings" />.
            </summary>
            <param name="context">The execution context.</param>
            <param name="path">The path to generate a link for.</param>
            <param name="host">The host to use for the link.</param>
            <param name="root">The root of the link. The value of this parameter is prepended to the path.</param>
            <param name="useHttps">If set to <c>true</c>, HTTPS will be used as the scheme for the link.</param>
            <param name="hideIndexPages">If set to <c>true</c>, "index.htm" and "index.html" file
            names will be hidden.</param>
            <param name="hideExtensions">If set to <c>true</c>, extensions will be hidden.</param>
            <returns>
            A string representation of the path suitable for a web link with the specified
            root and hidden file name or extension.
            </returns>
        </member>
        <member name="M:Wyam.Common.Execution.LinkExtensions.GetLink(Wyam.Common.Execution.IExecutionContext,Wyam.Common.IO.NormalizedPath,System.String,Wyam.Common.IO.DirectoryPath,System.Boolean,System.Boolean,System.Boolean,System.Boolean)">
            <summary>
            Converts the path into a string appropriate for use as a link, overriding one or more
            settings from the <see cref="T:Wyam.Common.Configuration.IReadOnlySettings" />.
            </summary>
            <param name="context">The execution context.</param>
            <param name="path">The path to generate a link for.</param>
            <param name="host">The host to use for the link.</param>
            <param name="root">The root of the link. The value of this parameter is prepended to the path.</param>
            <param name="useHttps">If set to <c>true</c>, HTTPS will be used as the scheme for the link.</param>
            <param name="hideIndexPages">If set to <c>true</c>, "index.htm" and "index.html" file
            names will be hidden.</param>
            <param name="hideExtensions">If set to <c>true</c>, extensions will be hidden.</param>
            <param name="lowercase">If set to <c>true</c>, links will be rendered in all lowercase.</param>
            <returns>
            A string representation of the path suitable for a web link with the specified
            root and hidden file name or extension.
            </returns>
        </member>
        <member name="T:Wyam.Common.Execution.Pipeline">
            <summary>
            A utility class for specifying pipelines. Note that this is not required
            for pipeline creation and is typically only used when a pipeline needs to
            be specified outside the context of a configuration file (such as a recipe,
            though it's not even required for those). Instances of this class
            are typically assigned to read-only properties in a <see cref="T:Wyam.Common.Configuration.Recipe"/> class and by
            convention the class name should match the property name (an exception will be thrown during
            recipe application if not). This class also implements string conversions and operators
            that return the pipeline name (so it can be used as a key for the pipeline it defines).
            Note that once this pipeline is added to an <see cref="T:Wyam.Common.Execution.IPipelineCollection"/>, the actual
            instance probably won't be what's stored by the collection and should not be used for comparisons.
            </summary>
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.#ctor">
            <summary>
            Creates a pipeline with an empty modules collection
            and a default name equal to the class name.
            </summary>
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            Creates a pipeline with the specified modules
            and a default name equal to the class name.
            </summary>
            <param name="modules">The modules in the pipeline.</param>
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.#ctor(System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Creates a pipeline with the specified modules
            and a default name equal to the class name.
            </summary>
            <param name="modules">The modules in the pipeline.</param>
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.#ctor(System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            Creates a pipeline with the specified modules
            and the specified name.
            </summary>
            <param name="name">The name of the pipeline.</param>
            <param name="modules">The modules in the pipeline.</param>
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.#ctor(System.String,System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Creates a pipeline with the specified modules
            and the specified name.
            </summary>
            <param name="name">The name of the pipeline.</param>
            <param name="modules">The modules in the pipeline.</param>
        </member>
        <member name="P:Wyam.Common.Execution.Pipeline.Name">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Execution.Pipeline.ProcessDocumentsOnce">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.op_Implicit(Wyam.Common.Execution.Pipeline)~System.String">
            <summary>
            Provides the name for the pipeline when converted to a string.
            </summary>
            <param name="pipeline">The current instance.</param>
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.ToString">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.GetHashCode">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.GetEnumerator">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.Add(Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.Clear">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.Contains(Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.CopyTo(Wyam.Common.Modules.IModule[],System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.Remove(Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.Remove(System.String)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Execution.Pipeline.Count">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.Add(Wyam.Common.Modules.IModule[])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.Insert(System.Int32,Wyam.Common.Modules.IModule[])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.IndexOf(System.String)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Execution.Pipeline.IsReadOnly">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.IndexOf(Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.Insert(System.Int32,Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.RemoveAt(System.Int32)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Execution.Pipeline.Item(System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.Contains(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.TryGetValue(System.String,[email protected])">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Execution.Pipeline.Item(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.Add(System.String,Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.Insert(System.Int32,System.String,Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Execution.Pipeline.AsKeyValuePairs">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Common.Execution.PipelineCollectionExtensions">
            <summary>
            Extensions for working with pipeline collections.
            </summary>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.Add(Wyam.Common.Execution.IPipelineCollection,Wyam.Common.Modules.IModuleList)">
            <summary>
            Adds a new unnamed pipeline to the collection.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="modules">The modules the new pipeline should contain.</param>
            <returns>The newly added pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.Add(Wyam.Common.Execution.IPipelineCollection,Wyam.Common.Modules.IModule[])">
            <summary>
            Adds a new unnamed pipeline to the collection.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="modules">The modules the new pipeline should contain.</param>
            <returns>The newly added pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.Add(Wyam.Common.Execution.IPipelineCollection,System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            Adds a new named pipeline to the collection.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="name">The name of the new pipeline.</param>
            <param name="modules">The modules the new pipeline should contain.</param>
            <returns>The newly added pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.Insert(Wyam.Common.Execution.IPipelineCollection,System.Int32,Wyam.Common.Modules.IModuleList)">
            <summary>
            Inserts a new unnamed pipeline into the collection.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="index">The index at which to insert the new pipeline.</param>
            <param name="modules">The modules the new pipeline should contain.</param>
            <returns>The newly inserted pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.Insert(Wyam.Common.Execution.IPipelineCollection,System.Int32,Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts a new unnamed pipeline into the collection.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="index">The index at which to insert the new pipeline.</param>
            <param name="modules">The modules the new pipeline should contain.</param>
            <returns>The newly inserted pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.Insert(Wyam.Common.Execution.IPipelineCollection,System.Int32,System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts a new named pipeline into the collection.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="index">The index at which to insert the new pipeline.</param>
            <param name="name">The name of the new pipeline.</param>
            <param name="modules">The modules the new pipeline should contain.</param>
            <returns>The newly inserted pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.InsertBefore(Wyam.Common.Execution.IPipelineCollection,System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts a new unnamed pipeline before an existing named pipeline.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="target">The pipeline before which the new pipeline should be inserted.</param>
            <param name="modules">The modules the new pipeline should contain.</param>
            <returns>The newly inserted pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.InsertBefore(Wyam.Common.Execution.IPipelineCollection,System.String,Wyam.Common.Modules.IModuleList)">
            <summary>
            Inserts a new unnamed pipeline before an existing named pipeline.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="target">The pipeline before which the new pipeline should be inserted.</param>
            <param name="modules">The modules the new pipeline should contain.</param>
            <returns>The newly inserted pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.InsertBefore(Wyam.Common.Execution.IPipelineCollection,System.String,System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts a new named pipeline before an existing named pipeline.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="target">The pipeline before which the new pipeline should be inserted.</param>
            <param name="name">The name of the new pipeline.</param>
            <param name="modules">The modules the new pipeline should contain.</param>
            <returns>The newly inserted pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.InsertBefore(Wyam.Common.Execution.IPipelineCollection,System.String,System.String,Wyam.Common.Modules.IModuleList)">
            <summary>
            Inserts a new named pipeline before an existing named pipeline.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="target">The pipeline before which the new pipeline should be inserted.</param>
            <param name="name">The name of the new pipeline.</param>
            <param name="modules">The modules the new pipeline should contain.</param>
            <returns>The newly inserted pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.InsertBefore(Wyam.Common.Execution.IPipelineCollection,System.String,Wyam.Common.Execution.IPipeline)">
            <summary>
            Inserts an existing pipeline before an existing named pipeline.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="target">The pipeline before which the specified pipeline should be inserted.</param>
            <param name="pipeline">The pipeline to insert.</param>
            <returns>The inserted pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.InsertAfter(Wyam.Common.Execution.IPipelineCollection,System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts a new unnamed pipeline after an existing named pipeline.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="target">The pipeline after which the new pipeline should be inserted.</param>
            <param name="modules">The modules the new pipeline should contain.</param>
            <returns>The newly inserted pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.InsertAfter(Wyam.Common.Execution.IPipelineCollection,System.String,Wyam.Common.Modules.IModuleList)">
            <summary>
            Inserts a new unnamed pipeline after an existing named pipeline.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="target">The pipeline after which the new pipeline should be inserted.</param>
            <param name="modules">The modules the new pipeline should contain.</param>
            <returns>The newly inserted pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.InsertAfter(Wyam.Common.Execution.IPipelineCollection,System.String,System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts a new named pipeline after an existing named pipeline.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="target">The pipeline after which the new pipeline should be inserted.</param>
            <param name="name">The name of the new pipeline.</param>
            <param name="modules">The modules the new pipeline should contain.</param>
            <returns>The newly inserted pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.InsertAfter(Wyam.Common.Execution.IPipelineCollection,System.String,System.String,Wyam.Common.Modules.IModuleList)">
            <summary>
            Inserts a new named pipeline after an existing named pipeline.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="target">The pipeline after which the new pipeline should be inserted.</param>
            <param name="name">The name of the new pipeline.</param>
            <param name="modules">The modules the new pipeline should contain.</param>
            <returns>The newly inserted pipeline.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineCollectionExtensions.InsertAfter(Wyam.Common.Execution.IPipelineCollection,System.String,Wyam.Common.Execution.IPipeline)">
            <summary>
            Inserts an existing pipeline after an existing named pipeline.
            </summary>
            <param name="pipelines">The pipeline collection.</param>
            <param name="target">The pipeline after which the specified pipeline should be inserted.</param>
            <param name="pipeline">The pipeline to insert.</param>
            <returns>The inserted pipeline.</returns>
        </member>
        <member name="T:Wyam.Common.Execution.PipelineExtensions">
            <summary>
            Extension methods for <see cref="T:Wyam.Common.Execution.IPipeline"/>.
            </summary>
        </member>
        <member name="M:Wyam.Common.Execution.PipelineExtensions.WithProcessDocumentsOnce(Wyam.Common.Execution.IPipeline,System.Boolean)">
            <summary>
            Specifies that a given pipeline doesn't use data from other pipelines and prevents reprocessing of documents after the first pass.
            </summary>
            <remarks>
            when set, the pipeline looks for the first occurrence of a given <see cref="P:Wyam.Common.Documents.IDocument.Source"/> and then caches all final result
            documents that have the same source. On subsequent executions, if a document with a previously seen <see cref="P:Wyam.Common.Documents.IDocument.Source"/>
            is found and it has the same content, that document is removed from the module output and therefore won't get passed to the next
            module. At the end of the pipeline, all the documents from the first pass that have the same source as the removed one are added
            back to the result set (so later pipelines can still access them in the documents collection if needed).
            </remarks>
            <param name="pipeline">The pipeline to set.</param>
            <param name="processDocumentsOnce"><c>true</c> to process documents once, <c>false</c> for the default behavior.</param>
            <returns>The specified pipeline.</returns>
        </member>
        <member name="T:Wyam.Common.Execution.TraceExceptionsExtensions">
            <summary>
            Extensions to send exception messages to trace output with relevant context such as currently executing module and document.
            </summary>
        </member>
        <member name="M:Wyam.Common.Execution.TraceExceptionsExtensions.TraceExceptions(Wyam.Common.Execution.IExecutionContext,Wyam.Common.Documents.IDocument,System.Action{Wyam.Common.Documents.IDocument})">
            <summary>
            If an exception is thrown within the action, an error messages will be sent to the trace output
            containing information about the document source, the current module, and the exception message.
            The exception will also be re-thrown once the message has been sent to the trace listeners.
            </summary>
            <param name="context">The current execution context.</param>
            <param name="document">The document to be processed.</param>
            <param name="action">The action to evaluate with the document.</param>
        </member>
        <member name="M:Wyam.Common.Execution.TraceExceptionsExtensions.TraceExceptions``1(Wyam.Common.Execution.IExecutionContext,Wyam.Common.Documents.IDocument,System.Func{Wyam.Common.Documents.IDocument,``0})">
            <summary>
            If an exception is thrown within the action, an error messages will be sent to the trace output
            containing information about the document source, the current module, and the exception message.
            The exception will also be re-thrown once the message has been sent to the trace listeners.
            </summary>
            <typeparam name="TResult">The return type of the function.</typeparam>
            <param name="context">The current execution context.</param>
            <param name="document">The document to be processed.</param>
            <param name="func">The function to evaluate with the document.</param>
            <returns>The result of the function.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.TraceExceptionsExtensions.TraceExceptions(Wyam.Common.Execution.IExecutionContext,System.Action)">
            <summary>
            If an exception is thrown within the action, an error messages will be sent to the trace output
            containing information about the current module and the exception message.
            The exception will also be re-thrown once the message has been sent to the trace listeners.
            </summary>
            <param name="context">The current execution context.</param>
            <param name="action">The action to evaluate.</param>
        </member>
        <member name="M:Wyam.Common.Execution.TraceExceptionsExtensions.TraceExceptions``1(Wyam.Common.Execution.IExecutionContext,System.Func{``0})">
            <summary>
            If an exception is thrown within the action, an error messages will be sent to the trace output
            containing information about the current module and the exception message.
            The exception will also be re-thrown once the message has been sent to the trace listeners.
            </summary>
            <typeparam name="TResult">The return type of the function.</typeparam>
            <param name="context">The current execution context.</param>
            <param name="func">The function to evaluate.</param>
            <returns>The result of the function.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.TraceExceptionsExtensions.ForEach(Wyam.Common.Execution.IExecutionContext,System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.Action{Wyam.Common.Documents.IDocument})">
            <summary>
            If an exception is thrown within the action, an error messages will be sent to the trace output
            containing information about the document source, the current module, and the exception message.
            The exception will also be re-thrown once the message has been sent to the trace listeners.
            </summary>
            <param name="context">The current execution context.</param>
            <param name="documents">The documents to be processed.</param>
            <param name="action">The action to evaluate with the documents.</param>
        </member>
        <member name="M:Wyam.Common.Execution.TraceExceptionsExtensions.ParallelForEach(Wyam.Common.Execution.IExecutionContext,System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},System.Action{Wyam.Common.Documents.IDocument})">
            <summary>
            If an exception is thrown within the action, an error messages will be sent to the trace output
            containing information about the document source, the current module, and the exception message.
            The exception will also be re-thrown once the message has been sent to the trace listeners.
            </summary>
            <param name="context">The current execution context.</param>
            <param name="documents">The documents to be processed.</param>
            <param name="action">The action to evaluate with the documents.</param>
        </member>
        <member name="M:Wyam.Common.Execution.TraceExceptionsExtensions.Select``1(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext,System.Func{Wyam.Common.Documents.IDocument,``0})">
            <summary>
            Evaluates a LINQ <c>Select</c> method and traces any exceptions.
            </summary>
            <typeparam name="TResult">The type of the result.</typeparam>
            <param name="source">The source sequence.</param>
            <param name="context">The execution context.</param>
            <param name="selector">The selector function.</param>
            <returns>The result sequence.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.TraceExceptionsExtensions.SelectMany``1(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext,System.Func{Wyam.Common.Documents.IDocument,System.Collections.Generic.IEnumerable{``0}})">
            <summary>
            Evaluates a LINQ <c>SelectMany</c> method and traces any exceptions.
            </summary>
            <typeparam name="TResult">The type of the result.</typeparam>
            <param name="source">The source sequence.</param>
            <param name="context">The execution context.</param>
            <param name="selector">The selector function.</param>
            <returns>The result sequence.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.TraceExceptionsExtensions.Where(System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext,System.Func{Wyam.Common.Documents.IDocument,System.Boolean})">
            <summary>
            Evaluates a LINQ <c>Where</c> method and traces any exceptions.
            </summary>
            <param name="source">The source sequence.</param>
            <param name="context">The execution context.</param>
            <param name="predicate">The predicate function.</param>
            <returns>The result sequence.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.TraceExceptionsExtensions.Select(System.Linq.ParallelQuery{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext,System.Func{Wyam.Common.Documents.IDocument,Wyam.Common.Documents.IDocument})">
            <summary>
            Evaluates a PLINQ <c>Select</c> method over a sequence of <see cref="T:Wyam.Common.Documents.IDocument"/> and traces any exceptions.
            </summary>
            <param name="query">The source query.</param>
            <param name="context">The execution context.</param>
            <param name="selector">The selector function.</param>
            <returns>The result query.</returns>
        </member>
        <member name="M:Wyam.Common.Execution.TraceExceptionsExtensions.SelectMany(System.Linq.ParallelQuery{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext,System.Func{Wyam.Common.Documents.IDocument,System.Collections.Generic.IEnumerable{Wyam.Common.Documents.IDocument}})">
            <summary>
            Evaluates a PLINQ <c>SelectMany</c> method over a sequence of <see cref="T:Wyam.Common.Documents.IDocument"/> and traces any exceptions.
            </summary>
            <param name="query">The source query.</param>
            <param name="context">The execution context.</param>
            <param name="selector">The selector function.</param>
            <returns>The result query.</returns>
        </member>
        <member name="T:Wyam.Common.IO.DirectoryEqualityComparer">
            <summary>
            Compares <see cref="T:Wyam.Common.IO.IDirectory"/> equality.
            </summary>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryEqualityComparer.Equals(Wyam.Common.IO.IDirectory,Wyam.Common.IO.IDirectory)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.IO.DirectoryEqualityComparer.GetHashCode(Wyam.Common.IO.IDirectory)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Common.IO.DirectoryPath">
            <summary>
            Represents a directory path.
            </summary>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.DirectoryPath"/> class.
            The path will be considered absolute if the underlying OS file system
            considers it absolute.
            </summary>
            <param name="path">The path.</param>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.#ctor(System.String,Wyam.Common.IO.PathKind)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.DirectoryPath"/> class.
            </summary>
            <param name="path">The path.</param>
            <param name="pathKind">Specifies whether the path is relative, absolute, or indeterminate.</param>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.DirectoryPath" /> class
            with the specified file provider.
            The path will be considered absolute if the underlying OS file system
            considers it absolute.
            </summary>
            <param name="fileProvider">The file provider.</param>
            <param name="path">The path.</param>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.#ctor(System.String,System.String,Wyam.Common.IO.PathKind)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.DirectoryPath" /> class
            with the specified file provider.
            </summary>
            <param name="fileProvider">The file provider.</param>
            <param name="path">The path.</param>
            <param name="pathKind">Specifies whether the path is relative, absolute, or indeterminate.</param>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.#ctor(System.Uri,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.DirectoryPath" /> class
            with the specified file provider.
            The path will be considered absolute if the underlying OS file system
            considers it absolute.
            </summary>
            <param name="fileProvider">The file provider.</param>
            <param name="path">The path.</param>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.#ctor(System.Uri,System.String,Wyam.Common.IO.PathKind)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.DirectoryPath" /> class
            with the specified file provider.
            </summary>
            <param name="fileProvider">The file provider.</param>
            <param name="path">The path.</param>
            <param name="pathKind">Specifies whether the path is relative, absolute, or indeterminate.</param>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.#ctor(System.Uri)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.DirectoryPath" /> class
            with the specified file provider and/or path.
            </summary>
            <param name="path">The path (and file provider if this is an absolute URI).</param>
        </member>
        <member name="P:Wyam.Common.IO.DirectoryPath.Name">
            <summary>
            Gets the name of the directory.
            </summary>
            <value>The directory name.</value>
            <remarks>
            If this is passed a file path, it will return the file name.
            This is by-and-large equivalent to how DirectoryInfo handles this scenario.
            If we wanted to return the *actual* directory name, we'd need to pull in IFileSystem,
            and do various checks to make sure things exists.
            </remarks>
        </member>
        <member name="P:Wyam.Common.IO.DirectoryPath.Parent">
            <summary>
            Gets the parent path or <c>null</c> if this is a root path.
            </summary>
            <value>
            The parent path or <c>null</c> if this is a root path.
            </value>
        </member>
        <member name="P:Wyam.Common.IO.DirectoryPath.RootRelative">
            <summary>
            Gets current path relative to it's root. If this is already a relative
            path or there is no root path, this just returns the current path.
            </summary>
            <value>
            The current path relative to it's root.
            </value>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.GetFilePath(Wyam.Common.IO.FilePath)">
            <summary>
            Combines the current path with the file name of a <see cref="T:Wyam.Common.IO.FilePath"/>. The current file provider
            is maintained.
            </summary>
            <param name="path">The path.</param>
            <returns>A combination of the current path and the file name of the provided <see cref="T:Wyam.Common.IO.FilePath"/>.</returns>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.GetRelativePath(Wyam.Common.IO.DirectoryPath)">
            <summary>
            Get the relative path to another directory. If this path and the target path
            do not share the same file provider, the target path is returned.
            </summary>
            <param name="target">The target directory path.</param>
            <returns>A <see cref="T:Wyam.Common.IO.DirectoryPath"/>.</returns>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.GetRelativePath(Wyam.Common.IO.FilePath)">
            <summary>
            Get the relative path to another file. If this path and the target path
            do not share the same file provider, the target path is returned.
            </summary>
            <param name="target">The target file path.</param>
            <returns>A <see cref="T:Wyam.Common.IO.FilePath"/>.</returns>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.CombineFile(Wyam.Common.IO.FilePath)">
            <summary>
            Combines the current path with a <see cref="T:Wyam.Common.IO.FilePath"/>.
            If the provided <see cref="T:Wyam.Common.IO.FilePath"/> is not relative, then it is returned.
            </summary>
            <param name="path">The path.</param>
            <returns>A combination of the current path and the provided <see cref="T:Wyam.Common.IO.FilePath"/>, unless
            the provided <see cref="T:Wyam.Common.IO.FilePath"/> is absolute in which case it is returned.</returns>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.Combine(Wyam.Common.IO.DirectoryPath)">
            <summary>
            Combines the current path with another <see cref="T:Wyam.Common.IO.DirectoryPath"/>.
            If the provided <see cref="T:Wyam.Common.IO.DirectoryPath"/> is not relative, then it is returned.
            </summary>
            <param name="path">The path.</param>
            <returns>A combination of the current path and the provided <see cref="T:Wyam.Common.IO.DirectoryPath"/>, unless
            the provided <see cref="T:Wyam.Common.IO.DirectoryPath"/> is absolute in which case it is returned.</returns>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.Collapse">
            <summary>
            Collapses a <see cref="T:Wyam.Common.IO.DirectoryPath"/> containing ellipses.
            </summary>
            <returns>A collapsed <see cref="T:Wyam.Common.IO.DirectoryPath"/>.</returns>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.op_Implicit(System.String)~Wyam.Common.IO.DirectoryPath">
            <summary>
            Performs an implicit conversion from <see cref="T:System.String"/> to <see cref="T:Wyam.Common.IO.DirectoryPath"/>.
            </summary>
            <param name="path">The path.</param>
            <returns>A <see cref="T:Wyam.Common.IO.DirectoryPath"/>.</returns>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.FromString(System.String)">
            <summary>
            Performs a conversion from <see cref="T:System.String"/> to <see cref="T:Wyam.Common.IO.DirectoryPath"/>.
            </summary>
            <param name="path">The path.</param>
            <returns>A <see cref="T:Wyam.Common.IO.DirectoryPath"/>.</returns>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.op_Implicit(System.Uri)~Wyam.Common.IO.DirectoryPath">
            <summary>
            Performs an implicit conversion from <see cref="T:System.Uri"/> to <see cref="T:Wyam.Common.IO.DirectoryPath"/>.
            </summary>
            <param name="path">The path.</param>
            <returns>A <see cref="T:Wyam.Common.IO.DirectoryPath"/>.</returns>
        </member>
        <member name="M:Wyam.Common.IO.DirectoryPath.FromUri(System.Uri)">
            <summary>
            Performs a conversion from <see cref="T:System.Uri"/> to <see cref="T:Wyam.Common.IO.DirectoryPath"/>.
            </summary>
            <param name="path">The path.</param>
            <returns>A <see cref="T:Wyam.Common.IO.DirectoryPath"/>.</returns>
        </member>
        <member name="T:Wyam.Common.IO.FileEqualityComparer">
            <summary>
            Compares <see cref="T:Wyam.Common.IO.IFile"/> equality.
            </summary>
        </member>
        <member name="M:Wyam.Common.IO.FileEqualityComparer.Equals(Wyam.Common.IO.IFile,Wyam.Common.IO.IFile)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.IO.FileEqualityComparer.GetHashCode(Wyam.Common.IO.IFile)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Common.IO.FilePath">
            <summary>
            Represents a file path.
            </summary>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.FilePath"/> class.
            The path will be considered absolute if the underlying OS file system
            considers it absolute.
            </summary>
            <param name="path">The path.</param>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.#ctor(System.String,Wyam.Common.IO.PathKind)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.FilePath"/> class..
            </summary>
            <param name="path">The path.</param>
            <param name="pathKind">Specifies whether the path is relative, absolute, or indeterminate.</param>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.FilePath" /> class
            with the specified file provider.
            The path will be considered absolute if the underlying OS file system
            considers it absolute.
            </summary>
            <param name="fileProvider">The file provider.</param>
            <param name="path">The path.</param>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.#ctor(System.String,System.String,Wyam.Common.IO.PathKind)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.FilePath" /> class
            with the specified file provider.
            </summary>
            <param name="fileProvider">The file provider.</param>
            <param name="path">The path.</param>
            <param name="pathKind">Specifies whether the path is relative, absolute, or indeterminate.</param>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.#ctor(System.Uri,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.FilePath" /> class
            with the specified file provider.
            The path will be considered absolute if the underlying OS file system
            considers it absolute.
            </summary>
            <param name="fileProvider">The file provider.</param>
            <param name="path">The path.</param>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.#ctor(System.Uri,System.String,Wyam.Common.IO.PathKind)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.FilePath" /> class
            with the specified file provider.
            </summary>
            <param name="fileProvider">The file provider.</param>
            <param name="path">The path.</param>
            <param name="pathKind">Specifies whether the path is relative, absolute, or indeterminate.</param>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.#ctor(System.Uri)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.FilePath" /> class
            with the specified file provider and/or path.
            </summary>
            <param name="path">The path (and file provider if this is an absolute URI).</param>
        </member>
        <member name="P:Wyam.Common.IO.FilePath.HasExtension">
            <summary>
            Gets a value indicating whether this path has a file extension.
            </summary>
            <value>
            <c>true</c> if this file path has a file extension; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="P:Wyam.Common.IO.FilePath.Directory">
            <summary>
            Gets the directory part of the path.
            </summary>
            <value>The directory part of the path.</value>
        </member>
        <member name="P:Wyam.Common.IO.FilePath.RootRelative">
            <summary>
            Gets the file path relative to it's root path.
            </summary>
        </member>
        <member name="P:Wyam.Common.IO.FilePath.FileName">
            <summary>
            Gets the filename.
            </summary>
            <value>The filename.</value>
        </member>
        <member name="P:Wyam.Common.IO.FilePath.FileNameWithoutExtension">
            <summary>
            Gets the filename without it's extension.
            </summary>
            <value>The filename without it's extension, or <c>null</c> if the file has no name.</value>
        </member>
        <member name="P:Wyam.Common.IO.FilePath.Extension">
            <summary>
            Gets the file extension (including the preceding ".").
            </summary>
            <value>The file extension (including the preceding ".").</value>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.ChangeExtension(System.String)">
            <summary>
            Changes the file extension of the path.
            </summary>
            <param name="extension">The new extension.</param>
            <returns>A new <see cref="T:Wyam.Common.IO.FilePath"/> with a new extension.</returns>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.AppendExtension(System.String)">
            <summary>
            Appends a file extension to the path.
            </summary>
            <param name="extension">The extension.</param>
            <returns>A new <see cref="T:Wyam.Common.IO.FilePath"/> with an appended extension.</returns>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.InsertSuffix(System.String)">
            <summary>
            Inserts a suffix into the file name before the extension.
            </summary>
            <param name="suffix">The suffix to insert.</param>
            <returns>A new <see cref="T:Wyam.Common.IO.FilePath"/> with the specified suffix.</returns>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.InsertPrefix(System.String)">
            <summary>
            Inserts a prefix into the file name.
            </summary>
            <param name="prefix">The prefix to insert.</param>
            <returns>A new <see cref="T:Wyam.Common.IO.FilePath"/> with the specified prefix.</returns>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.Collapse">
            <summary>
            Collapses a <see cref="T:Wyam.Common.IO.FilePath"/> containing ellipses.
            </summary>
            <returns>A collapsed <see cref="T:Wyam.Common.IO.FilePath"/>.</returns>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.op_Implicit(System.String)~Wyam.Common.IO.FilePath">
            <summary>
            Performs an implicit conversion from <see cref="T:System.String"/> to <see cref="T:Wyam.Common.IO.FilePath"/>.
            </summary>
            <param name="path">The path.</param>
            <returns>A <see cref="T:Wyam.Common.IO.FilePath"/>.</returns>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.FromString(System.String)">
            <summary>
            Performs a conversion from <see cref="T:System.String"/> to <see cref="T:Wyam.Common.IO.FilePath"/>.
            </summary>
            <param name="path">The path.</param>
            <returns>A <see cref="T:Wyam.Common.IO.FilePath"/>.</returns>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.op_Implicit(System.Uri)~Wyam.Common.IO.FilePath">
            <summary>
            Performs an implicit conversion from <see cref="T:System.Uri"/> to <see cref="T:Wyam.Common.IO.FilePath"/>.
            </summary>
            <param name="path">The path.</param>
            <returns>A <see cref="T:Wyam.Common.IO.FilePath"/>.</returns>
        </member>
        <member name="M:Wyam.Common.IO.FilePath.FromUri(System.Uri)">
            <summary>
            Performs a conversion from <see cref="T:System.Uri"/> to <see cref="T:Wyam.Common.IO.FilePath"/>.
            </summary>
            <param name="path">The path.</param>
            <returns>A <see cref="T:Wyam.Common.IO.FilePath"/>.</returns>
        </member>
        <member name="T:Wyam.Common.IO.IDirectory">
            <summary>
            Represents a directory. Not all implementations will support all
            available methods and may throw <see cref="T:System.NotSupportedException"/>.
            </summary>
        </member>
        <member name="P:Wyam.Common.IO.IDirectory.Path">
            <summary>
            Gets the path to the directory.
            </summary>
            <value>The path.</value>
        </member>
        <member name="P:Wyam.Common.IO.IDirectory.Parent">
            <summary>
            Gets the parent directory or <c>null</c> if the directory is a root.
            </summary>
        </member>
        <member name="P:Wyam.Common.IO.IDirectory.IsCaseSensitive">
            <summary>
            Indicates whether this directory (and files/directories under it) are case-sensitive.
            </summary>
        </member>
        <member name="M:Wyam.Common.IO.IDirectory.Create">
            <summary>
            Creates the directory, including any necessary parent directories.
            </summary>
        </member>
        <member name="M:Wyam.Common.IO.IDirectory.Delete(System.Boolean)">
            <summary>
            Deletes the directory.
            </summary>
            <param name="recursive">Will perform a recursive delete if set to <c>true</c>.</param>
        </member>
        <member name="M:Wyam.Common.IO.IDirectory.GetDirectories(System.IO.SearchOption)">
            <summary>
            Gets directories matching the specified filter and scope.
            </summary>
            <param name="searchOption">
            Specifies whether the operation should include only
            the current directory or should include all subdirectories.
            </param>
            <returns>Directories matching the filter and scope.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IDirectory.GetFiles(System.IO.SearchOption)">
            <summary>
            Gets files matching the specified filter and scope.
            </summary>
            <param name="searchOption">
            Specifies whether the operation should include only
            the current directory or should include all subdirectories.
            </param>
            <returns>Files matching the specified filter and scope.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IDirectory.GetDirectory(Wyam.Common.IO.DirectoryPath)">
            <summary>
            Gets a directory by combining it's path with the current directory's path.
            The specified directory path must be relative.
            </summary>
            <param name="directory">The path of the directory.</param>
            <returns>The directory.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IDirectory.GetFile(Wyam.Common.IO.FilePath)">
            <summary>
            Gets a file by combining it's path with the current directory's path.
            The specified file path must be relative.
            </summary>
            <param name="path">The path of the file.</param>
            <returns>The file.</returns>
        </member>
        <member name="T:Wyam.Common.IO.IFile">
            <summary>
            Represents a file. Not all implementations will support all
            available methods and may throw <see cref="T:System.NotSupportedException"/>.
            </summary>
        </member>
        <member name="P:Wyam.Common.IO.IFile.Path">
            <summary>
            Gets the path to the file.
            </summary>
            <value>The path.</value>
        </member>
        <member name="P:Wyam.Common.IO.IFile.Directory">
            <summary>
            Gets the directory of the file.
            </summary>
            <value>
            The directory of the file.
            </value>
        </member>
        <member name="P:Wyam.Common.IO.IFile.Length">
            <summary>
            Gets the length of the file.
            </summary>
            <value>The length of the file.</value>
        </member>
        <member name="M:Wyam.Common.IO.IFile.CopyTo(Wyam.Common.IO.IFile,System.Boolean,System.Boolean)">
            <summary>
            Copies the file to the specified destination file.
            </summary>
            <param name="destination">The destination file.</param>
            <param name="overwrite">Will overwrite existing destination file if set to <c>true</c>.</param>
            <param name="createDirectory">Will create any needed directories that don't already exist if set to <c>true</c>.</param>
        </member>
        <member name="M:Wyam.Common.IO.IFile.MoveTo(Wyam.Common.IO.IFile)">
            <summary>
            Moves the file to the specified destination file.
            </summary>
            <param name="destination">The destination file.</param>
        </member>
        <member name="M:Wyam.Common.IO.IFile.Delete">
            <summary>
            Deletes the file.
            </summary>
        </member>
        <member name="M:Wyam.Common.IO.IFile.ReadAllText">
            <summary>
            Reads all text from the file.
            </summary>
            <returns>All text in the file.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IFile.WriteAllText(System.String,System.Boolean)">
            <summary>
            Writes the specified text to a file.
            </summary>
            <param name="contents">The text to write.</param>
            <param name="createDirectory">Will create any needed directories that don't already exist if set to <c>true</c>.</param>
        </member>
        <member name="M:Wyam.Common.IO.IFile.OpenRead">
            <summary>
            Opens the file for reading. If it does not exist, an exception
            will be thrown.
            </summary>
            <returns>The stream.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IFile.OpenWrite(System.Boolean)">
            <summary>
            Opens the file for writing. This will either create the file
            if it doesn't exist or overwrite it if it does.
            </summary>
            <param name="createDirectory">Will create any needed directories that don't already exist if set to <c>true</c>.</param>
            <returns>The stream.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IFile.OpenAppend(System.Boolean)">
            <summary>
            Opens the file for writing. This will either create the file
            if it doesn't exist or append to it if it does.
            </summary>
            <param name="createDirectory">Will create any needed directories that don't already exist if set to <c>true</c>.</param>
            <returns>The stream.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IFile.Open(System.Boolean)">
            <summary>
            Opens the file for reading and writing. This will either create the file
            if it doesn't exist or overwrite it if it does.
            </summary>
            <param name="createDirectory">Will create any needed directories that don't already exist if set to <c>true</c>.</param>
            <returns>The stream.</returns>
        </member>
        <member name="T:Wyam.Common.IO.IFileProvider">
            <summary>
            A provider that can instantiate <see cref="T:Wyam.Common.IO.IFile"/> and <see cref="T:Wyam.Common.IO.IDirectory"/>
            objects from their paths.
            </summary>
        </member>
        <member name="M:Wyam.Common.IO.IFileProvider.GetFile(Wyam.Common.IO.FilePath)">
            <summary>
            Gets a file from a specified path.
            </summary>
            <param name="path">The path to the file.</param>
            <returns>The file.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IFileProvider.GetDirectory(Wyam.Common.IO.DirectoryPath)">
            <summary>
            Gets a directory from a specified path.
            </summary>
            <param name="path">The path to the directory.</param>
            <returns>The directory.</returns>
        </member>
        <member name="T:Wyam.Common.IO.IFileProviderCollection">
            <summary>
            A collection of file providers mapped to schemes.
            </summary>
        </member>
        <member name="M:Wyam.Common.IO.IFileProviderCollection.Add(System.String,Wyam.Common.IO.IFileProvider)">
            <summary>
            Adds a file provider.
            </summary>
            <param name="scheme">The scheme the file provider supports.</param>
            <param name="provider">The file provider.</param>
        </member>
        <member name="M:Wyam.Common.IO.IFileProviderCollection.Remove(System.String)">
            <summary>
            Removes a file provider by scheme.
            </summary>
            <param name="scheme">The scheme to remove.</param>
            <returns><c>true</c> if the provider was found and removed,
            <c>false</c> if the provider was not found.</returns>
        </member>
        <member name="T:Wyam.Common.IO.IFileSystem">
            <summary>
            A file system that can be configured.
            </summary>
        </member>
        <member name="P:Wyam.Common.IO.IFileSystem.FileProviders">
            <summary>
            Gets the file providers.
            </summary>
            <value>
            The file providers.
            </value>
        </member>
        <member name="P:Wyam.Common.IO.IFileSystem.RootPath">
            <summary>
            Gets or sets the root path.
            </summary>
            <value>
            The root path.
            </value>
        </member>
        <member name="P:Wyam.Common.IO.IFileSystem.InputPaths">
            <summary>
            Gets the input paths collection which can be used
            to add or remove input paths.
            </summary>
            <value>
            The input paths.
            </value>
        </member>
        <member name="P:Wyam.Common.IO.IFileSystem.OutputPath">
            <summary>
            Gets or sets the output path.
            </summary>
            <value>
            The output path.
            </value>
        </member>
        <member name="P:Wyam.Common.IO.IFileSystem.TempPath">
            <summary>
            Gets or sets the temporary file path.
            </summary>
        </member>
        <member name="T:Wyam.Common.IO.IFileSystemEntry">
            <summary>
            Represents an entry in the file system
            </summary>
        </member>
        <member name="P:Wyam.Common.IO.IFileSystemEntry.Path">
            <summary>
            Gets the path to the entry.
            </summary>
            <value>The path.</value>
        </member>
        <member name="P:Wyam.Common.IO.IFileSystemEntry.Exists">
            <summary>
            Gets a value indicating whether this <see cref="T:Wyam.Common.IO.IFileSystemEntry"/> exists.
            </summary>
            <value>
              <c>true</c> if the entry exists; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="T:Wyam.Common.IO.IReadOnlyFileProviderCollection">
            <summary>
            A read-only collection of file providers mapped to schemes.
            </summary>
        </member>
        <member name="P:Wyam.Common.IO.IReadOnlyFileProviderCollection.Providers">
            <summary>
            Gets the current file providers.
            </summary>
            <value>
            The current file providers.
            </value>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileProviderCollection.Get(System.String)">
            <summary>
            Gets the requested file provider. Throws <see cref="T:System.Collections.Generic.KeyNotFoundException"/>
            if the provider couldn't be found.
            </summary>
            <param name="scheme">The scheme the provider supports.</param>
            <returns>The requested <see cref="T:Wyam.Common.IO.IFileProvider"/>.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileProviderCollection.TryGet(System.String,[email protected])">
            <summary>
            Tries to get the requested file provider.
            </summary>
            <param name="scheme">The scheme the provider supports.</param>
            <param name="fileProvider">The file provider.</param>
            <returns><c>true</c> if the provider was found, otherwise <c>false</c>.</returns>
        </member>
        <member name="T:Wyam.Common.IO.IReadOnlyFileSystem">
            <summary>
            Represents a file system.
            </summary>
        </member>
        <member name="P:Wyam.Common.IO.IReadOnlyFileSystem.FileProviders">
            <summary>
            Gets the file providers.
            </summary>
            <value>
            The file providers.
            </value>
        </member>
        <member name="P:Wyam.Common.IO.IReadOnlyFileSystem.RootPath">
            <summary>
            Gets the root path.
            </summary>
            <value>
            The root path.
            </value>
        </member>
        <member name="P:Wyam.Common.IO.IReadOnlyFileSystem.InputPaths">
            <summary>
            Gets the input paths. These are searched in reverse order for
            files and directories. For example, given input paths "A", "B",
            and "C" in that order, "C" will be checked for a requested file
            or directory first, and then if it doesn't exist in "C", "B"
            will be checked, and then "A". If none of the input paths contain
            the requested file or directory, the last input path (in this case,
            "C") will be used as the location of the requested non-existent file
            or directory. If you attempt to create it at this point, it will be
            created under path "C".
            </summary>
            <value>
            The input paths.
            </value>
        </member>
        <member name="P:Wyam.Common.IO.IReadOnlyFileSystem.OutputPath">
            <summary>
            Gets the output path.
            </summary>
            <value>
            The output path.
            </value>
        </member>
        <member name="P:Wyam.Common.IO.IReadOnlyFileSystem.TempPath">
            <summary>
            Gets the temporary file path.
            </summary>
            <value>
            The temporary file path.
            </value>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetInputFile(Wyam.Common.IO.FilePath)">
            <summary>
            Gets a file representing an input.
            </summary>
            <param name="path">
            The path of the input file. If this is an absolute path,
            then a file representing the specified path is returned.
            If it's a relative path, then operations will search all
            current input paths.
            </param>
            <returns>An input file.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetInputFiles(System.String[])">
            <summary>
            Gets matching input files based on globbing patterns and/or absolute paths. If any absolute paths
            are provided, only those that actually exist are returned.
            </summary>
            <param name="patterns">The globbing patterns and/or absolute paths.</param>
            <returns>All input files that match the globbing patterns and/or absolute paths.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetInputFiles(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Gets matching input files based on globbing patterns and/or absolute paths. If any absolute paths
            are provided, only those that actually exist are returned.
            </summary>
            <param name="patterns">The globbing patterns and/or absolute paths.</param>
            <returns>All input files that match the globbing patterns and/or absolute paths.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetInputDirectory(Wyam.Common.IO.DirectoryPath)">
            <summary>
            Gets a directory representing an input.
            </summary>
            <param name="path">
            The path of the input directory. If this is an absolute path,
            then a directory representing the specified path is returned.
            If it's a relative path, then the returned directory will
            be a virtual directory that aggregates all input
            paths. If this is <c>null</c> then a virtual
            directory aggregating all input paths is returned.
            </param>
            <returns>An input directory.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetInputDirectories">
            <summary>
            Gets all absolute input directories.
            </summary>
            <returns>The absolute input directories.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetContainingInputPath(Wyam.Common.IO.NormalizedPath)">
            <summary>
            Gets the absolute input path that contains the specified file or directory. If the provided
            file or directory path is absolute, this returns the input path that contains the specified
            path (note that the specified file or directory does not need to exist and this just returns
            the input path that would contain the file or directory based only on path information). If
            the provided path is relative, this checks all input paths for the existence of the file
            or directory and returns the first one where it exists.
            </summary>
            <param name="path">The file path.</param>
            <returns>The input path that contains the specified file,
            or <c>null</c> if no input path does.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetOutputPath(Wyam.Common.IO.FilePath)">
            <summary>
            Gets an output file path by combining it with the root path and output path.
            </summary>
            <param name="path">The path to combine with the root path and output path.</param>
            <returns>The output file path.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetOutputPath(Wyam.Common.IO.DirectoryPath)">
            <summary>
            Gets an output directory path by combining it with the root path and output path.
            </summary>
            <param name="path">The path to combine with the root path and output path.
            If this is <c>null</c>, returns the root path combined with the output path.</param>
            <returns>The output directory path.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetOutputFile(Wyam.Common.IO.FilePath)">
            <summary>
            Gets a file representing an output.
            </summary>
            <param name="path">
            The path of the output file. If this is an absolute path,
            then a file representing the specified path is returned.
            If it's a relative path, then it will be combined with the
            current output path.
            </param>
            <returns>An output file.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetOutputDirectory(Wyam.Common.IO.DirectoryPath)">
            <summary>
            Gets a directory representing an output.
            </summary>
            <param name="path">
            The path of the output directory. If this is an absolute path,
            then a directory representing the specified path is returned.
            If it's a relative path, then it will be combined with the
            current output path. If this is <c>null</c> then the base
            output directory is returned.
            </param>
            <returns>An output directory.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetRootFile(Wyam.Common.IO.FilePath)">
            <summary>
            Gets a file representing a root file.
            </summary>
            <param name="path">
            The path of the root file. If this is an absolute path,
            then a file representing the specified path is returned.
            If it's a relative path, then it will be combined with the
            current root path.
            </param>
            <returns>A root file.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetRootDirectory(Wyam.Common.IO.DirectoryPath)">
            <summary>
            Gets a directory representing a root directory.
            </summary>
            <param name="path">
            The path of the root directory. If this is an absolute path,
            then a directory representing the specified path is returned.
            If it's a relative path, then it will be combined with the
            current root path. If this is <c>null</c> then the base
            root directory is returned.
            </param>
            <returns>A root directory.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetTempPath(Wyam.Common.IO.FilePath)">
            <summary>
            Gets a temp file path by combining it with the root path and temp path.
            </summary>
            <param name="path">The path to combine with the root path and temp path.</param>
            <returns>The temp file path.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetTempPath(Wyam.Common.IO.DirectoryPath)">
            <summary>
            Gets a temp directory path by combining it with the root path and temp path.
            </summary>
            <param name="path">The path to combine with the root path and temp path.
            If this is <c>null</c>, returns the root path combined with the temp path.</param>
            <returns>The temp directory path.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetTempFile(Wyam.Common.IO.FilePath)">
            <summary>
            Gets a file representing a temp file.
            </summary>
            <param name="path">
            If this is an absolute path,
            then a file representing the specified path is returned.
            If it's a relative path, then it will be combined with the
            current temp path.
            </param>
            <returns>A temp file.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetTempFile">
            <summary>
            Gets a file representing a temp file with a random file name.
            </summary>
            <returns>A temp file.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetTempDirectory(Wyam.Common.IO.DirectoryPath)">
            <summary>
            Gets a directory representing temp files.
            </summary>
            <param name="path">
            The path of the temp directory. If this is an absolute path,
            then a directory representing the specified path is returned.
            If it's a relative path, then it will be combined with the
            current temp path. If this is <c>null</c> then the base
            temp directory is returned.
            </param>
            <returns>A temp directory.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetFile(Wyam.Common.IO.FilePath)">
            <summary>
            Gets an absolute file.
            </summary>
            <param name="path">
            The absolute path of the file.
            </param>
            <returns>A file.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetDirectory(Wyam.Common.IO.DirectoryPath)">
            <summary>
            Gets an absolute directory.
            </summary>
            <param name="path">
            The absolute path of the directory.
            </param>
            <returns>A directory.</returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetFiles(System.String[])">
            <summary>
            Gets matching files based on globbing patterns from the root path or absolute paths.
            </summary>
            <param name="patterns">The globbing patterns and/or absolute paths.</param>
            <returns>
            All files in the specified directory that match the globbing patterns and/or absolute paths.
            </returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetFiles(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Gets matching files based on globbing patterns from the root path or absolute paths.
            </summary>
            <param name="patterns">The globbing patterns and/or absolute paths.</param>
            <returns>
            All files in the specified directory that match the globbing patterns and/or absolute paths.
            </returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetFiles(Wyam.Common.IO.IDirectory,System.String[])">
            <summary>
            Gets matching files based on globbing patterns and/or absolute paths. If any absolute paths
            are provided, only those that actually exist are returned.
            </summary>
            <param name="directory">The directory to search.</param>
            <param name="patterns">The globbing patterns and/or absolute paths.</param>
            <returns>
            All files in the specified directory that match the globbing patterns and/or absolute paths.
            </returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetFiles(Wyam.Common.IO.IDirectory,System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Gets matching files based on globbing patterns and/or absolute paths. If any absolute paths
            are provided, only those that actually exist are returned.
            </summary>
            <param name="directory">The directory to search.</param>
            <param name="patterns">The globbing patterns and/or absolute paths.</param>
            <returns>
            All files in the specified directory that match the globbing patterns and/or absolute paths.
            </returns>
        </member>
        <member name="M:Wyam.Common.IO.IReadOnlyFileSystem.GetFileProvider(Wyam.Common.IO.NormalizedPath)">
            <summary>
            Gets the registered file provider for a specified path.
            </summary>
            <param name="path">The path to get the file provider for.</param>
            <returns>The file provider for the specified path.</returns>
        </member>
        <member name="T:Wyam.Common.IO.NormalizedPath">
            <summary>
            Provides properties and instance methods for working with paths.
            </summary>
        </member>
        <member name="F:Wyam.Common.IO.NormalizedPath.DefaultFileProvider">
            <summary>
            The default file provider.
            </summary>
        </member>
        <member name="M:Wyam.Common.IO.NormalizedPath.#ctor(System.String,Wyam.Common.IO.PathKind)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.NormalizedPath" /> class.
            </summary>
            <param name="path">The path.</param>
            <param name="pathKind">Specifies whether the path is relative, absolute, or indeterminate.</param>
        </member>
        <member name="M:Wyam.Common.IO.NormalizedPath.#ctor(System.String,System.String,Wyam.Common.IO.PathKind)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.NormalizedPath" /> class
            with the given provider.
            </summary>
            <param name="fileProvider">The provider for this path.</param>
            <param name="path">The path.</param>
            <param name="pathKind">Specifies whether the path is relative, absolute, or indeterminate.</param>
        </member>
        <member name="M:Wyam.Common.IO.NormalizedPath.#ctor(System.Uri,System.String,Wyam.Common.IO.PathKind)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.NormalizedPath" /> class
            with the given provider.
            </summary>
            <param name="fileProvider">The provider for this path.</param>
            <param name="path">The path.</param>
            <param name="pathKind">Specifies whether the path is relative, absolute, or indeterminate.</param>
        </member>
        <member name="M:Wyam.Common.IO.NormalizedPath.#ctor(System.Uri)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.NormalizedPath" /> class. The new path
            will be absolute if the specified URI is absolute, otherwise it will be relative.
            </summary>
            <param name="path">The path as a URI.</param>
        </member>
        <member name="M:Wyam.Common.IO.NormalizedPath.#ctor(System.Tuple{System.Uri,System.String},System.Boolean,Wyam.Common.IO.PathKind)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.IO.NormalizedPath" /> class.
            </summary>
            <param name="providerAndPath">The provider and path as a Tuple so it can
            be passed from both of the other constructors.</param>
            <param name="fullySpecified">If set to <c>true</c> indicates that this constructor was
            called from one where the provider and path were fully specified (as opposed to being inferred).</param>
            <param name="pathKind">Specifies whether the path is relative, absolute, or indeterminate.</param>
        </member>
        <member name="M:Wyam.Common.IO.NormalizedPath.GetFileProviderAndPath(System.Uri,System.String)">
            <summary>
            Gets the provider and path from a path string. Implemented as a static
            so it can be used in a constructor chain. Internal for testing.
            </summary>
            <param name="uriPath">The URI-based path.</param>
            <param name="stringPath">The string-based path.</param>
            <returns>The provider (item 1) and path (item 2).</returns>
        </member>
        <member name="P:Wyam.Common.IO.NormalizedPath.FullPath">
            <summary>
            Gets the full path.
            </summary>
            <value>The full path.</value>
        </member>
        <member name="P:Wyam.Common.IO.NormalizedPath.IsRelative">
            <summary>
            Gets a value indicating whether this path is relative.
            </summary>
            <value>
            <c>true</c> if this path is relative; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="P:Wyam.Common.IO.NormalizedPath.IsAbsolute">
            <summary>
            Gets or sets a value indicating whether this path is absolute.
            </summary>
            <value>
            <c>true</c> if this path is absolute; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="P:Wyam.Common.IO.NormalizedPath.Segments">
            <summary>
            Gets the segments making up the path.
            </summary>
            <value>The segments making up the path.</value>
        </member>
        <member name="P:Wyam.Common.IO.NormalizedPath.FileProvider">
            <summary>
            Gets the file provider for this path. If this is a relative path,
            the file provider will always be <c>null</c>. If this is an absolute
            path and the file provider is <c>null</c> it indicates the path
            is not intended for use with an actual file provider.
            </summary>
            <value>
            The file provider for this path.
            </value>
        </member>
        <member name="P:Wyam.Common.IO.NormalizedPath.Root">
            <summary>
            Gets the root of this path or "." if this is a relative path
            or there is no root.
            </summary>
            <value>
            The root of this path.
            </value>
        </member>
        <member name="M:Wyam.Common.IO.NormalizedPath.ToString">
            <summary>
            Returns a <see cref="T:System.String" /> that represents this path.
            </summary>
            <returns>
            A <see cref="T:System.String" /> that represents this instance.
            </returns>
        </member>
        <member name="M:Wyam.Common.IO.NormalizedPath.GetHashCode">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.IO.NormalizedPath.Equals(System.Object)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.IO.NormalizedPath.CompareTo(System.Object)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.IO.NormalizedPath.CompareTo(Wyam.Common.IO.NormalizedPath)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Common.IO.PathCollection`1">
            <summary>
            An ordered collection of unique <see cref="T:Wyam.Common.IO.NormalizedPath"/>.
            </summary>
            <typeparam name="TPath">The type of the path (file or directory).</typeparam>
        </member>
        <member name="M:Wyam.Common.IO.PathCollection`1.#ctor">
            <summary>
            Initializes a new path collection.
            </summary>
        </member>
        <member name="M:Wyam.Common.IO.PathCollection`1.#ctor(System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Initializes a new path collection.
            </summary>
            <param name="paths">The paths.</param>
        </member>
        <member name="M:Wyam.Common.IO.PathCollection`1.GetEnumerator">
            <summary>
            Returns an enumerator that iterates through the collection.
            </summary>
            <returns>
            An <c>IEnumerator&lt;TPath&gt;</c> that can be used to iterate through the collection.
            </returns>
        </member>
        <member name="P:Wyam.Common.IO.PathCollection`1.Count">
            <summary>
            Gets the number of directories in the collection.
            </summary>
            <value>The number of directories in the collection.</value>
        </member>
        <member name="P:Wyam.Common.IO.PathCollection`1.Item(System.Int32)">
            <summary>
            Gets or sets the <see cref="T:Wyam.Common.IO.DirectoryPath" /> at the specified index.
            </summary>
            <value>
            The <see cref="T:Wyam.Common.IO.DirectoryPath" /> at the specified index.
            </value>
            <param name="index">The index.</param>
            <returns>The path at the specified index.</returns>
        </member>
        <member name="M:Wyam.Common.IO.PathCollection`1.Add(`0)">
            <summary>
            Adds the specified path to the collection.
            </summary>
            <param name="path">The path to add.</param>
            <returns>
            <c>true</c> if the path was added; <c>false</c> if the path was already present.
            </returns>
        </member>
        <member name="M:Wyam.Common.IO.PathCollection`1.AddRange(System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Adds the specified paths to the collection.
            </summary>
            <param name="paths">The paths to add.</param>
        </member>
        <member name="M:Wyam.Common.IO.PathCollection`1.Clear">
            <summary>
            Clears all paths from the collection.
            </summary>
        </member>
        <member name="M:Wyam.Common.IO.PathCollection`1.Contains(`0)">
            <summary>
            Determines whether the collection contains the specified path.
            </summary>
            <param name="path">The path.</param>
            <returns><c>true</c> if the collection contains the path, otherwise <c>false</c>.</returns>
        </member>
        <member name="M:Wyam.Common.IO.PathCollection`1.Remove(`0)">
            <summary>
            Removes the specified path.
            </summary>
            <param name="path">The path to remove.</param>
            <returns><c>true</c> if the collection contained the path, otherwise <c>false</c>.</returns>
        </member>
        <member name="M:Wyam.Common.IO.PathCollection`1.RemoveRange(System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Removes the specified paths from the collection.
            </summary>
            <param name="paths">The paths to remove.</param>
        </member>
        <member name="M:Wyam.Common.IO.PathCollection`1.IndexOf(`0)">
            <summary>
            Returns the index of the specified path.
            </summary>
            <param name="path">The path.</param>
            <returns>The index of the specified path, or -1 if not found.</returns>
        </member>
        <member name="M:Wyam.Common.IO.PathCollection`1.Insert(System.Int32,`0)">
            <summary>
            Inserts the path at the specified index.
            </summary>
            <param name="index">The index where the path should be inserted.</param>
            <param name="path">The path to insert.</param>
            <returns><c>true</c> if the collection did not contain the path and it was inserted, otherwise <c>false</c></returns>
        </member>
        <member name="M:Wyam.Common.IO.PathCollection`1.RemoveAt(System.Int32)">
            <summary>
            Removes the path at the specified index.
            </summary>
            <param name="index">The index where the path should be removed.</param>
        </member>
        <member name="T:Wyam.Common.IO.PathEqualityComparer">
            <summary>
            Compares <see cref="T:Wyam.Common.IO.NormalizedPath"/> instances.
            </summary>
        </member>
        <member name="M:Wyam.Common.IO.PathEqualityComparer.Equals(Wyam.Common.IO.NormalizedPath,Wyam.Common.IO.NormalizedPath)">
            <summary>
            Determines whether the specified <see cref="T:Wyam.Common.IO.NormalizedPath"/> instances are equal.
            </summary>
            <param name="x">The first <see cref="T:Wyam.Common.IO.NormalizedPath"/> to compare.</param>
            <param name="y">The second <see cref="T:Wyam.Common.IO.NormalizedPath"/> to compare.</param>
            <returns>
            True if the specified <see cref="T:Wyam.Common.IO.NormalizedPath"/> instances are equal; otherwise, false.
            </returns>
        </member>
        <member name="M:Wyam.Common.IO.PathEqualityComparer.GetHashCode(Wyam.Common.IO.NormalizedPath)">
            <summary>
            Returns a hash code for the specified <see cref="T:Wyam.Common.IO.NormalizedPath"/>.
            </summary>
            <param name="obj">The path.</param>
            <returns>
            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
            </returns>
        </member>
        <member name="T:Wyam.Common.IO.PathKind">
            <summary>
            The kind of the path.
            </summary>
        </member>
        <member name="F:Wyam.Common.IO.PathKind.Absolute">
            <summary>
            The path is absolute.
            </summary>
        </member>
        <member name="F:Wyam.Common.IO.PathKind.Relative">
            <summary>
            The path is relative.
            </summary>
        </member>
        <member name="F:Wyam.Common.IO.PathKind.RelativeOrAbsolute">
            <summary>
            The path can be either relative or absolute.
            </summary>
        </member>
        <member name="T:Wyam.Common.JavaScript.IJavaScriptEngine">
            <summary>
            A common interface to a JavaScript engine. Every JavaScript engine is
            obtained from a <see cref="T:Wyam.Common.JavaScript.IJavaScriptEnginePool"/> and will be returned to the
            pool when it is disposed. Therefore, you must dispose the engine when
            you are done with it.
            </summary>
        </member>
        <member name="P:Wyam.Common.JavaScript.IJavaScriptEngine.Name">
            <summary>
            Gets the name of JavaScript engine.
            </summary>
        </member>
        <member name="P:Wyam.Common.JavaScript.IJavaScriptEngine.Version">
            <summary>
            Gets the version of original JavaScript engine.
            </summary>
        </member>
        <member name="P:Wyam.Common.JavaScript.IJavaScriptEngine.SupportsScriptPrecompilation">
            <summary>
            Gets a value that indicates if the JavaScript engine supports script pre-compilation.
            </summary>
        </member>
        <member name="P:Wyam.Common.JavaScript.IJavaScriptEngine.SupportsScriptInterruption">
            <summary>
            Gets a value that indicates if the JavaScript engine supports script interruption.
            </summary>
        </member>
        <member name="P:Wyam.Common.JavaScript.IJavaScriptEngine.SupportsGarbageCollection">
            <summary>
            Gets a value that indicates if the JavaScript engine supports garbage collection.
            </summary>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.Precompile(System.String)">
            <summary>
            Creates a pre-compiled script from JavaScript code.
            </summary>
            <param name="code">JavaScript code</param>
            <returns>A pre-compiled script that can be executed by different instances of JavaScript engine</returns>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.Precompile(System.String,System.String)">
            <summary>
            Creates a pre-compiled script from JavaScript code.
            </summary>
            <param name="code">JavaScript code</param>
            <param name="documentName">Document name</param>
            <returns>A pre-compiled script that can be executed by different instances of JavaScript engine</returns>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.PrecompileFile(System.String,System.Text.Encoding)">
            <summary>
            Creates a pre-compiled script from JavaScript file.
            </summary>
            <param name="path">Path to the JavaScript file</param>
            <param name="encoding">Text encoding</param>
            <returns>A pre-compiled script that can be executed by different instances of JavaScript engine</returns>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.PrecompileResource(System.String,System.Type)">
            <summary>
            Creates a pre-compiled script from embedded JavaScript resource
            </summary>
            <param name="resourceName">The case-sensitive resource name without the namespace of the specified type</param>
            <param name="type">The type, that determines the assembly and whose namespace is used to scope the resource name</param>
            <returns>A pre-compiled script that can be executed by different instances of JavaScript engine</returns>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.PrecompileResource(System.String,System.Reflection.Assembly)">
            <summary>
            Creates a pre-compiled script from embedded JavaScript resource.
            </summary>
            <param name="resourceName">The case-sensitive resource name</param>
            <param name="assembly">The assembly, which contains the embedded resource</param>
            <returns>A pre-compiled script that can be executed by different instances of JavaScript engine</returns>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.Evaluate(System.String)">
            <summary>
            Evaluates an expression.
            </summary>
            <param name="expression">JavaScript expression.</param>
            <returns>Result of the expression.</returns>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.Evaluate(System.String,System.String)">
            <summary>
            Evaluates an expression.
            </summary>
            <param name="expression">JavaScript expression</param>
            <param name="documentName">Document name</param>
            <returns>Result of the expression</returns>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.Evaluate``1(System.String)">
            <summary>
            Evaluates an expression.
            </summary>
            <typeparam name="T">Type of result.</typeparam>
            <param name="expression">JavaScript expression.</param>
            <returns>Result of the expression.</returns>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.Evaluate``1(System.String,System.String)">
            <summary>
            Evaluates an expression.
            </summary>
            <typeparam name="T">Type of result</typeparam>
            <param name="expression">JavaScript expression</param>
            <param name="documentName">Document name</param>
            <returns>Result of the expression</returns>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.Execute(System.String)">
            <summary>
            Executes JavaScript code.
            </summary>
            <param name="code">The JavaScript code to execute.</param>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.Execute(System.String,System.String)">
            <summary>
            Executes a JavaScript code.
            </summary>
            <param name="code">JavaScript code</param>
            <param name="documentName">Document name</param>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.Execute(Wyam.Common.JavaScript.IPrecompiledJavaScript)">
            <summary>
            Executes a pre-compiled script.
            </summary>
            <param name="precompiledScript">A pre-compiled script that can be executed by different instances of JavaScript engine</param>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.ExecuteFile(System.String,System.Text.Encoding)">
            <summary>
            Executes code from JavaScript file.
            </summary>
            <param name="path">Path to the JavaScript file.</param>
            <param name="encoding">Text encoding.</param>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.ExecuteResource(System.String,System.Type)">
            <summary>
            Executes code from embedded JavaScript resource.
            </summary>
            <param name="resourceName">The case-sensitive resource name without the namespace of the specified type.</param>
            <param name="type">The type, that determines the assembly and whose namespace is used to scope
            the resource name.</param>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.ExecuteResource(System.String,System.Reflection.Assembly)">
            <summary>
            Executes code from embedded JavaScript resource.
            </summary>
            <param name="resourceName">The case-sensitive resource name.</param>
            <param name="assembly">The assembly, which contains the embedded resource.</param>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.CallFunction(System.String,System.Object[])">
            <summary>
            Calls a JavaScript function.
            </summary>
            <param name="functionName">Function name.</param>
            <param name="args">Function arguments.</param>
            <returns>Result of the function execution.</returns>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.CallFunction``1(System.String,System.Object[])">
            <summary>
            Calls a JavaScript function.
            </summary>
            <typeparam name="T">Type of function result.</typeparam>
            <param name="functionName">Function name.</param>
            <param name="args">Function arguments.</param>
            <returns>Result of the function execution.</returns>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.HasVariable(System.String)">
            <summary>
            Checks for the existence of a variable.
            </summary>
            <param name="variableName">Variable name.</param>
            <returns><c>true</c> if the variable exists, otherwise <c>false</c>.</returns>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.GetVariableValue(System.String)">
            <summary>
            Gets the value of variable.
            </summary>
            <param name="variableName">Variable name.</param>
            <returns>Value of variable.</returns>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.GetVariableValue``1(System.String)">
            <summary>
            Gets the value of variable.
            </summary>
            <typeparam name="T">Type of variable.</typeparam>
            <param name="variableName">Variable name.</param>
            <returns>Value of variable.</returns>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.SetVariableValue(System.String,System.Object)">
            <summary>
            Sets the value of variable.
            </summary>
            <param name="variableName">Variable name.</param>
            <param name="value">Value of variable.</param>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.RemoveVariable(System.String)">
            <summary>
            Removes a variable.
            </summary>
            <param name="variableName">Variable name.</param>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.EmbedHostObject(System.String,System.Object)">
            <summary>
            Embeds a host object to script code.
            </summary>
            <param name="itemName">The name for the new global variable or function that will represent the object.</param>
            <param name="value">The object to expose.</param>
            <remarks>Allows to embed instances of simple classes (or structures) and delegates.</remarks>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.EmbedHostType(System.String,System.Type)">
            <summary>
            Embeds a host type to script code.
            </summary>
            <param name="itemName">The name for the new global variable that will represent the type.</param>
            <param name="type">The type to expose.</param>
            <remarks>
            Host types are exposed to script code in the form of objects whose properties and
            methods are bound to the type's static members.
            </remarks>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.Interrupt">
            <summary>
            Interrupts script execution and causes the JavaScript engine to throw an exception.
            </summary>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEngine.CollectGarbage">
            <summary>
            Performs a full garbage collection.
            </summary>
        </member>
        <member name="T:Wyam.Common.JavaScript.IJavaScriptEnginePool">
            <summary>
            Provides a shared pool of JavaScript engine instances. You should dispose the pool when
            no longer needed to properly dispose of any allocated engines.
            </summary>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEnginePool.GetEngine(System.Nullable{System.TimeSpan})">
            <summary>
            Gets an engine from the pool. This engine should be disposed when you are finished with it.
            If an engine is free, this method returns immediately with the engine.
            If no engines are available but we have not reached the maximum number of engines
            yet, creates a new engine. If the maximum number of engines has been reached, blocks until an engine is
            available again.
            </summary>
            <param name="timeout">
            Maximum time to wait for a free engine. If not specified, defaults to the timeout
            specified when creating the pool.
            </param>
            <returns>A JavaScript engine.</returns>
        </member>
        <member name="P:Wyam.Common.JavaScript.IJavaScriptEnginePool.EngineCount">
            <summary>
            Gets the total number of engines in this engine pool, including engines that are currently busy.
            </summary>
        </member>
        <member name="P:Wyam.Common.JavaScript.IJavaScriptEnginePool.AvailableEngineCount">
            <summary>
            Gets the number of currently available engines in this engine pool.
            </summary>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEnginePool.DisposeEngine(Wyam.Common.JavaScript.IJavaScriptEngine,System.Boolean)">
            <summary>
            Disposes the specified engine.
            </summary>
            <param name="engine">Engine to dispose</param>
            <param name="repopulateEngines">
            If <c>true</c>, a new engine will be created to replace the disposed engine
            </param>
        </member>
        <member name="M:Wyam.Common.JavaScript.IJavaScriptEnginePool.Recycle">
            <summary>
            Disposes all engines in this pool, and creates new engines in their place.
            </summary>
        </member>
        <member name="T:Wyam.Common.JavaScript.IPrecompiledJavaScript">
            <summary>
            Represents a pre-compiled JavaScript script that can be executed by different instances of the JavaScript engine.
            </summary>
        </member>
        <member name="P:Wyam.Common.JavaScript.IPrecompiledJavaScript.EngineName">
            <summary>
            Gets a name of JavaScript engine for which the pre-compiled script was created.
            </summary>
        </member>
        <member name="T:Wyam.Common.Meta.CachedDelegateMetadataValue">
            <summary>
            This class uses a delegate to get a metadata value. The result of the delegate
            will be cached and the cached value will be returned for subsequent calls to <see cref="M:Wyam.Common.Meta.CachedDelegateMetadataValue.Get(Wyam.Common.Meta.IMetadata)"/>.
            </summary>
        </member>
        <member name="M:Wyam.Common.Meta.CachedDelegateMetadataValue.#ctor(System.Func{Wyam.Common.Meta.IMetadata,System.Object})">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.Meta.CachedDelegateMetadataValue"/> class.
            The specified delegate should be thread-safe.
            </summary>
            <param name="value">The delegate that returns the metadata value.</param>
        </member>
        <member name="M:Wyam.Common.Meta.CachedDelegateMetadataValue.Get(Wyam.Common.Meta.IMetadata)">
            <summary>
            Lazily loads a metadata value. This method will be called
            for each request and the return object will
            be processed like any other metadata value. The implementation
            of this method must be thread-safe.
            </summary>
            <param name="metadata">The metadata object requesting the value.</param>
            <returns>The object to use as the value.</returns>
        </member>
        <member name="T:Wyam.Common.Meta.ConvertingDictionary">
            <summary>
            A dictionary with metadata type conversion superpowers.
            </summary>
            <remarks>
            This class wraps an underlying <see cref="T:System.Collections.Generic.Dictionary`2"/> but
            uses the provided <see cref="T:Wyam.Common.Execution.IExecutionContext"/> to perform type conversions
            when requesting values.
            </remarks>
        </member>
        <member name="P:Wyam.Common.Meta.ConvertingDictionary.Item(System.String)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Meta.ConvertingDictionary.System#Collections#Generic#IReadOnlyDictionary{System#String,System#Object}#Item(System.String)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Meta.ConvertingDictionary.Count">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Meta.ConvertingDictionary.Keys">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Meta.ConvertingDictionary.Values">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Meta.ConvertingDictionary.IsReadOnly">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Meta.ConvertingDictionary.System#Collections#Generic#IReadOnlyDictionary{System#String,System#Object}#Keys">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Meta.ConvertingDictionary.System#Collections#Generic#IReadOnlyDictionary{System#String,System#Object}#Values">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.Add(System.String,System.Object)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.Add(System.Collections.Generic.KeyValuePair{System.String,System.Object})">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.Clear">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.Contains(System.Collections.Generic.KeyValuePair{System.String,System.Object})">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.ContainsKey(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.CopyTo(System.Collections.Generic.KeyValuePair{System.String,System.Object}[],System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.Get(System.String,System.Object)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.Get``1(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.Get``1(System.String,``0)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.GetEnumerator">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.GetRaw(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.Remove(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.Remove(System.Collections.Generic.KeyValuePair{System.String,System.Object})">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.TryGetValue(System.String,[email protected])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.TryGetValue``1(System.String,``[email protected])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.System#Collections#IEnumerable#GetEnumerator">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.GetMetadata(System.String[])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.ConvertingDictionary.MetadataAs``1">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Common.Meta.DelegateMetadataValue">
            <summary>
            This class uses a delegate to get a metadata value.
            </summary>
        </member>
        <member name="M:Wyam.Common.Meta.DelegateMetadataValue.#ctor(System.Func{Wyam.Common.Meta.IMetadata,System.Object})">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Common.Meta.DelegateMetadataValue"/> class.
            The specified delegate should be thread-safe.
            </summary>
            <param name="value">The delegate that returns the metadata value.</param>
        </member>
        <member name="M:Wyam.Common.Meta.DelegateMetadataValue.Get(Wyam.Common.Meta.IMetadata)">
            <summary>
            Lazily loads a metadata value. This method will be called
            for each request and the return object will
            be processed like any other metadata value. The implementation
            of this method must be thread-safe.
            </summary>
            <param name="metadata">The metadata object requesting the value.</param>
            <returns>The object to use as the value.</returns>
        </member>
        <member name="T:Wyam.Common.Meta.IMetadata">
            <summary>
            Contains a set of metadata with flexible runtime conversion methods. Metadata keys are case-insensitive.
            </summary>
        </member>
        <member name="M:Wyam.Common.Meta.IMetadata.MetadataAs``1">
            <summary>
            Presents metadata values as a specific type (see <see cref="T:Wyam.Common.Meta.IMetadata"/>).
            </summary>
            <typeparam name="T">The type metadata values should be converted to.</typeparam>
            <returns>A strongly-typed <see cref="T:Wyam.Common.Meta.IMetadata"/> object that returns values converted to type T.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.IMetadata.Get(System.String,System.Object)">
            <summary>
            Gets the value for the specified key. This method never throws an exception. It will return the specified
            default value or null if the key is not found.
            </summary>
            <param name="key">The key of the value to get.</param>
            <param name="defaultValue">The default value to use if the key is not found.</param>
            <returns>The value for the specified key or the specified default value.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.IMetadata.GetRaw(System.String)">
            <summary>
            Gets the raw value for the specified key. This method will not materialize <see cref="T:Wyam.Common.Meta.IMetadataValue"/>
            values the way <see cref="M:Wyam.Common.Meta.IMetadata.Get(System.String,System.Object)"/> will. A <see cref="T:System.Collections.Generic.KeyNotFoundException"/> will be thrown
            for missing keys.
            </summary>
            <param name="key">The key of the value to get.</param>
            <returns>The raw value for the specified ke.y</returns>
        </member>
        <member name="M:Wyam.Common.Meta.IMetadata.Get``1(System.String)">
            <summary>
            Gets the value for the specified key converted to the specified type.
            This method never throws an exception. It will return default(T) if the key is not found
            or the value cannot be converted to T.
            </summary>
            <typeparam name="T">The desired return type.</typeparam>
            <param name="key">The key of the value to get.</param>
            <returns>The value for the specified key converted to type T or default(T) if the key is not found or cannot be converted to type T.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.IMetadata.Get``1(System.String,``0)">
            <summary>
            Gets the value for the specified key. This method never throws an exception. It will return the specified
            default value if the key is not found.
            </summary>
            <typeparam name="T">The desired return type.</typeparam>
            <param name="key">The key of the value to get.</param>
            <param name="defaultValue">The default value to use if the key is not found or cannot be converted to type T.</param>
            <returns>The value for the specified key converted to type T or the specified default value.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.IMetadata.TryGetValue``1(System.String,``[email protected])">
            <summary>
            Tries to get the value for the specified key.
            </summary>
            <typeparam name="T">The desired return type.</typeparam>
            <param name="key">The key of the value to get.</param>
            <param name="value">The value of the key if it was found and could be converted to the desired return type.</param>
            <returns><c>true</c> if the key was found and the value could be converted to the desired return type, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.IMetadata.GetMetadata(System.String[])">
            <summary>
            Gets a new <see cref="T:Wyam.Common.Meta.IMetadata"/> containing only the specified keys and their values. If a key is not present in the current
            metadata, it will be ignored and will not be copied to the new metadata object.
            </summary>
            <param name="keys">The keys to include in the new metadata object.</param>
            <returns>A new <see cref="T:Wyam.Common.Meta.IMetadata"/> containing the specified keys and their values.</returns>
        </member>
        <member name="T:Wyam.Common.Meta.IMetadata`1">
            <summary>
            Contains a set of metadata converted to type <typeparamref name="T"/>.
            The conversion is designed to be flexible and several different methods of type
            conversion are tried. Only those values that can be converted to type <typeparamref name="T"/>
            are actually included in the dictionary.
            </summary>
            <typeparam name="T">The type all metadata values should be converted to.</typeparam>
        </member>
        <member name="M:Wyam.Common.Meta.IMetadata`1.Get(System.String)">
            <summary>Gets the value associated with the specified key converted to <typeparamref name="T"/>.</summary>
            <param name="key">The key of the value to get.</param>
            <returns>The converted value for the specified key or <c>default(T)</c> if not found.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.IMetadata`1.Get(System.String,`0)">
            <summary>Gets the value associated with the specified key converted to <typeparamref name="T"/>.</summary>
            <param name="key">The key of the value to get.</param>
            <param name="defaultValue">The default value to use if either the key is not found or the underlying type is not convertible.</param>
            <returns>The converted value for the specified key or <paramref name="defaultValue"/> if not found.</returns>
        </member>
        <member name="T:Wyam.Common.Meta.IMetadataDictionary">
            <summary>
            A mutable <see cref="T:Wyam.Common.Meta.IMetadata"/> implementation that works like a dictionary.
            </summary>
        </member>
        <member name="P:Wyam.Common.Meta.IMetadataDictionary.Count">
            <summary>
            The count of metadata.
            </summary>
        </member>
        <member name="M:Wyam.Common.Meta.IMetadataDictionary.ContainsKey(System.String)">
            <summary>
            Whether or not the metadata contains the specified key.
            </summary>
            <param name="key">The key.</param>
            <returns><c>true</c> if the key is contained in metadata, <c>false</c> otherwise.</returns>
        </member>
        <member name="P:Wyam.Common.Meta.IMetadataDictionary.Keys">
            <summary>
            A collection of keys in the metadata.
            </summary>
        </member>
        <member name="P:Wyam.Common.Meta.IMetadataDictionary.Values">
            <summary>
            A collection of values in the metadata.
            </summary>
        </member>
        <member name="M:Wyam.Common.Meta.IMetadataDictionary.TryGetValue(System.String,[email protected])">
            <summary>
            Attempts to get a value from metadata.
            </summary>
            <param name="key">The metadata key.</param>
            <param name="value">The metadata value.</param>
            <returns><c>true</c> if the key is contained in metadata, <c>false</c> otherwise.</returns>
        </member>
        <member name="P:Wyam.Common.Meta.IMetadataDictionary.Item(System.String)">
            <summary>
            Gets a metadata value given the specified metadata key.
            </summary>
            <param name="key">The metadata key.</param>
            <returns>The value at the specified key.</returns>
        </member>
        <member name="T:Wyam.Common.Meta.IMetadataValue">
            <summary>
            Implement this interface to provide lazy metadata values or values based on other metadata.
            </summary>
        </member>
        <member name="M:Wyam.Common.Meta.IMetadataValue.Get(Wyam.Common.Meta.IMetadata)">
            <summary>
            Lazily loads a metadata value. This method will be called
            for each request and the return object will
            be processed like any other metadata value. The implementation
            of this method must be thread-safe.
            </summary>
            <param name="metadata">The metadata object requesting the value.</param>
            <returns>The object to use as the value.</returns>
        </member>
        <member name="T:Wyam.Common.Meta.Keys">
            <summary>
            Common metadata keys for modules in the core library.
            </summary>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.Host">
            <summary>
            The host to use when generating links.
            </summary>
            <type><see cref="T:System.String"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.LinksUseHttps">
            <summary>
            Indicates if generated links should use HTTPS instead of HTTP as the scheme.
            </summary>
            <type><see cref="T:System.Boolean"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.LinkRoot">
            <summary>
            The default root path to use when generating links
            (for example, <code>"/virtual/directory"</code>).
            Note that you may also want to use the <code>--virtual-dir</code>
            argument on the command line when using this setting so that
            the preview server serves the site at the same path as the generated links
            (for example, <code>--virtual-dir "/virtual/directory"</code>).
            </summary>
            <type><see cref="T:System.String"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.LinkHideIndexPages">
            <summary>
            Indicates whether to hide index pages by default when generating links.
            </summary>
            <type><see cref="T:System.Boolean"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.LinkHideExtensions">
            <summary>
            Indicates whether to hide ".html" and ".htm" extensions by default when generating links.
            </summary>
            <type><see cref="T:System.Boolean"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.LinkLowercase">
            <summary>
            Indicates that links should always be rendered in lowercase.
            </summary>
            <type><see cref="T:System.Boolean"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.UseCache">
            <summary>
            Indicates whether caching should be used.
            </summary>
            <type><see cref="T:System.Boolean"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.CleanOutputPath">
            <summary>
            Indicates whether to clean the output path on each execution.
            </summary>
            <type><see cref="T:System.Boolean"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.DateTimeInputCulture">
            <summary>
            Indicates the culture to use for reading and interpreting dates as input.
            </summary>
            <type><see cref="T:System.String"/> or <see cref="T:System.Globalization.CultureInfo"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.DateTimeDisplayCulture">
            <summary>
            Indicates the culture to use for displaying dates in output.
            </summary>
            <type><see cref="T:System.String"/> or <see cref="T:System.Globalization.CultureInfo"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.SourceFileRoot">
            <summary>
            The absolute root search path without any nested directories
            (I.e., the path that was searched, and possibly descended, for the given pattern).
            </summary>
            <type><see cref="T:Wyam.Common.IO.DirectoryPath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.SourceFileBase">
            <summary>
            The name of the original file without extension.
            </summary>
            <type><see cref="T:Wyam.Common.IO.FilePath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.SourceFileExt">
            <summary>
            The extension of the original file (including the ".").
            </summary>
            <type><see cref="T:System.String"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.SourceFileName">
            <summary>
            The file name of the original file with extension.
            </summary>
            <type><see cref="T:Wyam.Common.IO.FilePath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.SourceFileDir">
            <summary>
            The absolute path to the folder of the original file.
            </summary>
            <type><see cref="T:Wyam.Common.IO.DirectoryPath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.SourceFilePath">
            <summary>
            The absolute path to the original file.
            </summary>
            <type><see cref="T:Wyam.Common.IO.FilePath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.SourceFilePathBase">
            <summary>
            The absolute path to the original file without the file extension.
            </summary>
            <type><see cref="T:Wyam.Common.IO.FilePath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.RelativeFilePath">
            <summary>
            The path to the file relative to the input folder. This metadata
            value is used when generating links to the document.
            </summary>
            <type><see cref="T:Wyam.Common.IO.FilePath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.RelativeFilePathBase">
            <summary>
            The path to the file relative to the input folder without extension.
            </summary>
            <type><see cref="T:Wyam.Common.IO.FilePath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.RelativeFileDir">
            <summary>
            The path to the folder containing the file relative to the input folder.
            </summary>
            <type><see cref="T:Wyam.Common.IO.DirectoryPath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.DestinationFileBase">
            <summary>
            The file name without any extension. Equivalent
            to <c>Path.GetFileNameWithoutExtension(DestinationFilePath)</c>.
            </summary>
            <type><see cref="T:Wyam.Common.IO.FilePath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.DestinationFileExt">
            <summary>
            The extension of the file. Equivalent
            to <c>Path.GetExtension(DestinationFilePath)</c>.
            </summary>
            <type><see cref="T:System.String"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.DestinationFileName">
            <summary>
            The full file name. Equivalent
            to <c>Path.GetFileName(DestinationFilePath)</c>.
            </summary>
            <type><see cref="T:Wyam.Common.IO.FilePath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.DestinationFileDir">
            <summary>
            The full absolute directory of the file.
            Equivalent to <c>Path.GetDirectoryName(DestinationFilePath)</c>.
            </summary>
            <type><see cref="T:Wyam.Common.IO.DirectoryPath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.DestinationFilePath">
            <summary>
            The full absolute path (including file name)
            of the destination file.
            </summary>
            <type><see cref="T:Wyam.Common.IO.FilePath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.DestinationFilePathBase">
            <summary>
            The full absolute path (including file name)
            of the destination file without the file extension.
            </summary>
            <type><see cref="T:Wyam.Common.IO.FilePath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.WriteExtension">
            <summary>
            The extension to use when writing the file.
            </summary>
            <type><see cref="T:System.String"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.WriteFileName">
            <summary>
            The file name to use when writing the file.
            </summary>
            <type><see cref="T:Wyam.Common.IO.FilePath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.WritePath">
            <summary>
            The path to use when writing the file.
            </summary>
            <type><see cref="T:Wyam.Common.IO.FilePath"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.PageDocuments">
            <summary>
            Contains all the documents for the current page.
            </summary>
            <type><c>IEnumerable&lt;IDocument&gt;</c></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.CurrentPage">
            <summary>
            The index of the current page (1 based).
            </summary>
            <type><see cref="T:System.Int32"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.TotalPages">
            <summary>
            The total number of pages.
            </summary>
            <type><see cref="T:System.Int32"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.TotalItems">
            <summary>
            The total number of items across all pages.
            </summary>
            <type><see cref="T:System.Int32"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.HasNextPage">
            <summary>
            Whether there is another page after this one.
            </summary>
            <type><see cref="T:System.Boolean"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.HasPreviousPage">
            <summary>
            Whether there is another page before this one.
            </summary>
            <type><see cref="T:System.Boolean"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.NextPage">
            <summary>
            The next page.
            </summary>
            <type><see cref="T:Wyam.Common.Documents.IDocument"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.PreviousPage">
            <summary>
            The previous page.
            </summary>
            <type><see cref="T:Wyam.Common.Documents.IDocument"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.GroupDocuments">
            <summary>
            Contains all the documents for the current group.
            </summary>
            <type><c>IEnumerable&lt;IDocument&gt;</c></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.GroupKey">
            <summary>
            The key for the current group.
            </summary>
            <type><see cref="T:System.Object"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.Index">
            <summary>
            The one-based index of the current document relative to other documents in the pipeline.
            </summary>
            <type><see cref="T:System.Int32"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.SitemapItem">
            <summary>
            Contains a document-specific sitemap item for use when generating a sitemap.
            </summary>
            <type><see cref="T:Wyam.Common.Modules.Contents.SitemapItem"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.SourceUri">
            <summary>
            The URI where the document was downloaded from.
            </summary>
            <type><see cref="T:System.String"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.SourceHeaders">
            <summary>
            The web headers of the document.
            </summary>
            <type><c>Dictionary&lt;string, string&gt;</c></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.Parent">
            <summary>
            The parent of this node or <c>null</c> if it is a root.
            </summary>
            <type><see cref="T:Wyam.Common.Documents.IDocument"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.Children">
            <summary>
            All the children of this node.
            </summary>
            <type><see cref="T:System.Collections.Generic.IReadOnlyCollection`1"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.PreviousSibling">
            <summary>
            The previous sibling, that is the previous node in the children
            collection of the parent or <c>null</c> if this is the first node in the collection or the parent is null.
            </summary>
            <type><see cref="T:Wyam.Common.Documents.IDocument"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.NextSibling">
            <summary>
            The next sibling, that is the next node in the children collection
            of the parent or <c>null</c> if this is the last node in the collection or the parent is null.
            </summary>
            <type><see cref="T:Wyam.Common.Documents.IDocument"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.Next">
            <summary>
            The next node in the tree using a depth-first
            search or <c>null</c> if this was the last node.
            </summary>
            <type><see cref="T:Wyam.Common.Documents.IDocument"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.Previous">
            <summary>
            The previous node in the tree using a depth-first
            search or <c>null</c> if this was the first node.
            </summary>
            <type><see cref="T:Wyam.Common.Documents.IDocument"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.TreePath">
            <summary>
            The path that represents this node in the tree.
            </summary>
            <type><see cref="T:System.Array"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.TreePlaceholder">
            <summary>
            Gets set on documents that were created as a placeholder for tree roots.
            </summary>
            <type><see cref="T:System.Boolean"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.Title">
            <summary>
            The calculated title of the document.
            </summary>
            <type><see cref="T:System.String"/></type>
        </member>
        <member name="F:Wyam.Common.Meta.Keys.RedirectFrom">
            <summary>
            The path(s) where the document should be redirected from.
            </summary>
            <type><see cref="T:Wyam.Common.IO.FilePath"/></type>
        </member>
        <member name="T:Wyam.Common.Meta.MetadataConversionExtensions">
            <summary>
            Extensions to make it easier to get typed information from metadata.
            </summary>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataConversionExtensions.String(Wyam.Common.Meta.IMetadata,System.String,System.String)">
            <summary>
            Gets the value for the specified key converted to a string. This method never throws an exception. It will return the specified
            default value if the key is not found.
            </summary>
            <param name="metadata">The metadata containing the value.</param>
            <param name="key">The key of the value to get.</param>
            <param name="defaultValue">The default value to use if the key is not found or cannot be converted to a string.</param>
            <returns>The value for the specified key converted to a string or the specified default value.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataConversionExtensions.String(Wyam.Common.Meta.IMetadata,System.String,System.Func{System.String,System.String},System.String)">
            <summary>
            Formats a string value if it exists in the metadata, otherwise returns a default value.
            </summary>
            <param name="metadata">The metadata containing the value.</param>
            <param name="key">The key of the value to get.</param>
            <param name="formatFunc">A formatting function to apply to the string value of the specified key.</param>
            <param name="defaultValue">The default value to use if the key is not found.</param>
            <returns>The formatted value of the specified key if it exists or the specified default value.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataConversionExtensions.Bool(Wyam.Common.Meta.IMetadata,System.String,System.Boolean)">
            <summary>
            Gets the value for the specified key converted to a bool. This method never throws an exception. It will return the specified
            default value if the key is not found.
            </summary>
            <param name="metadata">The metadata containing the value.</param>
            <param name="key">The key of the value to get.</param>
            <param name="defaultValue">The default value to use if the key is not found or cannot be converted to a bool.</param>
            <returns>The value for the specified key converted to a bool or the specified default value.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataConversionExtensions.DateTime(Wyam.Common.Meta.IMetadata,System.String,System.DateTime)">
            <summary>
            Gets the value for the specified key converted to a <see cref="M:Wyam.Common.Meta.MetadataConversionExtensions.DateTime(Wyam.Common.Meta.IMetadata,System.String,System.DateTime)"/>. This method never throws an exception. It will return the specified
            default value if the key is not found.
            </summary>
            <param name="metadata">The metadata containing the value.</param>
            <param name="key">The key of the value to get.</param>
            <param name="defaultValue">The default value to use if the key is not found or cannot be converted to a <see cref="M:Wyam.Common.Meta.MetadataConversionExtensions.DateTime(Wyam.Common.Meta.IMetadata,System.String,System.DateTime)"/>.</param>
            <returns>The value for the specified key converted to a <see cref="M:Wyam.Common.Meta.MetadataConversionExtensions.DateTime(Wyam.Common.Meta.IMetadata,System.String,System.DateTime)"/> or the specified default value.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataConversionExtensions.FilePath(Wyam.Common.Meta.IMetadata,System.String,Wyam.Common.IO.FilePath)">
            <summary>
            Gets the value for the specified key converted to a <see cref="M:Wyam.Common.Meta.MetadataConversionExtensions.FilePath(Wyam.Common.Meta.IMetadata,System.String,Wyam.Common.IO.FilePath)"/>. This method never throws an exception. It will
            return the specified default value if the key is not found or if the string value can't be converted to a <see cref="M:Wyam.Common.Meta.MetadataConversionExtensions.FilePath(Wyam.Common.Meta.IMetadata,System.String,Wyam.Common.IO.FilePath)"/>.
            </summary>
            <param name="metadata">The metadata containing the value.</param>
            <param name="key">The key of the value to get.</param>
            <param name="defaultValue">The default value to use if the key is not found or cannot be converted to a <see cref="M:Wyam.Common.Meta.MetadataConversionExtensions.FilePath(Wyam.Common.Meta.IMetadata,System.String,Wyam.Common.IO.FilePath)"/>.</param>
            <returns>The value for the specified key converted to a <see cref="M:Wyam.Common.Meta.MetadataConversionExtensions.FilePath(Wyam.Common.Meta.IMetadata,System.String,Wyam.Common.IO.FilePath)"/> or the specified default value.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataConversionExtensions.DirectoryPath(Wyam.Common.Meta.IMetadata,System.String,Wyam.Common.IO.DirectoryPath)">
            <summary>
            Gets the value for the specified key converted to a <see cref="M:Wyam.Common.Meta.MetadataConversionExtensions.DirectoryPath(Wyam.Common.Meta.IMetadata,System.String,Wyam.Common.IO.DirectoryPath)"/>. This method never throws an exception. It will
            return the specified default value if the key is not found or if the string value can't be converted to a <see cref="M:Wyam.Common.Meta.MetadataConversionExtensions.DirectoryPath(Wyam.Common.Meta.IMetadata,System.String,Wyam.Common.IO.DirectoryPath)"/>.
            </summary>
            <param name="metadata">The metadata containing the value.</param>
            <param name="key">The key of the value to get.</param>
            <param name="defaultValue">The default value to use if the key is not found or cannot be converted to a <see cref="M:Wyam.Common.Meta.MetadataConversionExtensions.DirectoryPath(Wyam.Common.Meta.IMetadata,System.String,Wyam.Common.IO.DirectoryPath)"/>.</param>
            <returns>The value for the specified key converted to a <see cref="M:Wyam.Common.Meta.MetadataConversionExtensions.DirectoryPath(Wyam.Common.Meta.IMetadata,System.String,Wyam.Common.IO.DirectoryPath)"/> or the specified default value.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataConversionExtensions.List``1(Wyam.Common.Meta.IMetadata,System.String,System.Collections.Generic.IReadOnlyList{``0})">
            <summary>
            Gets the value for the specified key converted to a <see cref="T:System.Collections.Generic.IReadOnlyList`1"/>. This method never throws an exception. It will return the specified
            default value if the key is not found. Note that if the value is atomic, the conversion operation will succeed and return a list with one item.
            </summary>
            <typeparam name="T">The type to convert to.</typeparam>
            <param name="metadata">The metadata containing the value.</param>
            <param name="key">The key of the value to get.</param>
            <param name="defaultValue">The default value to use if the key is not found or cannot be converted to a list.</param>
            <returns>The value for the specified key converted to a list or the specified default value.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataConversionExtensions.Document(Wyam.Common.Meta.IMetadata,System.String,Wyam.Common.Documents.IDocument)">
            <summary>
            Gets the value for the specified key converted to a <see cref="T:Wyam.Common.Documents.IDocument"/>. This method never throws an exception.
            It will return null if the key is not found.
            </summary>
            <param name="metadata">The metadata containing the value.</param>
            <param name="key">The key of the document to get.</param>
            <param name="defaultValue">The default value to use if the key is not found or cannot be converted to a document.</param>
            <returns>The value for the specified key converted to a string or null.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataConversionExtensions.DocumentList(Wyam.Common.Meta.IMetadata,System.String,System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument})">
            <summary>
            Gets the value for the specified key converted to a <c>IReadOnlyList&lt;IDocument&gt;</c>. This method never throws an exception.
            It will return null if the key is not found and an empty list if the key is found but contains no items that can be converted to <see cref="T:Wyam.Common.Documents.IDocument"/>.
            </summary>
            <param name="metadata">The metadata containing the value.</param>
            <param name="key">The key of the documents to get.</param>
            <param name="defaultValue">The default value to use if the key is not found or cannot be converted to a document list.</param>
            <returns>The value for the specified key converted to a list or null.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataConversionExtensions.Dynamic(Wyam.Common.Meta.IMetadata,System.String,System.Object)">
            <summary>
            Gets the value associated with the specified key as a dynamic object. This is equivalent
            to calling <c>as dynamic</c> to cast the value.
            </summary>
            <param name="metadata">The metadata containing the value.</param>
            <param name="key">The key of the value to get.</param>
            <param name="defaultValue">The default value to use if either the key is not found or the
            underlying value is null (since the dynamic runtime binder can't bind null values).</param>
            <returns>A dynamic value for the specific key or default value.</returns>
        </member>
        <member name="T:Wyam.Common.Meta.MetadataItem">
            <summary>
            Provides slightly nicer syntax than <c>KeyValuePair&lt;string, object&gt;</c> for working
            with metadata. Also contains a constructor that makes adding delegate-based metadata easier.
            </summary>
        </member>
        <member name="P:Wyam.Common.Meta.MetadataItem.Pair">
            <summary>
            Gets the underlying <c>KeyValuePair&lt;TKey, TValue&gt;</c>.
            </summary>
        </member>
        <member name="P:Wyam.Common.Meta.MetadataItem.Key">
            <summary>
            Gets the key of the item.
            </summary>
        </member>
        <member name="P:Wyam.Common.Meta.MetadataItem.Value">
            <summary>
            Gets the value of the item.
            </summary>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItem.#ctor(System.Collections.Generic.KeyValuePair{System.String,System.Object})">
            <summary>
            Creates a new metadata item with a specified key-value pair.
            </summary>
            <param name="pair">The key-value pair.</param>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItem.#ctor(System.String,System.Object)">
            <summary>
            Creates a new metadata item with the specified key and value.
            </summary>
            <param name="key">The key.</param>
            <param name="value">The value.</param>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItem.#ctor(System.String,System.Func{Wyam.Common.Meta.IMetadata,System.Object},System.Boolean)">
            <summary>
            This creates a new metadata value based on the specified delegate that will get
            evaluated on every value request. Note that the delegate function should be thread-safe.
            </summary>
            <param name="key">The key.</param>
            <param name="value">The value delegate.</param>
            <param name="cacheValue">if set to <c>true</c>, cache the value after the first request.</param>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItem.op_Implicit(System.Collections.Generic.KeyValuePair{System.String,System.Object})~Wyam.Common.Meta.MetadataItem">
            <summary>
            Converts a key-value pair to a <see cref="T:Wyam.Common.Meta.MetadataItem"/>.
            </summary>
            <param name="pair">The key-value pair to convert.</param>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItem.op_Implicit(Wyam.Common.Meta.MetadataItem)~System.Collections.Generic.KeyValuePair{System.String,System.Object}">
            <summary>
            Converts a <see cref="T:Wyam.Common.Meta.MetadataItem"/> to a key-value pair.
            </summary>
            <param name="item">The metadata item to convert.</param>
        </member>
        <member name="T:Wyam.Common.Meta.MetadataItems">
            <summary>
            A collection of metadata items.
            </summary>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.GetEnumerator">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.System#Collections#IEnumerable#GetEnumerator">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.Add(System.String,System.Object)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.Add(System.Collections.Generic.KeyValuePair{System.String,System.Object})">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.Add(System.String,System.Func{Wyam.Common.Meta.IMetadata,System.Object},System.Boolean)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.Add(Wyam.Common.Meta.MetadataItem)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.AddRange(System.Collections.Generic.IEnumerable{Wyam.Common.Meta.MetadataItem})">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.Clear">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.Contains(Wyam.Common.Meta.MetadataItem)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.CopyTo(Wyam.Common.Meta.MetadataItem[],System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.Remove(Wyam.Common.Meta.MetadataItem)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Meta.MetadataItems.Count">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Meta.MetadataItems.IsReadOnly">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.IndexOf(Wyam.Common.Meta.MetadataItem)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.Insert(System.Int32,Wyam.Common.Meta.MetadataItem)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.RemoveAt(System.Int32)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Meta.MetadataItems.Item(System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.System#Collections#Generic#IEnumerable{System#Collections#Generic#KeyValuePair{System#String,System#Object}}#GetEnumerator">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.Contains(System.Collections.Generic.KeyValuePair{System.String,System.Object})">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.CopyTo(System.Collections.Generic.KeyValuePair{System.String,System.Object}[],System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.Remove(System.Collections.Generic.KeyValuePair{System.String,System.Object})">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.IndexOf(System.Collections.Generic.KeyValuePair{System.String,System.Object})">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataItems.Insert(System.Int32,System.Collections.Generic.KeyValuePair{System.String,System.Object})">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Meta.MetadataItems.System#Collections#Generic#IList{System#Collections#Generic#KeyValuePair{System#String,System#Object}}#Item(System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Meta.MetadataXmlExtensions.XAttribute(Wyam.Common.Meta.IMetadata,System.String)">
            <summary>
            Gets an XML attribute for the given metadata key.
            The name of the attribute will be the lower-case key name.
            </summary>
            <param name="metadata">The metadata containing the value.</param>
            <param name="key">The key containing the attribute value.</param>
            <returns>The attribute if the key was found, <c>null</c> if not.</returns>
        </member>
        <member name="M:Wyam.Common.Meta.MetadataXmlExtensions.XAttribute(Wyam.Common.Meta.IMetadata,System.String,System.String)">
            <summary>
            Gets an XML attribute for the given metadata key.
            </summary>
            <param name="metadata">The metadata containing the value.</param>
            <param name="name">The name of the XML attribute.</param>
            <param name="key">The key containing the attribute value.</param>
            <returns>The attribute if the key was found, <c>null</c> if not.</returns>
        </member>
        <member name="T:Wyam.Common.Modules.ContainerModule">
            <summary>
            A base class for modules that contain a collection of child modules.
            </summary>
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.#ctor(System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Creates a new container module with the specified child modules.
            Any <c>null</c> items in the sequence of modules will be discarded.
            </summary>
            <param name="modules">The child modules.</param>
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.GetEnumerator">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.Add(Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.Clear">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.Contains(Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.CopyTo(Wyam.Common.Modules.IModule[],System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.Remove(Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.Remove(System.String)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Modules.ContainerModule.Count">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.Add(Wyam.Common.Modules.IModule[])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.Insert(System.Int32,Wyam.Common.Modules.IModule[])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.IndexOf(System.String)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Modules.ContainerModule.IsReadOnly">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.IndexOf(Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.Insert(System.Int32,Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.RemoveAt(System.Int32)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Modules.ContainerModule.Item(System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.Contains(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.TryGetValue(System.String,[email protected])">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Modules.ContainerModule.Item(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.Add(System.String,Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.Insert(System.Int32,System.String,Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContainerModule.AsKeyValuePairs">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Common.Modules.ContentModule">
            <summary>
            This class can be used as a base class for modules that operate on arbitrary content (as represented by an object).
            </summary>
        </member>
        <member name="M:Wyam.Common.Modules.ContentModule.#ctor(System.Object)">
            <summary>
            Creates a new content module with the specified content.
            </summary>
            <param name="content">The content.</param>
        </member>
        <member name="M:Wyam.Common.Modules.ContentModule.#ctor(Wyam.Common.Configuration.ContextConfig)">
            <summary>
            Creates a new content module with the specified content delegate.
            </summary>
            <param name="content">The content delegate.</param>
        </member>
        <member name="M:Wyam.Common.Modules.ContentModule.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Creates a new content module with the specified content delegate.
            </summary>
            <param name="content">The content delegate.</param>
        </member>
        <member name="M:Wyam.Common.Modules.ContentModule.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            Creates a new content module with the content determined by child modules.
            </summary>
            <remarks>
            If only one input document is available, it will be used as the initial document for the specified modules.
            If more than one document is available, an empty initial document will be used.
            To force usage of each input document in a set (I.e., A, B, and C input documents specify a unique "template" metadata value and you want to append
            some result of operating on that template value to each), make the content module a child of the ForEach module.
            Each input will be applied against each result from the specified modules (I.e., if 2 inputs and the module chain results in 2 outputs, there will be 4 total outputs).
            </remarks>
            <param name="modules">The child modules.</param>
        </member>
        <member name="M:Wyam.Common.Modules.ContentModule.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ContentModule.Execute(System.Object,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <summary>
            Executes the module with the specified content against a single document.
            Note that content can be passed in as null, implementers should guard against that.
            </summary>
            <param name="content">The content.</param>
            <param name="input">The input document.</param>
            <param name="context">The execution context.</param>
            <returns>Result documents.</returns>
        </member>
        <member name="T:Wyam.Common.Modules.Contents.ChangeFrequency">
            <summary>
            The change frequency for each item in the site map.
            </summary>
        </member>
        <member name="F:Wyam.Common.Modules.Contents.ChangeFrequency.Always">
            <summary>
            The item always changes.
            </summary>
        </member>
        <member name="F:Wyam.Common.Modules.Contents.ChangeFrequency.Hourly">
            <summary>
            The item changes hourly.
            </summary>
        </member>
        <member name="F:Wyam.Common.Modules.Contents.ChangeFrequency.Daily">
            <summary>
            The item changes daily.
            </summary>
        </member>
        <member name="F:Wyam.Common.Modules.Contents.ChangeFrequency.Weekly">
            <summary>
            The item changes weekly.
            </summary>
        </member>
        <member name="F:Wyam.Common.Modules.Contents.ChangeFrequency.Monthly">
            <summary>
            The item changes monthly.
            </summary>
        </member>
        <member name="F:Wyam.Common.Modules.Contents.ChangeFrequency.Yearly">
            <summary>
            The item changes yearly.
            </summary>
        </member>
        <member name="F:Wyam.Common.Modules.Contents.ChangeFrequency.Never">
            <summary>
            The item never changes.
            </summary>
        </member>
        <member name="T:Wyam.Common.Modules.Contents.SitemapItem">
            <summary>
            Represents an item in the site map.
            </summary>
        </member>
        <member name="P:Wyam.Common.Modules.Contents.SitemapItem.Location">
            <summary>
            Gets or sets the location of the sitemap item.
            </summary>
        </member>
        <member name="P:Wyam.Common.Modules.Contents.SitemapItem.LastModUtc">
            <summary>
            Gets or sets the last modified time of the item in UTC.
            </summary>
        </member>
        <member name="P:Wyam.Common.Modules.Contents.SitemapItem.ChangeFrequency">
            <summary>
            Gets or sets the expected frequency of changes of the item.
            </summary>
        </member>
        <member name="P:Wyam.Common.Modules.Contents.SitemapItem.Priority">
            <summary>
            Gets or sets the priority of the item.
            </summary>
        </member>
        <member name="M:Wyam.Common.Modules.Contents.SitemapItem.#ctor(System.String)">
            <summary>
            Creates a new sitemap item at the specified location.
            </summary>
            <param name="location">The location of the sitemap item.</param>
        </member>
        <member name="T:Wyam.Common.Modules.IAsNewDocuments">
            <summary>
            Implement this interface for any module you want to support the <c>AsNewDocuments()</c>
            extension method, which overrides document creation within the module to always produce
            new documents instead of cloning existing ones.
            </summary>
        </member>
        <member name="T:Wyam.Common.Modules.IModule">
            <summary>
            The primary module interface for classes that can transform or otherwise operate on documents.
            </summary>
        </member>
        <member name="M:Wyam.Common.Modules.IModule.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <summary>
            This should not be called directly, instead call <c>IExecutionContext.Execute()</c> if you need to execute a module from within another module.
            </summary>
            <param name="inputs">The input documents to this module.</param>
            <param name="context">The execution context that can be used to access information about the environment and engine services.</param>
            <returns>A set of result documents (possibly the same as the input documents).</returns>
        </member>
        <member name="T:Wyam.Common.Modules.IModuleList">
            <summary>
            A collection of optionally named modules. Implementations should "unwrap" <see cref="T:Wyam.Common.Modules.NamedModule"/>
            objects to obtain the module name.
            </summary>
        </member>
        <member name="M:Wyam.Common.Modules.IModuleList.Add(System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Adds a module to the list with a specified name.
            </summary>
            <param name="name">The name of the module to add.</param>
            <param name="module">The module to add.</param>
        </member>
        <member name="M:Wyam.Common.Modules.IModuleList.Add(Wyam.Common.Modules.IModule[])">
            <summary>
            Adds modules to the list.
            Any <c>null</c> items in the sequence of modules will be discarded.
            </summary>
            <param name="modules">The modules to add.</param>
        </member>
        <member name="M:Wyam.Common.Modules.IModuleList.Insert(System.Int32,System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Inserts a module into the list with a specified name.
            </summary>
            <param name="index">The index at which to insert the module.</param>
            <param name="name">The name of the inserted module.</param>
            <param name="module">The module to insert/</param>
        </member>
        <member name="M:Wyam.Common.Modules.IModuleList.Insert(System.Int32,Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts modules into the list.
            Any <c>null</c> items in the sequence of modules will be discarded.
            </summary>
            <param name="index">The index at which to insert the modules.</param>
            <param name="modules">The modules to insert.</param>
        </member>
        <member name="M:Wyam.Common.Modules.IModuleList.Remove(System.String)">
            <summary>
            Removes a module by name.
            </summary>
            <param name="name">The name of the module to remove.</param>
            <returns><c>true</c> if a module with the specified name was found and removed, otherwise <c>false</c>.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.IModuleList.IndexOf(System.String)">
            <summary>
            Gets the index of the module with the specified name.
            </summary>
            <param name="name">The name of the module.</param>
            <returns>The index of the module with the specified name.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.IModuleList.Contains(System.String)">
            <summary>
            Determines if the list contains a module with the specified name.
            </summary>
            <param name="name">The name of the module.</param>
            <returns><c>true</c> if a module exists with the specified name, otherwise <c>false</c>.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.IModuleList.TryGetValue(System.String,[email protected])">
            <summary>
            Attempts to get a module with the specified name.
            </summary>
            <param name="name">The name of the module.</param>
            <param name="value">The module with the specified name.</param>
            <returns><c>true</c> if a module was found with the specified name, otherwise <c>false</c>.</returns>
        </member>
        <member name="P:Wyam.Common.Modules.IModuleList.Item(System.String)">
            <summary>
            Gets the module with the specified name.
            </summary>
            <param name="name">The name of the module.</param>
            <returns>The module with the specified name.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.IModuleList.AsKeyValuePairs">
            <summary>
            Returns the list as a sequence of key-value pairs with the keys being
            the module names and the values being the module instances.
            </summary>
            <returns>The list as a sequence of key-value pairs.</returns>
        </member>
        <member name="T:Wyam.Common.Modules.IReadOnlyModuleList">
            <summary>
            A collection of optionally named modules.
            </summary>
        </member>
        <member name="M:Wyam.Common.Modules.IReadOnlyModuleList.IndexOf(System.String)">
            <summary>
            Gets the index of a named module.
            </summary>
            <param name="name">The name of the module.</param>
            <returns>The index of the requested module or -1 if not found.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.IReadOnlyModuleList.Contains(System.String)">
            <summary>
            Determines whether the list contains a module with a given name.
            </summary>
            <param name="name">The name of the module.</param>
            <returns><c>true</c> if a module with the given name exists in the list, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.IReadOnlyModuleList.TryGetValue(System.String,[email protected])">
            <summary>
            Attempts to get a module with a given name.
            </summary>
            <param name="name">The name of the module.</param>
            <param name="value">The module instance.</param>
            <returns><c>true</c> if a module with the given name exists in the list, <c>false</c> otherwise.</returns>
        </member>
        <member name="P:Wyam.Common.Modules.IReadOnlyModuleList.Item(System.String)">
            <summary>
            Gets a module with a given name.
            </summary>
            <param name="name">The name of the module.</param>
            <returns>The module instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.IReadOnlyModuleList.AsKeyValuePairs">
            <summary>
            Casts the list to a <c>IEnumerable&lt;KeyValuePair&lt;string, IModule&gt;&gt;</c>.
            </summary>
            <returns>An enumerable of <see cref="T:System.Collections.Generic.KeyValuePair`2"/>.</returns>
        </member>
        <member name="T:Wyam.Common.Modules.ModuleExtensions">
            <summary>
            Extension methods for <see cref="T:Wyam.Common.Modules.IModule"/>.
            </summary>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleExtensions.WithName(Wyam.Common.Modules.IModule,System.String)">
            <summary>
            Converts the module to a named module.
            </summary>
            <param name="module">The module to provide a name for.</param>
            <param name="name">The name to provide to the module.</param>
            <returns>The named module.</returns>
        </member>
        <member name="T:Wyam.Common.Modules.ModuleList">
            <summary>
            A collection of optionally named modules.
            </summary>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.#ctor">
            <summary>
            Creates a new empty module list.
            </summary>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            Creates a new module list with an initial set of modules.
            Any <c>null</c> items in the sequence of modules will be discarded.
            </summary>
            <param name="modules">The initial modules in the list.</param>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.#ctor(System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Creates a new module list with an initial set of modules.
            Any <c>null</c> items in the sequence of modules will be discarded.
            </summary>
            <param name="modules">The initial modules in the list.</param>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.Add(Wyam.Common.Modules.IModule[])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.Add(Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.Add(System.String,Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.Insert(System.Int32,Wyam.Common.Modules.IModule[])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.Insert(System.Int32,Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.Insert(System.Int32,System.String,Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.Remove(Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.Remove(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.RemoveAt(System.Int32)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Modules.ModuleList.Item(System.Int32)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Modules.ModuleList.Item(System.String)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Modules.ModuleList.Count">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.Clear">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.Contains(Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.Contains(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.CopyTo(Wyam.Common.Modules.IModule[],System.Int32)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Common.Modules.ModuleList.IsReadOnly">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.IndexOf(Wyam.Common.Modules.IModule)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.TryGetValue(System.String,[email protected])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.IndexOf(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.AsKeyValuePairs">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Common.Modules.ModuleList.GetEnumerator">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Common.Modules.ModuleListExtensions">
            <summary>
            Extensions for use with <see cref="T:Wyam.Common.Modules.ModuleList"/>.
            </summary>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.Append``1(``0,Wyam.Common.Modules.IModule[])">
            <summary>
            Appends modules.
            </summary>
            <typeparam name="TModuleList">The type of the module list.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="modules">The modules to append.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.Append``1(``0,System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Appends a named module.
            </summary>
            <typeparam name="TModuleList">The type of the module list.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="name">The name of the module to append.</param>
            <param name="module">The module to append.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.Prepend``1(``0,Wyam.Common.Modules.IModule[])">
            <summary>
            Prepends modules.
            </summary>
            <typeparam name="TModuleList">The type of the module list.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="modules">The modules to prepend.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.Prepend``1(``0,System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Prepends a named module.
            </summary>
            <typeparam name="TModuleList">The type of the module list.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="name">The name of the module to prepend.</param>
            <param name="module">The module to prepend.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertAfter``1(``0,System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts modules after the module with the specified name.
            </summary>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="afterName">The name of the module at which to insert the specified modules.</param>
            <param name="modules">The modules to insert.</param>
            <typeparam name="TModuleList">The type of the module list.</typeparam>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertAfter``1(``0,System.String,System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Inserts modules after the module with the specified name.
            </summary>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="afterName">The name of the module at which to insert the specified modules.</param>
            <param name="name">The name of the module to insert.</param>
            <param name="module">The module to insert.</param>
            <typeparam name="TModuleList">The type of the module list.</typeparam>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertBefore``1(``0,System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts modules before the module with the specified name.
            </summary>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="beforeName">The name of the module at which to insert the specified modules.</param>
            <param name="modules">The modules to insert.</param>
            <typeparam name="TModuleList">The type of the module list.</typeparam>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertBefore``1(``0,System.String,System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Inserts modules before the module with the specified name.
            </summary>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="beforeName">The name of the module at which to insert the specified modules.</param>
            <param name="name">The name of the module to insert.</param>
            <param name="module">The module to insert.</param>
            <typeparam name="TModuleList">The type of the module list.</typeparam>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertBeforeFirst``1(Wyam.Common.Modules.IModuleList,Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts modules before the first module in the list of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the specified modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="modules">The modules to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertBeforeFirst``1(Wyam.Common.Modules.IModuleList,System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Inserts modules before the first module in the list of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the specified modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="name">The name of the module to insert.</param>
            <param name="module">The module to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertBeforeFirst``1(Wyam.Common.Modules.IModuleList,System.Predicate{``0},Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts modules before the first module in the list of the specified type that satisfies a predicate.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="filter">A predicate determining at which module to insert the specified modules.</param>
            <param name="modules">The modules to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertBeforeFirst``1(Wyam.Common.Modules.IModuleList,System.Predicate{``0},System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Inserts modules before the first module in the list of the specified type that satisfies a predicate.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="filter">A predicate determining at which module to insert the specified modules.</param>
            <param name="name">The name of the module to insert.</param>
            <param name="module">The module to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertAfterFirst``1(Wyam.Common.Modules.IModuleList,Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts modules after the first module in the list of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the specified modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="modules">The modules to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertAfterFirst``1(Wyam.Common.Modules.IModuleList,System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Inserts modules after the first module in the list of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the specified modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="name">The name of the module to insert.</param>
            <param name="module">The module to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertAfterFirst``1(Wyam.Common.Modules.IModuleList,System.Predicate{``0},Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts modules after the first module in the list of the specified type that satisfies a predicate.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="filter">A predicate determining at which module to insert the specified modules.</param>
            <param name="modules">The modules to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertAfterFirst``1(Wyam.Common.Modules.IModuleList,System.Predicate{``0},System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Inserts modules after the first module in the list of the specified type that satisfies a predicate.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="filter">A predicate determining at which module to insert the specified modules.</param>
            <param name="name">The name of the module to insert.</param>
            <param name="module">The module to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertBeforeLast``1(Wyam.Common.Modules.IModuleList,Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts modules before the last module in the list of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the specified modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="modules">The modules to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertBeforeLast``1(Wyam.Common.Modules.IModuleList,System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Inserts modules before the last module in the list of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the specified modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="name">The name of the module to insert.</param>
            <param name="module">The module to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertBeforeLast``1(Wyam.Common.Modules.IModuleList,System.Predicate{``0},Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts modules before the last module in the list of the specified type that satisfies a predicate.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="filter">A predicate determining at which module to insert the specified modules.</param>
            <param name="modules">The modules to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertBeforeLast``1(Wyam.Common.Modules.IModuleList,System.Predicate{``0},System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Inserts modules before the last module in the list of the specified type that satisfies a predicate.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="filter">A predicate determining at which module to insert the specified modules.</param>
            <param name="name">The name of the module to insert.</param>
            <param name="module">The module to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertAfterLast``1(Wyam.Common.Modules.IModuleList,Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts modules after the last module in the list of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the specified modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="modules">The modules to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertAfterLast``1(Wyam.Common.Modules.IModuleList,System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Inserts modules after the last module in the list of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the specified modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="name">The name of the module to insert.</param>
            <param name="module">The module to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertAfterLast``1(Wyam.Common.Modules.IModuleList,System.Predicate{``0},Wyam.Common.Modules.IModule[])">
            <summary>
            Inserts modules after the last module in the list of the specified type that satisfies a predicate.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="filter">A predicate determining at which module to insert the specified modules.</param>
            <param name="modules">The modules to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.InsertAfterLast``1(Wyam.Common.Modules.IModuleList,System.Predicate{``0},System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Inserts modules after the last module in the list of the specified type that satisfies a predicate.
            </summary>
            <typeparam name="TModule">The type of the module at which to insert the modules.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="filter">A predicate determining at which module to insert the specified modules.</param>
            <param name="name">The name of the module to insert.</param>
            <param name="module">The module to insert.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.ReplaceFirst``1(Wyam.Common.Modules.IModuleList,Wyam.Common.Modules.IModule,System.String)">
            <summary>
            Replaces the first module in the list of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module to replace.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="module">The replacement module.</param>
            <param name="name">The name of the replacement module.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.ReplaceFirst``1(Wyam.Common.Modules.IModuleList,System.Predicate{``0},Wyam.Common.Modules.IModule,System.String)">
            <summary>
            Replaces the first module in the list of the specified type that satisfies a predicate.
            </summary>
            <typeparam name="TModule">The type of the module to replace.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="filter">A predicate determining which module to replace.</param>
            <param name="module">The replacement module.</param>
            <param name="name">The name of the replacement module.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.ReplaceLast``1(Wyam.Common.Modules.IModuleList,Wyam.Common.Modules.IModule,System.String)">
            <summary>
            Replaces the last module in the list of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module to replace.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="module">The replacement module.</param>
            <param name="name">The name of the replacement module.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.ReplaceLast``1(Wyam.Common.Modules.IModuleList,System.Predicate{``0},Wyam.Common.Modules.IModule,System.String)">
            <summary>
            Replaces the last module in the list of the specified type that satisfies a predicate.
            </summary>
            <typeparam name="TModule">The type of the module to replace.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="filter">A predicate determining which module to replace.</param>
            <param name="module">The replacement module.</param>
            <param name="name">The name of the replacement module.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.Replace``1(``0,System.String,Wyam.Common.Modules.IModule,System.String)">
            <summary>
            Replaces a module with the specified name. The replacement module will have the same name
            as the module being replaced unless an alternate name is specified.
            </summary>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="replaceName">The name of the module to replace.</param>
            <param name="module">The replacement module.</param>
            <param name="name">The name of the replacement module.</param>
            <typeparam name="TModuleList">The type of the module list.</typeparam>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.Replace``1(``0,System.Int32,Wyam.Common.Modules.IModule,System.String)">
            <summary>
            Replaces a module at the specified index.
            </summary>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="index">The index of the module to replace.</param>
            <param name="module">The replacement module.</param>
            <param name="name">An optional name of the replacement module.</param>
            <typeparam name="TModuleList">The type of the module list.</typeparam>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.Modify``1(``0,System.String,System.Action{Wyam.Common.Modules.IModule})">
            <summary>
            Modifies an inner module with the specified name.
            </summary>
            <typeparam name="TModuleList">The type of the module list.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="modifyName">The name of the inner module to modify.</param>
            <param name="action">The action to apply to the inner module.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.Modify``1(``0,System.Int32,System.Action{Wyam.Common.Modules.IModule})">
            <summary>
            Modifies an inner module list with the specified index.
            </summary>
            <typeparam name="TModuleList">The type of the module list.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/>.</param>
            <param name="index">The index of the inner module to modify.</param>
            <param name="action">The action to apply to the inner module.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.GetFirst``1(Wyam.Common.Modules.IModuleList)">
            <summary>
            Gets the first module of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module to find.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/> to search.</param>
            <returns>The first module of the specified type or null if a module of the specified type could not be found.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.GetFirst``1(Wyam.Common.Modules.IModuleList,System.Predicate{``0})">
            <summary>
            Gets the first module of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module to find.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/> to search.</param>
            <param name="filter">A predicate determining which module to find.</param>
            <returns>The first module of the specified type or null if a module of the specified type could not be found.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.GetLast``1(Wyam.Common.Modules.IModuleList)">
            <summary>
            Gets the last module of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module to find.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/> to search.</param>
            <returns>The last module of the specified type or null if a module of the specified type could not be found.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.GetLast``1(Wyam.Common.Modules.IModuleList,System.Predicate{``0})">
            <summary>
            Gets the last module of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module to find.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/> to search.</param>
            <param name="filter">A predicate determining which module to find.</param>
            <returns>The last module of the specified type or null if a module of the specified type could not be found.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.IndexOfFirst``1(Wyam.Common.Modules.IModuleList)">
            <summary>
            Gets the index of the first module of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module to find.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/> to search.</param>
            <returns>The index of the first module of the specified type or -1 if a module of the specified type could not be found.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.IndexOfFirst``1(Wyam.Common.Modules.IModuleList,System.Predicate{``0})">
            <summary>
            Gets the index of the first module of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module to find.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/> to search.</param>
            <param name="filter">A predicate determining which module to find.</param>
            <returns>The index of the first module of the specified type or -1 if a module of the specified type could not be found.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.IndexOfLast``1(Wyam.Common.Modules.IModuleList)">
            <summary>
            Gets the index of the last module of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module to find.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/> to search.</param>
            <returns>The index of the last module of the specified type or -1 if a module of the specified type could not be found.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ModuleListExtensions.IndexOfLast``1(Wyam.Common.Modules.IModuleList,System.Predicate{``0})">
            <summary>
            Gets the index of the last module of the specified type.
            </summary>
            <typeparam name="TModule">The type of the module to find.</typeparam>
            <param name="moduleList">The <see cref="T:Wyam.Common.Modules.ModuleList"/> to search.</param>
            <param name="filter">A predicate determining which module to find.</param>
            <returns>The index of the last module of the specified type or -1 if a module of the specified type could not be found.</returns>
        </member>
        <member name="T:Wyam.Common.Modules.NamedModule">
            <summary>
            Wraps a module and gives it a name for use with <see cref="T:Wyam.Common.Modules.ModuleList"/>.
            </summary>
            <category>Extensibility</category>
        </member>
        <member name="P:Wyam.Common.Modules.NamedModule.Name">
            <summary>
            The name of the module.
            </summary>
        </member>
        <member name="P:Wyam.Common.Modules.NamedModule.Module">
            <summary>
            The wrapped module.
            </summary>
        </member>
        <member name="M:Wyam.Common.Modules.NamedModule.#ctor(System.String,Wyam.Common.Modules.IModule)">
            <summary>
            Wraps a module and gives it the specified name.
            </summary>
            <param name="name">The name of the module.</param>
            <param name="module">The wrapped module.</param>
        </member>
        <member name="M:Wyam.Common.Modules.NamedModule.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
            <summary>
            Passes execution to the wrapped module.
            </summary>
        </member>
        <member name="T:Wyam.Common.Modules.ReadDataModule`2">
            <summary>
            A base class for modules that read documents from data that can be turned into a Dictionary&lt;string,object&gt;.
            </summary>
            <typeparam name="TModule">
            The current module type, allows fluent methods defined in the base class to return the properly typed derived class.
            </typeparam>
            <typeparam name="TItem">
            The type of items this module is designed to process.
            </typeparam>
        </member>
        <member name="M:Wyam.Common.Modules.ReadDataModule`2.WithContentKey(System.String)">
            <summary>
            Specifies which metakey should be used for the document content
            </summary>
            <param name="contentKey">The name of the content property.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ReadDataModule`2.AddKeyConversion(System.String,System.String)">
            <summary>
            Allows renaming of keys during document creation: "If you find key X, create it as key Y instead."
            </summary>
            <param name="originalKeyName">The name of the original key to convert.</param>
            <param name="newKeyName">The name you want to convert the key to.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ReadDataModule`2.IncludeKeys(System.String[])">
            <summary>
            Allows creation of a list of keys to keep. If this list any members, any keys other than those in this list will be discarded.
            </summary>
            <param name="keys">The keys to keep.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ReadDataModule`2.ExcludeKeys(System.String[])">
            <summary>
            Allows creation of a list of keys to discard.
            </summary>
            <param name="keys">The keys to discard.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ReadDataModule`2.WithLimit(System.Int32)">
            <summary>
            Limits the number of created documents.
            </summary>
            <param name="limit">The number of objects to create documents from.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ReadDataModule`2.GetItems(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <summary>
            Gets the items to convert to documents. The <see cref="M:Wyam.Common.Modules.ReadDataModule`2.GetDictionary(`1)"/> method
            is used to convert each item into a series of key-value pairs that is then used for
            document creation.
            </summary>
            <param name="inputs">The input documents.</param>
            <param name="context">The current execution context.</param>
            <returns>The objects to create documents from.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ReadDataModule`2.GetDictionary(`1)">
            <summary>
            Used to convert each object from <see cref="M:Wyam.Common.Modules.ReadDataModule`2.GetItems(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)"/> into a IDictionary&lt;string, object&gt;.
            The base implementation checks if the object implements IDictionary&lt;string, object&gt; and just
            performs a cast is if it does. If not, reflection is used to construct a IDictionary&lt;string, object&gt;
            from all of the object's properties. Override this method to provide an alternate way of getting
            key-value pairs for each object.
            </summary>
            <param name="item">The object to convert to a IDictionary&lt;string, object&gt;.</param>
            <returns>A IDictionary&lt;string, object&gt; containing the data used for document creation.</returns>
        </member>
        <member name="M:Wyam.Common.Modules.ReadDataModule`2.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Common.Shortcodes.IShortcode">
            <summary>
            Contains the code for a given shortcode (see the <c>Shortcodes</c> module).
            </summary>
            <remarks>
            Shortcode instances are created once-per-document and reused for the life of that document.
            An exception is that nested shortcodes are always processed by a new instance of the shortcode
            implementation (which remains in use for that nested content). If a shortcode class also
            implements <see cref="T:System.IDisposable"/>, the shortcode will be disposed at the processing conclusion
            of the document or nested content.
            </remarks>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcode.Execute(System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <summary>
            Executes the shortcode and returns an <see cref="T:Wyam.Common.Shortcodes.IShortcodeResult"/>.
            </summary>
            <param name="args">
            The arguments declared with the shortcode. This contains a list of key-value pairs in the order
            they appeared in the shortcode declaration. If no key was specified, then the <see cref="P:System.Collections.Generic.KeyValuePair`2.Key"/>
            property will be <c>null</c>.
            </param>
            <param name="content">The content of the shortcode.</param>
            <param name="document">The current document (including metadata from previous shortcodes in the same document).</param>
            <param name="context">
            The current execution context. This can be used to obtain the <see cref="T:Wyam.Common.Shortcodes.IShortcodeResult"/> instance
            by calling <see cref="M:Wyam.Common.Execution.IExecutionContext.GetShortcodeResult(System.IO.Stream,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}})"/>.
            </param>
            <returns>
            A shortcode result that contains a stream and new metadata as a result of executing this shortcode.
            The result can be <c>null</c> in which case the shortcode declaration will be removed from the document
            but no replacement content will be added and the metadata will not change.
            </returns>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add``1(System.String)">
            <summary>
            Adds a shortcode by type.
            </summary>
            <typeparam name="TShortcode">The type of the shortcode to add.</typeparam>
            <param name="name">The name of the shortcode.</param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add``1">
            <summary>
            Adds a shortcode by type, infering the name from the type name.
            </summary>
            <typeparam name="TShortcode">The type of the shortcode to add.</typeparam>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.String,System.Type)">
            <summary>
            Adds a shortcode by type.
            </summary>
            <param name="name">The name of the shortcode.</param>
            <param name="type">The type of the shortcode to add (must implement <see cref="T:Wyam.Common.Shortcodes.IShortcode"/>).</param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.Type)">
            <summary>
            Adds a shortcode by type, infering the name from the type name.
            </summary>
            <param name="type">The type of the shortcode to add (must implement <see cref="T:Wyam.Common.Shortcodes.IShortcode"/>).</param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.String,System.String)">
            <summary>
            Adds a shortcode and specifies the result content.
            </summary>
            <param name="name">The name of the shortcode.</param>
            <param name="result">The result of the shortcode.</param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.String,Wyam.Common.Configuration.ContextConfig)">
            <summary>
            Adds a shortcode and uses a <see cref="T:Wyam.Common.Configuration.ContextConfig"/> to determine
            the shortcode result.
            </summary>
            <param name="name">The name of the shortcode.</param>
            <param name="contextConfig">A delegate that should return a <see cref="T:System.String"/>.</param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.String,Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Adds a shortcode and uses a <see cref="T:Wyam.Common.Configuration.DocumentConfig"/> to determine
            the shortcode result.
            </summary>
            <param name="name">The name of the shortcode.</param>
            <param name="documentConfig">A delegate that should return a <see cref="T:System.String"/>.</param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.String,System.Func{System.String,System.String})">
            <summary>
            Adds a shortcode that determines the result content using the declared content.
            </summary>
            <param name="name">The name of the shortcode.</param>
            <param name="func">A function that has the declared content as an input and the result content as an output.</param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.String,System.Func{System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String})">
            <summary>
            Adds a shortcode that determines the result content using the declared arguments.
            </summary>
            <param name="name">The name of the shortcode.</param>
            <param name="func">A function that has the declared arguments as an input and the result content as an output.</param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.String,System.Func{System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String,System.String})">
            <summary>
            Adds a shortcode that determines the result content using the declared arguments and content.
            </summary>
            <param name="name">The name of the shortcode.</param>
            <param name="func">A function that has the declared arguments and content as inputs and the result content as an output.</param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.String,System.Func{System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String,Wyam.Common.Execution.IExecutionContext,System.String})">
            <summary>
            Adds a shortcode that determines the result content
            using the declared arguments and content and the current execution context.
            </summary>
            <param name="name">The name of the shortcode.</param>
            <param name="func">
            A function that has the declared arguments and content and the current execution context as inputs
            and the result content as an output.
            </param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.String,System.Func{System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext,System.String})">
            <summary>
            Adds a shortcode that determines the result content
            using the declared arguments and content and the current document and execution context.
            </summary>
            <param name="name">The name of the shortcode.</param>
            <param name="func">
            A function that has the declared arguments and content and the current document and execution context as inputs
            and the result content as an output.
            </param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.String,System.Func{System.Collections.Generic.KeyValuePair{System.String,System.String}[],Wyam.Common.Execution.IExecutionContext,System.String})">
            <summary>
            Adds a shortcode that determines the result content
            using the declared arguments and the current execution context.
            </summary>
            <param name="name">The name of the shortcode.</param>
            <param name="func">
            A function that has the declared arguments and the current execution context as inputs
            and the result content as an output.
            </param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.String,System.Func{System.Collections.Generic.KeyValuePair{System.String,System.String}[],Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext,System.String})">
            <summary>
            Adds a shortcode that determines the result content
            using the declared arguments and the current document and execution context.
            </summary>
            <param name="name">The name of the shortcode.</param>
            <param name="func">
            A function that has the declared arguments and the current document and execution context as inputs
            and the result content as an output.
            </param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.String,System.Func{System.String,Wyam.Common.Execution.IExecutionContext,System.String})">
            <summary>
            Adds a shortcode that determines the result content
            using the declared content and the current execution context.
            </summary>
            <param name="name">The name of the shortcode.</param>
            <param name="func">
            A function that has the declared content and the current execution context as inputs
            and the result content as an output.
            </param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.String,System.Func{System.String,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext,System.String})">
            <summary>
            Adds a shortcode that determines the result content
            using the declared content and the current document and execution context.
            </summary>
            <param name="name">The name of the shortcode.</param>
            <param name="func">
            A function that has the declared content and the current document and execution context as inputs
            and the result content as an output.
            </param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.IShortcodeCollection.Add(System.String,System.Func{System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext,Wyam.Common.Shortcodes.IShortcodeResult})">
            <summary>
            Adds a shortcode that determines the result content
            using the declared arguments and content and the current document and execution context.
            </summary>
            <param name="name">The name of the shortcode.</param>
            <param name="func">
            A function that has the declared arguments and content and the current document and execution context as inputs
            and a <see cref="T:Wyam.Common.Shortcodes.IShortcodeResult"/> as an output which allows the shortcode to add metadata to the document.
            </param>
        </member>
        <member name="M:Wyam.Common.Shortcodes.ShortcodeExtensions.SingleValue(System.Collections.Generic.KeyValuePair{System.String,System.String}[])">
            <summary>
            Validates that the arguments contain a single value and returns it.
            This will collapse keys and values into a single argument value so that "=" doesn't have to be
            escaped with quotes.
            </summary>
            <param name="args">The original shortcode arguments.</param>
            <returns>The single argument value.</returns>
        </member>
        <member name="M:Wyam.Common.Shortcodes.ShortcodeExtensions.ToValueArray(System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.Int32)">
            <summary>
            Validates that the correct number of unnamed arguments have been used and returns them as an array.
            This will collapse keys and values into a single argument value so that "=" doesn't have to be
            escaped with quotes.
            </summary>
            <param name="args">The original shortcode arguments.</param>
            <param name="count">The count of expected arguments.</param>
            <returns>The argument values.</returns>
        </member>
        <member name="M:Wyam.Common.Shortcodes.ShortcodeExtensions.ToValueArray(System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.Int32,System.Int32)">
            <summary>
            Validates that the correct number of arguments have been used and returns them as an array.
            This will collapse keys and values into a single argument value so that "=" doesn't have to be
            escaped with quotes.
            </summary>
            <param name="args">The original shortcode arguments.</param>
            <param name="minimumCount">The minimum count of expected arguments.</param>
            <param name="maximumCount">The maximum count of expected arguments.</param>
            <returns>The argument values.</returns>
        </member>
        <member name="M:Wyam.Common.Shortcodes.ShortcodeExtensions.ToValueArray(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}})">
            <summary>
            Returns arguments as an array.
            This will collapse keys and values into a single argument value so that "=" doesn't have to be
            escaped with quotes.
            </summary>
            <param name="args">The original shortcode arguments.</param>
            <returns>The argument values.</returns>
        </member>
        <member name="M:Wyam.Common.Shortcodes.ShortcodeExtensions.ToDictionary(System.Collections.Generic.KeyValuePair{System.String,System.String}[],Wyam.Common.Execution.IExecutionContext,System.String[])">
            <summary>
            Converts the shortcode arguments into a dictionary of named parameters.
            This will match un-named positional parameters with their expected position
            after which named parameters will be included. If an un-named positional
            parameter follows named parameters and exception will be thrown.
            </summary>
            <param name="args">The original shortcode arguments.</param>
            <param name="context">The current execution context.</param>
            <param name="keys">The parameter names in expected order.</param>
            <returns>A dictionary containing the parameters and their values.</returns>
        </member>
        <member name="T:Wyam.Common.Tracing.IIndentedTraceEvent">
            <summary>
            Traces messages and indents all future messages until the returned <see cref="T:System.IDisposable"/> is disposed.
            </summary>
        </member>
        <member name="M:Wyam.Common.Tracing.IIndentedTraceEvent.Critical(System.String,System.Object[])">
            <summary>
            Traces a critical message.
            </summary>
            <param name="messageOrFormat">The formatted message to write.</param>
            <param name="args">The arguments for the formatted message.</param>
            <returns>An <see cref="T:System.IDisposable"/> that should be disposed when trace messages should no longer be indented.</returns>
        </member>
        <member name="M:Wyam.Common.Tracing.IIndentedTraceEvent.Error(System.String,System.Object[])">
            <summary>
            Traces an error message.
            </summary>
            <param name="messageOrFormat">The formatted message to write.</param>
            <param name="args">The arguments for the formatted message.</param>
            <returns>An <see cref="T:System.IDisposable"/> that should be disposed when trace messages should no longer be indented.</returns>
        </member>
        <member name="M:Wyam.Common.Tracing.IIndentedTraceEvent.Warning(System.String,System.Object[])">
            <summary>
            Traces a warning message.
            </summary>
            <param name="messageOrFormat">The formatted message to write.</param>
            <param name="args">The arguments for the formatted message.</param>
            <returns>An <see cref="T:System.IDisposable"/> that should be disposed when trace messages should no longer be indented.</returns>
        </member>
        <member name="M:Wyam.Common.Tracing.IIndentedTraceEvent.Information(System.String,System.Object[])">
            <summary>
            Traces an informational message.
            </summary>
            <param name="messageOrFormat">The formatted message to write.</param>
            <param name="args">The arguments for the formatted message.</param>
            <returns>An <see cref="T:System.IDisposable"/> that should be disposed when trace messages should no longer be indented.</returns>
        </member>
        <member name="M:Wyam.Common.Tracing.IIndentedTraceEvent.Verbose(System.String,System.Object[])">
            <summary>
            Traces a verbose message.
            </summary>
            <param name="messageOrFormat">The formatted message to write.</param>
            <param name="args">The arguments for the formatted message.</param>
            <returns>An <see cref="T:System.IDisposable"/> that should be disposed when trace messages should no longer be indented.</returns>
        </member>
        <member name="M:Wyam.Common.Tracing.IIndentedTraceEvent.TraceEvent(System.Diagnostics.TraceEventType,System.String,System.Object[])">
            <summary>
            Traces a raw event.
            </summary>
            <param name="eventType">The type of event.</param>
            <param name="messageOrFormat">The formatted message to write.</param>
            <param name="args">The arguments for the formatted message.</param>
            <returns>An <see cref="T:System.IDisposable"/> that should be disposed when trace messages should no longer be indented.</returns>
        </member>
        <member name="T:Wyam.Common.Tracing.ITrace">
            <summary>
            An interface for tracing messages to the console and other attached outputs.
            </summary>
        </member>
        <member name="P:Wyam.Common.Tracing.ITrace.Level">
            <summary>
            Specifies the levels of trace messages.
            </summary>
        </member>
        <member name="M:Wyam.Common.Tracing.ITrace.AddListener(System.Diagnostics.TraceListener)">
            <summary>
            Adds a trace listener.
            </summary>
            <param name="listener">The listener to add.</param>
        </member>
        <member name="M:Wyam.Common.Tracing.ITrace.RemoveListener(System.Diagnostics.TraceListener)">
            <summary>
            Removes trace listener.
            </summary>
            <param name="listener">The listener to remove.</param>
        </member>
        <member name="P:Wyam.Common.Tracing.ITrace.Listeners">
            <summary>
            A collection of attached trace listeners which will receive tracing events.
            </summary>
        </member>
        <member name="M:Wyam.Common.Tracing.ITrace.Critical(System.String,System.Object[])">
            <summary>
            Traces a critical message.
            </summary>
            <param name="messageOrFormat">The formatted message to write.</param>
            <param name="args">The arguments for the formatted message.</param>
        </member>
        <member name="M:Wyam.Common.Tracing.ITrace.Error(System.String,System.Object[])">
            <summary>
            Traces a critical message.
            </summary>
            <param name="messageOrFormat">The formatted message to write.</param>
            <param name="args">The arguments for the formatted message.</param>
        </member>
        <member name="M:Wyam.Common.Tracing.ITrace.Warning(System.String,System.Object[])">
            <summary>
            Traces a warning message.
            </summary>
            <param name="messageOrFormat">The formatted message to write.</param>
            <param name="args">The arguments for the formatted message.</param>
        </member>
        <member name="M:Wyam.Common.Tracing.ITrace.Information(System.String,System.Object[])">
            <summary>
            Traces an informational message.
            </summary>
            <param name="messageOrFormat">The formatted message to write.</param>
            <param name="args">The arguments for the formatted message.</param>
        </member>
        <member name="M:Wyam.Common.Tracing.ITrace.Verbose(System.String,System.Object[])">
            <summary>
            Traces a verbose message.
            </summary>
            <param name="messageOrFormat">The formatted message to write.</param>
            <param name="args">The arguments for the formatted message.</param>
        </member>
        <member name="M:Wyam.Common.Tracing.ITrace.TraceEvent(System.Diagnostics.TraceEventType,System.String,System.Object[])">
            <summary>
            Traces a raw event.
            </summary>
            <param name="eventType">The type of event.</param>
            <param name="messageOrFormat">The formatted message to write.</param>
            <param name="args">The arguments for the formatted message.</param>
        </member>
        <member name="M:Wyam.Common.Tracing.ITrace.Indent">
            <summary>
            Indents all future trace messages.
            </summary>
            <returns>The new indent level.</returns>
        </member>
        <member name="P:Wyam.Common.Tracing.ITrace.IndentLevel">
            <summary>
            The current indent level.
            </summary>
        </member>
        <member name="M:Wyam.Common.Tracing.ITrace.WithIndent">
            <summary>
            Returns a <see cref="T:Wyam.Common.Tracing.IIndentedTraceEvent"/> that can be used to trace a message and indent following messages.
            </summary>
            <returns>A <see cref="T:Wyam.Common.Tracing.IIndentedTraceEvent"/> that should be used to trace an indented message and indent following messages.</returns>
        </member>
        <member name="T:Wyam.Common.Tracing.Trace">
            <summary>
            Provides access to tracing functionality. This class is thread safe.
            </summary>
        </member>
        <member name="M:Wyam.Common.Tracing.Trace.WithIndent">
            <summary>
            Indents all trace messages until the returned <see cref="T:Wyam.Common.Tracing.IIndentedTraceEvent"/> is disposed.
            </summary>
            <returns>A <see cref="T:Wyam.Common.Tracing.IIndentedTraceEvent"/> that should be disposed when indenting is complete.</returns>
        </member>
        <member name="T:Wyam.Common.Util.ActionDisposable">
            <summary>
            A simple disposable that calls an action on disposal. This class
            will also throw an exception on subsiquent disposals.
            </summary>
        </member>
        <member name="M:Wyam.Common.Util.ActionDisposable.#ctor(System.Action)">
            <summary>
            Create a disposable instance.
            </summary>
            <param name="action">The action to call on disposal.</param>
        </member>
        <member name="M:Wyam.Common.Util.ActionDisposable.Dispose">
            <summary>
            Calls the action.
            </summary>
        </member>
        <member name="T:Wyam.Common.Util.CollectionExtensions">
            <summary>
            Extension methods for collection types.
            </summary>
        </member>
        <member name="M:Wyam.Common.Util.CollectionExtensions.AddRange``1(System.Collections.Generic.ICollection{``0},System.Collections.Generic.IEnumerable{``0})">
            <summary>
            Adds a range of values to a collection.
            </summary>
            <typeparam name="T">The type of the collection items.</typeparam>
            <param name="collection">The collection to add values to.</param>
            <param name="items">The items to add.</param>
        </member>
        <member name="M:Wyam.Common.Util.CollectionExtensions.RemoveAll``1(System.Collections.Generic.ICollection{``0},System.Func{``0,System.Boolean})">
            <summary>
            Removes all items that match a predicate from a collection.
            </summary>
            <typeparam name="T">The type of the collection items.</typeparam>
            <param name="collection">The collection to remove items from.</param>
            <param name="match">The predicate (return <c>true</c> to remove the item).</param>
            <returns>The number of items removed.</returns>
        </member>
        <member name="M:Wyam.Common.Util.CollectionExtensions.RequireKeys``2(System.Collections.Generic.IReadOnlyDictionary{``0,``1},``0[])">
            <summary>
            Verifies that a dictionary contains all requires keys.
            An <see cref="T:System.ArgumentException"/> will be thrown if the
            specified keys are not all present in the dictionary.
            </summary>
            <typeparam name="TKey">The type of keys.</typeparam>
            <typeparam name="TValue">The type of values.</typeparam>
            <param name="dictionary">The dictionary to verify.</param>
            <param name="keys">The keys that must be present in the dictionary.</param>
        </member>
        <member name="T:Wyam.Common.Util.EmptyDisposable">
            <summary>
            A disposable class that does nothing.
            </summary>
        </member>
        <member name="F:Wyam.Common.Util.EmptyDisposable.Instance">
            <summary>
            A singleton instance of the <see cref="T:Wyam.Common.Util.EmptyDisposable"/>.
            </summary>
        </member>
        <member name="M:Wyam.Common.Util.EmptyDisposable.Dispose">
            <summary>
            Does nothing.
            </summary>
        </member>
        <member name="T:Wyam.Common.Util.GroupByExtensions">
            <summary>
            Extensions for performing grouping operations.
            </summary>
        </member>
        <member name="M:Wyam.Common.Util.GroupByExtensions.GroupByMany``2(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Collections.Generic.IEnumerable{``1}})">
            <summary>
            Groups the elements of a sequence according to a specified key selector function
            that returns a sequence of keys.
            </summary>
            <typeparam name="TSource">The type of the source.</typeparam>
            <typeparam name="TKey">The type of the key.</typeparam>
            <param name="source">The source.</param>
            <param name="keySelector">The key selector.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="M:Wyam.Common.Util.GroupByExtensions.GroupByMany``2(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Collections.Generic.IEnumerable{``1}},System.Collections.Generic.IEqualityComparer{``1})">
            <summary>
            Groups the elements of a sequence according to a specified key selector function
            that returns a sequence of keys
            and compares the keys by using a specified comparer.
            </summary>
            <typeparam name="TSource">The type of the source.</typeparam>
            <typeparam name="TKey">The type of the key.</typeparam>
            <param name="source">The source.</param>
            <param name="keySelector">The key selector.</param>
            <param name="comparer">The comparer.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="M:Wyam.Common.Util.GroupByExtensions.GroupByMany``3(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Collections.Generic.IEnumerable{``1}},System.Func{``0,``2})">
            <summary>
            Groups the elements of a sequence according to a specified key selector function
            that returns a sequence of keys
            and projects the elements for each group by using a specified function.
            </summary>
            <typeparam name="TSource">The type of the source.</typeparam>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="source">The source.</param>
            <param name="keySelector">The key selector.</param>
            <param name="elementSelector">The element selector.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="M:Wyam.Common.Util.GroupByExtensions.GroupByMany``3(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Collections.Generic.IEnumerable{``1}},System.Func{``0,``2},System.Collections.Generic.IEqualityComparer{``1})">
            <summary>
            Groups the elements of a sequence according to a specified key selector function
            that returns a sequence of keys.
            The keys are compared by using a comparer and each group's elements
            are projected by using a specified function.
            </summary>
            <typeparam name="TSource">The type of the source.</typeparam>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="source">The source.</param>
            <param name="keySelector">The key selector.</param>
            <param name="elementSelector">The element selector.</param>
            <param name="comparer">The comparer.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="M:Wyam.Common.Util.GroupByExtensions.GroupByManyToMany``3(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Collections.Generic.IEnumerable{``1}},System.Func{``0,System.Collections.Generic.IEnumerable{``2}})">
            <summary>
            Groups the elements of a sequence according to a specified key selector function
            that returns a sequence of keys
            and projects the elements for each group by using a specified function
            that returns a sequence of elements.
            </summary>
            <typeparam name="TSource">The type of the source.</typeparam>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="source">The source.</param>
            <param name="keySelector">The key selector.</param>
            <param name="elementSelector">The element selector.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="M:Wyam.Common.Util.GroupByExtensions.GroupByManyToMany``3(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Collections.Generic.IEnumerable{``1}},System.Func{``0,System.Collections.Generic.IEnumerable{``2}},System.Collections.Generic.IEqualityComparer{``1})">
            <summary>
            Groups the elements of a sequence according to a specified key selector function
            that returns a sequence of keys.
            The keys are compared by using a comparer and each group's elements
            are projected by using a specified function
            that returns a sequence of elements.
            </summary>
            <typeparam name="TSource">The type of the source.</typeparam>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="source">The source.</param>
            <param name="keySelector">The key selector.</param>
            <param name="elementSelector">The element selector.</param>
            <param name="comparer">The comparer.</param>
            <returns>A sequence of groups.</returns>
        </member>
        <member name="T:Wyam.Common.Util.LinkGenerator">
            <summary>
            Helps generate normalized links.
            </summary>
        </member>
        <member name="F:Wyam.Common.Util.LinkGenerator.DefaultHidePages">
            <summary>
            The default page names to hide in links.
            </summary>
        </member>
        <member name="F:Wyam.Common.Util.LinkGenerator.DefaultHideExtensions">
            <summary>
            The default extensions to hide in links.
            </summary>
        </member>
        <member name="M:Wyam.Common.Util.LinkGenerator.GetLink(Wyam.Common.IO.NormalizedPath,System.String,Wyam.Common.IO.DirectoryPath,System.String,System.String[],System.String[],System.Boolean)">
            <summary>
            Generates a normalized link given a path and other conditions.
            </summary>
            <param name="path">The path to get a link for.</param>
            <param name="host">The host for the link (or <c>null</c> to omit the host).</param>
            <param name="root">The root path for the link (or <c>null</c> for no root path).</param>
            <param name="scheme">The scheme for the link (or <c>null</c> for "http").</param>
            <param name="hidePages">An array of page names to hide (or <c>null</c> to not hide any pages).</param>
            <param name="hideExtensions">An array of file extensions to hide (or <c>null</c> to not hide extensions or an empty array to hide all file extensions).</param>
            <param name="lowercase">Indicates that the link should be rendered in all lowercase.</param>
            <returns>A generated link.</returns>
        </member>
        <member name="M:Wyam.Common.Util.LinkGenerator.TryGetAbsoluteHttpUri(System.String,[email protected])">
            <summary>
            Checks if a string contains an absolute URI with a "http" or "https" scheme and returns it if it does.
            </summary>
            <param name="str">The string to check.</param>
            <param name="absoluteUri">The resulting absolute URI.</param>
            <returns><c>true</c> if the string contains an absolute URI, <c>false</c> otherwise.</returns>
        </member>
        <member name="T:Wyam.Common.Util.SourceInfoAttribute">
            <summary>
            A clever trick to get source info for declarations during reflection.
            From http://stackoverflow.com/a/17998371/807064.
            </summary>
        </member>
        <member name="M:Wyam.Common.Util.SourceInfoAttribute.#ctor(System.String,System.Int32)">
            <summary>
            Creates an instance of the attribute.
            </summary>
            <param name="filePath">The automatically populated file path (don't supply this manually)</param>
            <param name="lineNumber">The automatically populated source file line number (don't supply this manually)</param>
        </member>
        <member name="P:Wyam.Common.Util.SourceInfoAttribute.LineNumber">
            <summary>
            The line number of the attribute in the source file.
            </summary>
        </member>
        <member name="P:Wyam.Common.Util.SourceInfoAttribute.FilePath">
            <summary>
            The file path of the source file.
            </summary>
        </member>
        <member name="T:Wyam.Common.Util.StreamExtensions">
            <summary>
            Extension methods for use with <see cref="T:System.IO.Stream"/>.
            </summary>
        </member>
        <member name="M:Wyam.Common.Util.StreamExtensions.GetWriter(System.IO.Stream,System.Boolean)">
            <summary>
            Creates a <see cref="T:System.IO.StreamWriter"/> for the specified stream. The
            biggest difference between this and creating a <see cref="T:System.IO.StreamWriter"/>
            directly is that the new <see cref="T:System.IO.StreamWriter"/> will default to
            leaving the underlying stream open on disposal. Remember to flush the
            returned writer after all data have been written.
            </summary>
            <param name="stream">The stream to write to.</param>
            <param name="leaveOpen"><c>true</c> to leave the underlying stream open on disposal.</param>
            <returns>A new <see cref="T:System.IO.StreamWriter"/> for the specified stream.</returns>
        </member>
        <member name="M:Wyam.Common.Util.ToLookupExtensions.ToLookupMany``2(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Collections.Generic.IEnumerable{``1}})">
            <summary>
            Creates a lookup from a sequence according to a specified key selector function
            that returns a sequence of keys.
            </summary>
            <typeparam name="TSource">The type of the source.</typeparam>
            <typeparam name="TKey">The type of the key.</typeparam>
            <param name="source">The source.</param>
            <param name="keySelector">The key selector.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="M:Wyam.Common.Util.ToLookupExtensions.ToLookupMany``2(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Collections.Generic.IEnumerable{``1}},System.Collections.Generic.IEqualityComparer{``1})">
            <summary>
            Creates a lookup from a sequence according to a specified key selector function
            that returns a sequence of keys
            and compares the keys by using a specified comparer.
            </summary>
            <typeparam name="TSource">The type of the source.</typeparam>
            <typeparam name="TKey">The type of the key.</typeparam>
            <param name="source">The source.</param>
            <param name="keySelector">The key selector.</param>
            <param name="comparer">The comparer.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="M:Wyam.Common.Util.ToLookupExtensions.ToLookupMany``3(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Collections.Generic.IEnumerable{``1}},System.Func{``0,``2})">
            <summary>
            Creates a lookup from a sequence according to a specified key selector function
            that returns a sequence of keys
            and projects the elements for each group by using a specified function.
            </summary>
            <typeparam name="TSource">The type of the source.</typeparam>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="source">The source.</param>
            <param name="keySelector">The key selector.</param>
            <param name="elementSelector">The element selector.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="M:Wyam.Common.Util.ToLookupExtensions.ToLookupMany``3(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Collections.Generic.IEnumerable{``1}},System.Func{``0,``2},System.Collections.Generic.IEqualityComparer{``1})">
            <summary>
            Creates a lookup from a sequence according to a specified key selector function
            that returns a sequence of keys.
            The keys are compared by using a comparer and each group's elements
            are projected by using a specified function.
            </summary>
            <typeparam name="TSource">The type of the source.</typeparam>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="source">The source.</param>
            <param name="keySelector">The key selector.</param>
            <param name="elementSelector">The element selector.</param>
            <param name="comparer">The comparer.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="M:Wyam.Common.Util.ToLookupExtensions.ToLookupManyToMany``3(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Collections.Generic.IEnumerable{``1}},System.Func{``0,System.Collections.Generic.IEnumerable{``2}})">
            <summary>
            Creates a lookup from a sequence according to a specified key selector function
            that returns a sequence of keys
            and projects the elements for each group by using a specified function
            that returns a sequence of elements.
            </summary>
            <typeparam name="TSource">The type of the source.</typeparam>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="source">The source.</param>
            <param name="keySelector">The key selector.</param>
            <param name="elementSelector">The element selector.</param>
            <returns>A lookup.</returns>
        </member>
        <member name="M:Wyam.Common.Util.ToLookupExtensions.ToLookupManyToMany``3(System.Collections.Generic.IEnumerable{``0},System.Func{``0,System.Collections.Generic.IEnumerable{``1}},System.Func{``0,System.Collections.Generic.IEnumerable{``2}},System.Collections.Generic.IEqualityComparer{``1})">
            <summary>
            Creates a lookup from a sequence according to a specified key selector function
            that returns a sequence of keys.
            The keys are compared by using a comparer and each group's elements
            are projected by using a specified function
            that returns a sequence of elements.
            </summary>
            <typeparam name="TSource">The type of the source.</typeparam>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TElement">The type of the element.</typeparam>
            <param name="source">The source.</param>
            <param name="keySelector">The key selector.</param>
            <param name="elementSelector">The element selector.</param>
            <param name="comparer">The comparer.</param>
            <returns>A lookup.</returns>
        </member>
    </members>
</doc>
tools\Wyam.Configuration.dll
md5: 356B9E307F0650D815B7E42C7C3E09B5 | sha1: 4CE37621FD6C4A9E78ED86BFBED56935B8AD655F | sha256: 213E86D1C2BED6C816F576F67B531260FDD539D5DA25D377ADF6C6F0E70C00C9 | sha512: 6B4EF78DBAD1A0F9978D788778FC1EDA63D19A68B6E2D328F28246255537B39937BA6023643C40BAEE6E50175761F92AFC7A0F701319180DD62E89AAB4DD94B7
tools\Wyam.Configuration.pdb
 
tools\Wyam.Configuration.xml
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Wyam.Configuration</name>
    </assembly>
    <members>
        <member name="T:Wyam.Configuration.Assemblies.AssemblyComparer">
            <summary>
            Compares two assemblies for equality by comparing at their full names.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.Assemblies.AssemblyComparer.Equals(System.Reflection.Assembly,System.Reflection.Assembly)">
            <inheritdoc/>
        </member>
        <member name="M:Wyam.Configuration.Assemblies.AssemblyComparer.GetHashCode(System.Reflection.Assembly)">
            <inheritdoc/>
        </member>
        <member name="P:Wyam.Configuration.Assemblies.AssemblyLoader.DirectAssemblies">
            <summary>
            Gets the assemblies that were directly referenced (as opposed to all recursively referenced assemblies).
            </summary>
        </member>
        <member name="M:Wyam.Configuration.Assemblies.AssemblyLoader.Add(System.String)">
            <summary>
            Adds a new assembly or pattern to those to be loaded.
            </summary>
            <param name="assembly">
            The assembly or pattern to load. If the string contains a "*" then it is considered a globbing pattern, otherwise it's considered an assembly.
            </param>
        </member>
        <member name="M:Wyam.Configuration.Assemblies.AssemblyLoader.Load">
            <summary>
            Loads all specified assemblies and their references.
            </summary>
        </member>
        <member name="T:Wyam.Configuration.Assemblies.AssemblyLoader.AssemblyDependencyComparer">
            <summary>
            Returns assemblies in dependency order.
            </summary>
        </member>
        <member name="T:Wyam.Configuration.Assemblies.ClassCatalog">
            <summary>
            Responsible for iterating over a set of assemblies
            looking for implementations of predefined interfaces.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.Assemblies.ClassCatalog.GetClasses``1">
            <summary>
            Gets all classes of a specified type.
            </summary>
            <typeparam name="T">The type of classes to get.</typeparam>
            <returns>All classes of type <c>T</c>.</returns>
        </member>
        <member name="M:Wyam.Configuration.Assemblies.ClassCatalog.GetInstances``1">
            <summary>
            Gets instances for all classes of a specified type..
            </summary>
            <typeparam name="T">The type of instances to get.</typeparam>
            <returns>Instances for all classes of type <c>T</c>.</returns>
        </member>
        <member name="M:Wyam.Configuration.Assemblies.ClassCatalog.GetInstance``1(System.String,System.Boolean)">
            <summary>
            Gets an instance for a class of a specified type and name.
            </summary>
            <typeparam name="T">The type of the instance to get.</typeparam>
            <param name="typeName">The name of the type.</param>
            <param name="ignoreCase">if set to <c>true</c> ignore the case of the type name.</param>
            <returns>
            An instance of the first class that matches the specified type and name.
            </returns>
        </member>
        <member name="T:Wyam.Configuration.ClassEnum`1">
            <summary>
            A base class that can be used to create more powerful "enum" classes that
            use fields to store the values, which are instances of the class.
            </summary>
            <typeparam name="T">The derived class type.</typeparam>
        </member>
        <member name="T:Wyam.Configuration.ConfigScript.ScriptBase">
            <summary>
            This is the base class used for the generated configuration script. Put any properties or
            methods you want the configuration script to have access to in here.
            </summary>
        </member>
        <member name="T:Wyam.Configuration.Configurator">
            <summary>
            Manages configuration of an engine and coordinates configuration script processing.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.Configurator.#ctor(Wyam.Core.Execution.Engine)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Configuration.Configurator"/> class.
            </summary>
            <param name="engine">The engine to configure.</param>
        </member>
        <member name="M:Wyam.Configuration.Configurator.#ctor(Wyam.Core.Execution.Engine,Wyam.Configuration.Preprocessing.Preprocessor)">
            <summary>
            Initializes a new instance of the <see cref="T:Wyam.Configuration.Configurator"/> class. This overload
            allows passing in a <see cref="T:Wyam.Configuration.Preprocessing.Preprocessor"/> that can be reused and pre-configured
            with directives not sourced from the script.
            </summary>
            <param name="engine">The engine to configure.</param>
            <param name="preprocessor">The preprocessor.</param>
        </member>
        <member name="M:Wyam.Configuration.Configurator.Configure(Wyam.Common.IO.FilePath)">
            <summary>
            Configures the engine using the specified config file.
            </summary>
            <param name="configFilePath">The path to the config file.</param>
            <returns><c>true</c> if the file exists and the engine was configured, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:Wyam.Configuration.Configurator.Configure(Wyam.Common.IO.IFile)">
            <summary>
            Configures the engine using the specified config file.
            </summary>
            <param name="configFile">The config file.</param>
            <returns><c>true</c> if the file exists and the engine was configured, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:Wyam.Configuration.Configurator.Configure(System.String,Wyam.Common.IO.FilePath)">
            <summary>
            Configures the engine using the specified script.
            </summary>
            <param name="script">The script.</param>
            <param name="configFilePath">
            The path to the config file. This is used for calculating file names and paths for caching files.
            If it is not supplied, no cache files will be generated.
            </param>
        </member>
        <member name="T:Wyam.Configuration.Directives.ArgumentSyntaxDirective`1">
            <summary>
            Helps support directives that can use CLI-style options and arguments.
            </summary>
        </member>
        <member name="T:Wyam.Configuration.KnownExtension">
            <summary>
            Lookup data for all known extensions.
            </summary>
        </member>
        <member name="P:Wyam.Configuration.KnownExtension.PackageId">
            <summary>
            Gets the package that contains the extension.
            </summary>
        </member>
        <member name="T:Wyam.Configuration.KnownRecipe">
            <summary>
            Lookup data for all known recipes.
            </summary>
        </member>
        <member name="P:Wyam.Configuration.KnownRecipe.PackageId">
            <summary>
            Gets the package that the recipe class is in. If the recipe is in the
            core library, this will be null.
            </summary>
        </member>
        <member name="P:Wyam.Configuration.KnownRecipe.DefaultTheme">
            <summary>
            Gets the default theme for this recipe (or null). This should map
            to a theme in the <see cref="T:Wyam.Configuration.KnownTheme" /> lookup.
            </summary>
        </member>
        <member name="T:Wyam.Configuration.KnownTheme">
            <summary>
            Lookup data for all known themes.
            </summary>
        </member>
        <member name="P:Wyam.Configuration.KnownTheme.Recipe">
            <summary>
            Gets the recipe that this theme supports. A null value indicates the theme
            is not recipe specific.
            </summary>
        </member>
        <member name="P:Wyam.Configuration.KnownTheme.InputPath">
            <summary>
            Path to insert into input paths. If the theme is just a NuGet content package,
            the content folder will be automatically included and this can be null. Useful
            if the theme exists somewhere else like a GitHub repository.
            </summary>
        </member>
        <member name="P:Wyam.Configuration.KnownTheme.PackageId">
            <summary>
            Gets the package containing this theme.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.NuGet.CachedPackage.VerifyPackage(NuGet.PackageManagement.NuGetPackageManager)">
            <summary>
            Verifies that the package and all of it's dependencies exist locally
            </summary>
        </member>
        <member name="M:Wyam.Configuration.NuGet.InstalledPackagesCache.GetInstalledPackagesAndDependencies">
            <summary>
            Gets all installed packages from this session and their dependencies.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.NuGet.InstalledPackagesCache.VerifyPackage(NuGet.Packaging.Core.PackageIdentity,NuGet.PackageManagement.NuGetPackageManager)">
            <summary>
            Verifies that a package has been previously installed as well as
            currently existing locally with all dependencies, and if so,
            adds it back to the outgoing cache file along with all it's
            previously calculated dependencies.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.NuGet.PackageInstaller.AddPackageSource(System.String)">
            <summary>
            Adds the specified package source. Sources added this way will be searched before any global sources.
            </summary>
            <param name="packageSource">The package source to add.</param>
        </member>
        <member name="M:Wyam.Configuration.NuGet.PackageInstaller.AddPackage(System.String,System.Collections.Generic.IEnumerable{System.String},System.String,System.Boolean,System.Boolean,System.Boolean,System.Boolean)">
            <summary>
            Adds a package.
            </summary>
            <param name="packageId">The package identifier.</param>
            <param name="packageSources">The package sources.</param>
            <param name="versionRange">The version range.</param>
            <param name="getLatest">If set to <c>true</c>, the latest version of the package will always be downloaded.</param>
            <param name="allowPrereleaseVersions">If set to <c>true</c>, allow prerelease versions.</param>
            <param name="allowUnlisted">If set to <c>true</c>, allow unlisted versions.</param>
            <param name="exclusive">If set to <c>true</c>, only use the package sources defined for this package.</param>
        </member>
        <member name="M:Wyam.Configuration.NuGet.PackageInstaller.ContainsPackage(System.String)">
            <summary>
            Determines whether the specified package has already been added.
            </summary>
            <param name="packageId">The package identifier.</param>
        </member>
        <member name="T:Wyam.Configuration.NuGet.SourceRepositoryProvider">
            <summary>
            Creates and caches SourceRepository objects, which are
            the combination of PackageSource instances with a set
            of supported resource providers. It also manages the set
            of default source repositories.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.NuGet.SourceRepositoryProvider.AddGlobalDefaults">
            <summary>
            Add the global sources to the default repositories.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.NuGet.SourceRepositoryProvider.AddDefaultRepository(System.String)">
            <summary>
            Adds a default source repository to the front of the list.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.NuGet.SourceRepositoryProvider.CreateRepository(System.String)">
            <summary>
            Creates or gets a non-default source repository.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.NuGet.SourceRepositoryProvider.CreateRepository(NuGet.Configuration.PackageSource)">
            <summary>
            Creates or gets a non-default source repository by PackageSource.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.NuGet.SourceRepositoryProvider.CreateRepository(NuGet.Configuration.PackageSource,NuGet.Protocol.FeedType)">
            <summary>
            Creates or gets a non-default source repository by PackageSource.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.NuGet.SourceRepositoryProvider.GetRepositories">
            <summary>
            Gets all cached repositories.
            </summary>
        </member>
        <member name="T:Wyam.Configuration.Preprocessing.DirectiveValue">
            <summary>
            Represents the use of a directive.
            </summary>
        </member>
        <member name="P:Wyam.Configuration.Preprocessing.DirectiveValue.Line">
             <summary>
             Gets the line where the directive was specified
             (or <c>null</c> if created outside the configuration file).
             </summary>
            
        </member>
        <member name="P:Wyam.Configuration.Preprocessing.DirectiveValue.Name">
            <summary>
            Gets the directive name.
            </summary>
        </member>
        <member name="P:Wyam.Configuration.Preprocessing.DirectiveValue.Value">
            <summary>
            Gets the directive value.
            </summary>
        </member>
        <member name="T:Wyam.Configuration.Preprocessing.IDirective">
            <summary>
            A directive that can be used in the configuration file and optionally on the
            command line.
            </summary>
        </member>
        <member name="P:Wyam.Configuration.Preprocessing.IDirective.Name">
            <summary>
            Gets the directive name.
            </summary>
        </member>
        <member name="P:Wyam.Configuration.Preprocessing.IDirective.ShortName">
            <summary>
            Gets the short directive name.
            </summary>
        </member>
        <member name="P:Wyam.Configuration.Preprocessing.IDirective.SupportsMultiple">
            <summary>
            Gets a value indicating whether the directive supports multiple values.
            </summary>
        </member>
        <member name="P:Wyam.Configuration.Preprocessing.IDirective.Description">
            <summary>
            Gets a description of the directive.
            </summary>
        </member>
        <member name="P:Wyam.Configuration.Preprocessing.IDirective.ValueComparer">
            <summary>
            Gets a string comparer that can be used to compare values of one directive to another for equality.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.Preprocessing.IDirective.Process(Wyam.Configuration.Configurator,System.String)">
            <summary>
            Processes the directive.
            </summary>
            <param name="configurator">The configurator.</param>
            <param name="value">The value of the directive.</param>
        </member>
        <member name="M:Wyam.Configuration.Preprocessing.IDirective.GetHelpText">
            <summary>
            Gets the help text.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.Preprocessing.Preprocessor.AddValue(Wyam.Configuration.Preprocessing.DirectiveValue)">
            <summary>
            Adds values that will be persistent from one configuration to the next.
            </summary>
        </member>
        <member name="P:Wyam.Configuration.Preprocessing.Preprocessor.Values">
            <summary>
            Gets the current directive values.
            </summary>
        </member>
        <member name="M:Wyam.Configuration.Preprocessing.Preprocessor.ProcessDirectives(Wyam.Configuration.Configurator,System.Collections.Generic.IEnumerable{Wyam.Configuration.Preprocessing.DirectiveValue})">
            <summary>
            Processes both directives that were added to the preprocessor plus any additional ones passed in.
            </summary>
        </member>
    </members>
</doc>
tools\Wyam.Core.dll
md5: 04E864C27DA6D9849199C154E6CC2ED8 | sha1: 046A033A4BF10D802897FAAD2986ED6D7258BB22 | sha256: 7DD003F535F8E4BA1042E770B4AC4E3A3BCAB8FF759E0D97CF9F6290F384E4F1 | sha512: 05A198F8BE3057C8C4D22E1BF30CF52A1C4980C2FF4B9236EDA2F1FA28CBF6F1F3EB2840DE58CD8ED524BC4A69CDCB1B0C5B3ECAFAAA8C830FD49743D3BF9E5F
tools\Wyam.Core.pdb
 
tools\Wyam.Core.xml
<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Wyam.Core</name>
    </assembly>
    <members>
        <member name="T:Wyam.Core.Documents.CustomDocument">
            <summary>
            Derive custom document types from this class to get built-in support.
            </summary>
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.Clone">
            <summary>
            Clones this instance of the document. You must return a new instance of your
            custom document type, even if nothing will change, otherwise the document factory
            will throw an exception. The default implementation of this method performs a
            <code>object.MemberwiseClone()</code>.
            </summary>
            <returns>A new custom document instance with the same values as the current instance.</returns>
        </member>
        <member name="P:Wyam.Core.Documents.CustomDocument.WithoutSettings">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.GetEnumerator">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.Documents.CustomDocument.Count">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.ContainsKey(System.String)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.Documents.CustomDocument.Item(System.String)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.Documents.CustomDocument.Keys">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.Documents.CustomDocument.Values">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.MetadataAs``1">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.Get(System.String,System.Object)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.GetRaw(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.Get``1(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.Get``1(System.String,``0)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.TryGetValue(System.String,[email protected])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.TryGetValue``1(System.String,``[email protected])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.GetMetadata(System.String[])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.Dispose">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.Documents.CustomDocument.Source">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.SourceString">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.Documents.CustomDocument.Id">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.Documents.CustomDocument.Metadata">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.Documents.CustomDocument.Content">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.GetStream">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Documents.CustomDocument.System#Collections#IEnumerable#GetEnumerator">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Execution.Engine">
            <summary>
            The engine is the primary entry point for the generation process.
            </summary>
        </member>
        <member name="P:Wyam.Core.Execution.Engine.Version">
            <summary>
            Gets the version of Wyam currently being used.
            </summary>
        </member>
        <member name="M:Wyam.Core.Execution.Engine.#ctor">
            <summary>
            Creates the engine.
            </summary>
        </member>
        <member name="P:Wyam.Core.Execution.Engine.FileSystem">
            <summary>
            Gets the file system.
            </summary>
        </member>
        <member name="P:Wyam.Core.Execution.Engine.Settings">
            <summary>
            Gets the settings.
            </summary>
        </member>
        <member name="P:Wyam.Core.Execution.Engine.Shortcodes">
            <summary>
            Gets the shortcodes.
            </summary>
        </member>
        <member name="P:Wyam.Core.Execution.Engine.Pipelines">
            <summary>
            Gets the pipelines.
            </summary>
        </member>
        <member name="P:Wyam.Core.Execution.Engine.Documents">
            <summary>
            Gets the documents.
            </summary>
        </member>
        <member name="P:Wyam.Core.Execution.Engine.Namespaces">
            <summary>
            Gets the namespaces that should be brought in scope by modules that support dynamic compilation.
            </summary>
        </member>
        <member name="P:Wyam.Core.Execution.Engine.DynamicAssemblies">
            <summary>
            Gets a collection of all the raw assemblies that should be referenced by modules
            that support dynamic compilation (such as configuration assemblies).
            </summary>
        </member>
        <member name="P:Wyam.Core.Execution.Engine.ApplicationInput">
            <summary>
            Gets or sets the application input.
            </summary>
        </member>
        <member name="P:Wyam.Core.Execution.Engine.DocumentFactory">
            <summary>
            Gets or sets the document factory.
            </summary>
        </member>
        <member name="P:Wyam.Core.Execution.Engine.ContentStreamFactory">
            <summary>
            The factory that should provide content streams for documents.
            </summary>
        </member>
        <member name="M:Wyam.Core.Execution.Engine.CleanOutputPath">
            <summary>
            Deletes the output path and all files it contains.
            </summary>
        </member>
        <member name="M:Wyam.Core.Execution.Engine.CleanTempPath">
            <summary>
            Deletes the temp path and all files it contains.
            </summary>
        </member>
        <member name="M:Wyam.Core.Execution.Engine.ResetJsEngines">
            <summary>
            Resets the JavaScript Engine pool and clears the JavaScript Engine Switcher
            to an empty list of engine factories and default engine. Useful on configuration
            change where we might have a new configuration.
            </summary>
        </member>
        <member name="M:Wyam.Core.Execution.Engine.Execute">
            <summary>
            Executes the engine. This is the primary method that kicks off generation.
            </summary>
        </member>
        <member name="M:Wyam.Core.Execution.Engine.Dispose">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Execution.ExecutionContext.Dispose">
            <summary>
            The context is disposed after use by each module to ensure modules aren't accessing stale data
            if they continue to create documents or perform other operations after the module is done
            executing. A disposed context can no longer be used.
            </summary>
        </member>
        <member name="M:Wyam.Core.IO.FileProviders.Local.LocalCaseSensitivityChecker.IsCaseSensitive(Wyam.Core.IO.FileProviders.Local.LocalDirectory)">
            <summary>
            Determines if the file system rooted at a given directory is case insensitive.
            Checks if the file system thinks the directory exists for both upper and lower case variants.
            If the directory doesn't exist in the first place, or it's entirely non-alpha, a fallback approach
            is used that creates a temporary file in the system's temporary file location and checks that.
            </summary>
            <param name="directory">The directory to check.</param>
            <returns><c>true</c> if the file system rooted at the directory is case sensitive, <c>false</c> otherwise.</returns>
        </member>
        <member name="T:Wyam.Core.IO.Globbing.Globber">
            <summary>
            Helper methods to work with globbing patterns.
            </summary>
        </member>
        <member name="M:Wyam.Core.IO.Globbing.Globber.GetFiles(Wyam.Common.IO.IDirectory,System.String[])">
            <summary>
            Gets files from the specified directory using globbing patterns.
            </summary>
            <param name="directory">The directory to search.</param>
            <param name="patterns">The globbing pattern(s) to use.</param>
            <returns>Files that match the globbing pattern(s).</returns>
        </member>
        <member name="M:Wyam.Core.IO.Globbing.Globber.GetFiles(Wyam.Common.IO.IDirectory,System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Gets files from the specified directory using globbing patterns.
            </summary>
            <param name="directory">The directory to search.</param>
            <param name="patterns">The globbing pattern(s) to use.</param>
            <returns>Files that match the globbing pattern(s).</returns>
        </member>
        <member name="M:Wyam.Core.IO.Globbing.Globber.ExpandBraces(System.String)">
            <summary>Expands all brace ranges in a pattern, returning a sequence containing every possible combination.</summary>
            <param name="pattern">The pattern to expand.</param>
            <returns>The expanded globbing patterns.</returns>
        </member>
        <member name="P:Wyam.Core.IO.VirtualInputDirectory.Exists">
            <summary>
            Gets a value indicating whether any of the input paths contain this directory.
            </summary>
            <value>
            <c>true</c> if this directory exists at one of the input paths; otherwise, <c>false</c>.
            </value>
        </member>
        <member name="P:Wyam.Core.IO.VirtualInputDirectory.IsCaseSensitive">
            <summary>
            Returns <c>true</c> if any of the input paths are case sensitive.
            </summary>
            <remarks>
            When dealing with virtual input directories that could be comprised of multiple
            file systems with different case sensitivity, it's safer to treat the
            virtual file system as case-sensitive if any of the underlying file systems
            are case-sensitive. Otherwise, if we treated it as case-insensitive when
            one of the file systems was actually case-sensitive we would get false-positive
            results when assuming if directories and files in that file system existed
            (for example, in the globber).
            </remarks>
        </member>
        <member name="T:Wyam.Core.JavaScript.JavaScriptEngine">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.JavaScript.JavaScriptEngine.Name">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.JavaScript.JavaScriptEngine.Version">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.JavaScript.JavaScriptEngine.SupportsScriptPrecompilation">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.JavaScript.JavaScriptEngine.SupportsScriptInterruption">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.JavaScript.JavaScriptEngine.SupportsGarbageCollection">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.Precompile(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.Precompile(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.PrecompileFile(System.String,System.Text.Encoding)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.PrecompileResource(System.String,System.Type)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.PrecompileResource(System.String,System.Reflection.Assembly)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.Evaluate(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.Evaluate(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.Evaluate``1(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.Evaluate``1(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.Execute(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.Execute(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.Execute(Wyam.Common.JavaScript.IPrecompiledJavaScript)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.ExecuteFile(System.String,System.Text.Encoding)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.ExecuteResource(System.String,System.Type)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.ExecuteResource(System.String,System.Reflection.Assembly)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.CallFunction(System.String,System.Object[])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.CallFunction``1(System.String,System.Object[])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.HasVariable(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.GetVariableValue(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.GetVariableValue``1(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.SetVariableValue(System.String,System.Object)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.RemoveVariable(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.EmbedHostObject(System.String,System.Object)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.EmbedHostType(System.String,System.Type)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.Interrupt">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEngine.CollectGarbage">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEnginePool.GetEngine(System.Nullable{System.TimeSpan})">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.JavaScript.JavaScriptEnginePool.EngineCount">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.JavaScript.JavaScriptEnginePool.AvailableEngineCount">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.JavaScriptEnginePool.DisposeEngine(Wyam.Common.JavaScript.IJavaScriptEngine,System.Boolean)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.JavaScript.PooledJavaScriptEngine">
            <summary>
            Wraps a <see cref="T:Wyam.Core.JavaScript.JavaScriptEngine"/> but overrides the
            dispose behavior so that instead of disposing the
            underlying engine, it returns the engine to the pool.
            </summary>
        </member>
        <member name="P:Wyam.Core.JavaScript.PooledJavaScriptEngine.ReturnEngineToPool">
            <summary>
            Callback for returning the engine to the pool.
            </summary>
        </member>
        <member name="P:Wyam.Core.JavaScript.PooledJavaScriptEngine.Name">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.JavaScript.PooledJavaScriptEngine.Version">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.JavaScript.PooledJavaScriptEngine.SupportsScriptPrecompilation">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.JavaScript.PooledJavaScriptEngine.SupportsScriptInterruption">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.JavaScript.PooledJavaScriptEngine.SupportsGarbageCollection">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.Precompile(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.Precompile(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.PrecompileFile(System.String,System.Text.Encoding)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.PrecompileResource(System.String,System.Type)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.PrecompileResource(System.String,System.Reflection.Assembly)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.Evaluate(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.Evaluate(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.Evaluate``1(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.Evaluate``1(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.Execute(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.Execute(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.Execute(Wyam.Common.JavaScript.IPrecompiledJavaScript)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.ExecuteFile(System.String,System.Text.Encoding)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.ExecuteResource(System.String,System.Type)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.ExecuteResource(System.String,System.Reflection.Assembly)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.CallFunction(System.String,System.Object[])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.CallFunction``1(System.String,System.Object[])">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.HasVariable(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.GetVariableValue(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.GetVariableValue``1(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.SetVariableValue(System.String,System.Object)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.RemoveVariable(System.String)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.EmbedHostObject(System.String,System.Object)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.EmbedHostType(System.String,System.Type)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.Interrupt">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.CollectGarbage">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.JavaScript.PooledJavaScriptEngine.Dispose">
            <summary>
            Returns this engine to the pool.
            </summary>
        </member>
        <member name="M:Wyam.Core.Meta.Metadata.GetValue(System.Object)">
            <summary>
            This resolves the metadata value by recursively expanding IMetadataValue.
            </summary>
        </member>
        <member name="M:Wyam.Core.Meta.Metadata.GetItem(System.Collections.Generic.KeyValuePair{System.String,System.Object})">
            <summary>
            This resolves the metadata value by expanding IMetadataValue.
            </summary>
        </member>
        <member name="T:Wyam.Core.Meta.MetadataStack">
            <summary>
            This class contains a stack of all the metadata generated at a particular pipeline stage.
            Getting a value checks each of the stacks and returns the first hit.
            This class is immutable, create a new document to get a new one with additional values.
            </summary>
        </member>
        <member name="T:Wyam.Core.Modules.Contents.Append">
            <summary>
            Appends the specified content to the existing content of each document.
            </summary>
            <category>Content</category>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Append.#ctor(System.Object)">
            <summary>
            Appends the string value of the specified object to the content of every input document.
            </summary>
            <param name="content">The content to append.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Append.#ctor(Wyam.Common.Configuration.ContextConfig)">
            <summary>
            Appends the string value of the returned object to to content of each document. This
            allows you to specify different content to append depending on the execution context.
            </summary>
            <param name="content">A delegate that returns the content to append.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Append.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Appends the string value of the returned object to to content of each document.
            This allows you to specify different content to append for each document depending
            on the input document.
            </summary>
            <param name="content">A delegate that returns the content to append.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Append.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            The specified modules are executed against an empty initial document and the results
            are appended to the content of every input document (possibly creating more
            than one output document for each input document).
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Append.Execute(System.Object,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Contents.Content">
            <summary>
            Replaces the content of each input document with the string value of the specified content object.
            </summary>
            <remarks>
            In the case where modules are provided, they are executed against an
            empty initial document and the results are applied to each input document.
            </remarks>
            <category>Content</category>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Content.#ctor(System.Object)">
            <summary>
            Uses the string value of the specified object as the new content for every input document.
            </summary>
            <param name="content">The new content to use.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Content.#ctor(Wyam.Common.Configuration.ContextConfig)">
            <summary>
            Uses the string value of the returned object as the new content for each document.
            This allows you to specify different content depending on the execution context.
            </summary>
            <param name="content">A delegate that gets the new content to use.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Content.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Uses the string value of the returned object as the new content for each document. This
            allows you to specify different content for each document depending on the input document.
            </summary>
            <param name="content">A delegate that gets the new content to use.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Content.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            The specified modules are executed against an empty initial document and the results
            are applied to every input document (possibly creating more than one output
            document for each input document).
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Content.Execute(System.Object,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Contents.Join">
            <summary>
            Joins documents together with an optional delimiter to form one document.
            </summary>
            <category>Content</category>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Join.#ctor">
            <summary>
            Concatenates multiple documents together to form a single document without a delimiter and with the default metadata only
            </summary>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Join.#ctor(Wyam.Core.Modules.Contents.JoinedMetadata)">
            <summary>
            Concatenates multiple documents together to form a single document without a delimiter using the specified meta data mode
            </summary>
            <param name="metaDataMode">The specified metadata mode</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Join.#ctor(System.String,Wyam.Core.Modules.Contents.JoinedMetadata)">
            <summary>
            Concatenates multiple documents together to form a single document with a specified delimiter using the specified meta data mode
            </summary>
            <param name="delimiter">The string to use as a separator between documents</param>
            <param name="metaDataMode">The specified metadata mode</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Join.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
            <summary>
            Returns a single document containing the concatenated content of all input documents with an optional delimiter and configurable metadata options
            </summary>
            <returns>A single document in a list</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Join.MetadataForOutputDocument(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument})">
            <summary>
            Returns the correct metadata for the new document based on the provided list of documents and the selected metadata mode.
            </summary>
            <param name="inputs">The list of input documents.</param>
            <returns>The set of metadata for all input documents.</returns>
        </member>
        <member name="T:Wyam.Core.Modules.Contents.JoinedMetadata">
            <summary>
            Specifies how to deal with metadata from joined documents.
            </summary>
        </member>
        <member name="F:Wyam.Core.Modules.Contents.JoinedMetadata.DefaultOnly">
            <summary>
            The joined document only includes the default global metadata.
            </summary>
        </member>
        <member name="F:Wyam.Core.Modules.Contents.JoinedMetadata.FirstDocument">
            <summary>
            The joined document includes the metadata from the first document in the sequence of documents to join.
            </summary>
        </member>
        <member name="F:Wyam.Core.Modules.Contents.JoinedMetadata.LastDocument">
            <summary>
            The joined document includes the metadata from the last document in the sequence of documents to join.
            </summary>
        </member>
        <member name="F:Wyam.Core.Modules.Contents.JoinedMetadata.AllWithFirstDuplicates">
            <summary>
            The joined document includes metadata from all joined documents and uses the value from the
            first document in the sequence of documents to join in the case of duplicate keys.
            </summary>
        </member>
        <member name="F:Wyam.Core.Modules.Contents.JoinedMetadata.AllWithLastDuplicates">
            <summary>
            The joined document includes metadata from all joined documents and uses the value from the
            last document in the sequence of documents to join in the case of duplicate keys.
            </summary>
        </member>
        <member name="T:Wyam.Core.Modules.Contents.Prepend">
            <summary>
            Prepends the specified content to the existing content of each document.
            </summary>
            <category>Content</category>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Prepend.#ctor(System.Object)">
            <summary>
            Prepends the string value of the specified object to the content of every input document.
            </summary>
            <param name="content">The content to prepend.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Prepend.#ctor(Wyam.Common.Configuration.ContextConfig)">
            <summary>
            Prepends the string value of the returned object to to content of each document. This
            allows you to specify different content to prepend depending on the execution context.
            </summary>
            <param name="content">A delegate that returns the content to prepend.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Prepend.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Prepends the string value of the returned object to to content of each document. This
            allows you to specify different content to prepend for each document depending on the input document.
            </summary>
            <param name="content">A delegate that returns the content to prepend.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Prepend.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            The specified modules are executed against an empty initial document and the results are
            prepended to the content of every input document (possibly creating more than one output
            document for each input document).
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Prepend.Execute(System.Object,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Contents.Redirect">
            <summary>
            Handles redirected content by creating pages with meta refresh tags or other redirect files.
            </summary>
            <remarks>
            <para>When content moves you need some way to redirect from the old location to the new location.
            This is especially true when moving content from one publishing system to another that might
            have different conventions for things like paths.</para>
            <para>This module lets you manage redirected content
            by generating special pages that contain a "meta refresh tag". This tag tells client browsers
            that the content has moved and to redirect to the new location. Google and other search engines
            also understand meta refresh tags and will adjust their search indexes accordingly.</para>
            <para>Alternatively (or additionally), you can also create host-specific redirect files to
            control redirection on the server.</para>
            <para>By default, this module will read the paths that need to be redirected from the
            <c>RedirectFrom</c> metadata key. One or more paths can be specified in this metadata and
            corresponding redirect files will be created for each.</para>
            <para>This module outputs any meta refresh pages as well as any additional redirect files
            you specify. It does not output the original input files.</para>
            </remarks>
            <metadata cref="F:Wyam.Common.Meta.Keys.RedirectFrom" usage="Input" />
            <metadata cref="F:Wyam.Common.Meta.Keys.RelativeFilePath" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.WritePath" usage="Output" />
            <category>Content</category>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Redirect.WithPaths(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Controls where the redirected paths come from. By default, values from the metadata
            key <c>RedirectFrom</c> are used.
            </summary>
            <param name="paths">A delegate that should return one or more <see cref="T:Wyam.Common.IO.FilePath"/>.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Redirect.WithMetaRefreshPages(System.Boolean)">
            <summary>
            Controls whether meta refresh pages are output.
            </summary>
            <param name="metaRefreshPages">If <c>true</c>, meta refresh pages are generated.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Redirect.IncludeHost(System.Boolean)">
            <summary>
            Indicates whether the host should be automatically included in generated redirect links.
            </summary>
            <param name="includeHost"><c>true</c> to include the host.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Redirect.WithAdditionalOutput(Wyam.Common.IO.FilePath,System.Func{System.Collections.Generic.IDictionary{Wyam.Common.IO.FilePath,System.String},System.String})">
            <summary>
            Adds additional output files that you specify by supplying a delegate that takes a dictionary
            of redirected paths to destination URLs.
            </summary>
            <param name="path">The path of the output file (must be relative).</param>
            <param name="content">A delegate that takes a dictionary with keys equal to each redirected file
            and values equal to the destination URL. The delegate should return the content of the output file.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Redirect.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Contents.Replace">
            <summary>
            Replaces a search string in the content of each input document with new content.
            </summary>
            <category>Content</category>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Replace.#ctor(System.String,System.Object)">
            <summary>
            Replaces all occurrences of the search string in every input document
            with the string value of the specified object.
            </summary>
            <param name="search">The string to search for.</param>
            <param name="content">The content to replace the search string with.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Replace.#ctor(System.String,Wyam.Common.Configuration.ContextConfig)">
            <summary>
            Replaces all occurrences of the search string in every input document with the
            string value of the returned object. This allows you to specify different content
            depending on the execution context.
            </summary>
            <param name="search">The string to search for.</param>
            <param name="content">A delegate that returns the content to replace the search string with.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Replace.#ctor(System.String,Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Replaces all occurrences of the search string in every input document with the
            string value of the returned object. This allows you to specify different content
            for each document depending on the input document.
            </summary>
            <param name="search">The string to search for.</param>
            <param name="content">A delegate that returns the content to replace the search string with.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Replace.#ctor(System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            The specified modules are executed against an empty initial document and the resulting
            document content replaces all occurrences of the search string in every input document
            (possibly creating more than one output document for each input document).
            </summary>
            <param name="search">The string to search for.</param>
            <param name="modules">Modules that output the content to replace the search string with.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Replace.#ctor(System.String,System.Func{System.Text.RegularExpressions.Match,System.Object})">
            <summary>
            Replaces all occurrences of the search string in every input document
            with the string value of the objects returned by the delegate. The delegate will be called
            for each Match in the supplied regular expression.
            </summary>
            <param name="search">The string to search for (interpreted as a regular expression).</param>
            <param name="contentFinder">A delegate that returns the content to replace the match.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Replace.#ctor(System.String,System.Func{System.Text.RegularExpressions.Match,Wyam.Common.Documents.IDocument,System.Object})">
            <summary>
            Replaces all occurrences of the search string in every input document
            with the string value of the objects returned by the delegate. The delegate will be called
            for each Match in the supplied regular expression.
            </summary>
            <param name="search">The string to search for (interpreted as a regular expression).</param>
            <param name="contentFinder">A delegate that returns the content to replace the match.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Replace.IsRegex(System.Text.RegularExpressions.RegexOptions)">
            <summary>
            Indicates that the search string(s) should be treated as a regular expression(s)
            with the specified options.
            </summary>
            <param name="regexOptions">The options to use (if any).</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Replace.Execute(System.Object,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Contents.ReplaceIn">
            <summary>
            Replaces a search string in the specified content with the content of input documents.
            </summary>
            <remarks>
            This is sort of like the inverse of the Replace module and is very useful for simple
            template substitution.
            </remarks>
            <category>Content</category>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.ReplaceIn.#ctor(System.String,System.Object)">
            <summary>
            Replaces all occurrences of the search string in the string value of the
            specified object with the content of each input document.
            </summary>
            <param name="search">The string to search for.</param>
            <param name="content">The content within which to search for the search string.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.ReplaceIn.#ctor(System.String,Wyam.Common.Configuration.ContextConfig)">
            <summary>
            Replaces all occurrences of the search string in the string value of the
            returned object with the content of each input document. This allows you to
            specify different content depending on the execution context.
            </summary>
            <param name="search">The string to search for.</param>
            <param name="content">A delegate that returns the content within which
            to search for the search string.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.ReplaceIn.#ctor(System.String,Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Replaces all occurrences of the search string in the string value of the returned
            object with the content of each input document. This allows you to specify different
            content for each document depending on the input document.
            </summary>
            <param name="search">The string to search for.</param>
            <param name="content">A delegate that returns the content within which
            to search for the search string.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.ReplaceIn.#ctor(System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            The specified modules are executed against an empty initial document and all
            occurrences of the search string in the resulting document content are replaced by the content of
            each input document (possibly creating more than one output document for each input document).
            </summary>
            <param name="search">The string to search for.</param>
            <param name="modules">Modules that output the content within which
            to search for the search string.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.ReplaceIn.IsRegex(System.Text.RegularExpressions.RegexOptions)">
            <summary>
            Indicates that the search string(s) should be treated as a regular expression(s)
            with the specified options.
            </summary>
            <param name="regexOptions">The options to use (if any).</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.ReplaceIn.Execute(System.Object,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Contents.Shortcodes">
            <summary>
            Renders shortcodes in the input documents.
            </summary>
            <category>Content</category>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Shortcodes.#ctor(System.Boolean)">
            <summary>
            Renders shortcodes in the input documents using the default start and end delimiters.
            </summary>
            <param name="preRender">
            Indicates if the module is being executed pre-template-rendering (<c>true</c>)
            or post-template-rendering (<c>false</c>). The default delimiters are different
            depending on when the module is executed.
            </param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Shortcodes.#ctor(System.String,System.String)">
            <summary>
            Renders shortcodes in the input documents using custom start and end delimiters.
            </summary>
            <param name="startDelimiter">The shortcode start delimiter.</param>
            <param name="endDelimiter">The shortcode end delimiter.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Shortcodes.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Contents.Sitemap">
            <summary>
            Generates a sitemap from the input documents.
            </summary>
            <remarks>
            This module generates a sitemap from the input documents. The output document contains the sitemap XML as it's content.
            You can supply a location for each item in the sitemap as a <c>string</c> (with an optional function to format it
            into an absolute HTML path) or you can supply a <c>SitemapItem</c> for more control. You can also specify the
            <c>Hostname</c> metadata key (as a <c>string</c>) for each input document, which will be prepended to all locations.
            </remarks>
            <metadata cref="F:Wyam.Common.Meta.Keys.SitemapItem" usage="Input" />
            <category>Content</category>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Sitemap.#ctor(System.Func{System.String,System.String})">
            <summary>
            Creates a sitemap using the metadata key <c>SitemapItem</c> which should contain either a <c>string</c> that
            contains the location for each input document or a <c>SitemapItem</c> instance with the location
            and other information. If the key <c>SitemapItem</c> is not found or does not contain the correct type of object,
            a link to the document will be used.
            </summary>
            <param name="locationFormatter">A location formatter that will be applied to the location of each input after
            getting the value of the <c>SitemapItem</c> metadata key.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Sitemap.#ctor(System.String,System.Func{System.String,System.String})">
            <summary>
            Creates a sitemap using the specified metadata key which should contain either a <c>string</c> that
            contains the location for each input document or a <c>SitemapItem</c> instance with the location
            and other information. If the metadata key is not found or does not contain the correct type of object,
            a link to the document will be used.
            </summary>
            <param name="sitemapItemOrLocationMetadataKey">A metadata key that contains either a <c>SitemapItem</c> or
            a <c>string</c> location for each input document.</param>
            <param name="locationFormatter">A location formatter that will be applied to the location of each input after
            getting the value of the specified metadata key.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Sitemap.#ctor(Wyam.Common.Configuration.DocumentConfig,System.Func{System.String,System.String})">
            <summary>
            Creates a sitemap using the specified delegate which should return either a <c>string</c> that
            contains the location for each input document or a <c>SitemapItem</c> instance with the location
            and other information. If the delegate returns <c>null</c> or does not return the correct type of object,
            a link to the document will be used.
            </summary>
            <param name="sitemapItemOrLocation">A delegate that either returns a <c>SitemapItem</c> instance or a <c>string</c>
            with the desired item location. If the delegate returns <c>null</c>, the input document is not added to the sitemap.</param>
            <param name="locationFormatter">A location formatter that will be applied to the location of each input after
            getting the value of the specified metadata key.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Contents.Sitemap.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.Branch">
            <summary>
            Evaluates the specified modules with each input document as the initial
            document and then outputs the original input documents without modification.
            </summary>
            <remarks>
            This allows a sequence of modules to execute without impacting the "main" module sequence.
            In other words, Branch executes it's child modules as if there were no Branch module
            in the sequence, but then when it's child modules are done, the main sequence of
            modules is executed as if there were no Branch.
            </remarks>
            <example>
            Assume you have a module, AddOne, that just adds 1 to whatever numeric value is in
            the content of the input document(s). The input and output content of the
            following pipeline should demonstrate what Branch does:
            <code>
                                // Input Content      // Output Content
            Pipelines.Add(
                AddOne(),       // [Empty]            // 0
                AddOne(),       // 0                  // 1
                AddOne(),       // 1                  // 2
                Branch(
                    AddOne(),   // 2                  // 3
                    AddOne()    // 3                  // 4
                ),
                AddOne(),       // 2                  // 3
                AddOne()        // 3                  // 4
            );
            </code>
            You can see that the input content to the AddOne modules after the Branch is the
            same as the input content to the AddOne modules inside the branch. The result of
            the modules in the Branch had no impact on those modules that run after the Branch.
            This is true for both content and metadata. If any modules inside the Branch created
            or changed metadata, it would be forgotten once the Branch was done.
            </example>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Branch.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            Evaluates the specified modules with each input document as the initial
            document and then outputs the original input documents without modification.
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Branch.#ctor(System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Evaluates the specified modules with each input document as the initial
            document and then outputs the original input documents without modification.
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Branch.Where(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Limits the documents passed to the child modules to those that satisfy the
            supplied predicate. All original input documents are output without
            modification regardless of whether they satisfy the predicate.
            </summary>
            <param name="predicate">A delegate that should return a <c>bool</c>.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Branch.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.Combine">
            <summary>
            Combines all of the input documents into a single output document.
            </summary>
            <remarks>
            The first input document serves as the basis for the combine operation. The content of every
            following input document is appended to the existing combined content, and the metadata of
            every following document replaces that of the previous documents (any metadata for which
            keys don't exist in the following documents is retained). A single output document with
            the combined content and metadata is output.
            </remarks>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Combine.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.Concat">
            <summary>
            Executes modules and concatenates their output with the input documents.
            </summary>
            <remarks>
            The specified modules are executed with an empty initial document and then
            outputs the original input documents without modification concatenated with the
            results from the specified module sequence.
            </remarks>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Concat.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            Executes the specified modules with an empty initial input document.
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Concat.#ctor(System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Executes the specified modules with an empty initial input document.
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Concat.Where(System.Func{Wyam.Common.Execution.IExecutionContext,Wyam.Common.Documents.IDocument,System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},System.Boolean})">
            <summary>
            Specifies a predicate to use when determining which documents to concatenate with the original list.
            </summary>
            <param name="predicate">The predicate to evaluate.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Concat.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.ConcatBranch">
            <summary>
            Executes a sequence of modules against the input documents and concatenates their results and the original input.
            This is similar to <see cref="T:Wyam.Core.Modules.Control.Branch"/> except that the results of the specified modules are concatenated with the
            original input documents instead of being forgotten.
            </summary>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.ConcatBranch.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            Evaluates the specified modules with each input document as the initial
            document and then outputs the original input documents without modification concatenated with the result documents
            from the specified modules.
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.ConcatBranch.#ctor(System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Evaluates the specified modules with each input document as the initial
            document and then outputs the original input documents without modification concatenated with the result documents
            from the specified modules.
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.ConcatBranch.Where(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Limits the documents passed to the child modules to those that satisfy the
            supplied predicate. All original input documents are output without
            modification regardless of whether they satisfy the predicate.
            </summary>
            <param name="predicate">A delegate that should return a <c>bool</c>.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.ConcatBranch.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.Documents">
            <summary>
            Inserts documents into the current pipeline.
            </summary>
            <remarks>
            Documents can be inserted either by replacing pipeline documents with previously
            processed ones or by creating new ones. If getting previously processed documents from another pipeline,
            this module copies the documents and places them into the current pipeline. Note that because this module
            does not remove the documents from their original pipeline it's likely you will end up with documents that
            have the same content and metadata in two different pipelines. This module does not include the input
            documents as part of it's output. If you want to concatenate the result of this module with the input
            documents, wrap it with the <see cref="T:Wyam.Core.Modules.Control.Concat"/> module.
            </remarks>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Documents.#ctor">
            <summary>
            This outputs all existing documents from all pipelines (except the current one).
            </summary>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Documents.#ctor(System.String)">
            <summary>
            This outputs the documents from the specified pipeline.
            </summary>
            <param name="pipeline">The pipeline to output documents from.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Documents.#ctor(Wyam.Common.Configuration.ContextConfig)">
            <summary>
            This will get documents based on the context so you can perform custom document
            fetching behavior. The delegate will only be called once,
            regardless of the number of input documents. The return value
            is expected to be a <c>IEnumerable&lt;IDocument&gt;</c>.
            </summary>
            <param name="documents">A delegate that should return
            a <c>IEnumerable&lt;IDocument&gt;</c> containing the documents to output.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Documents.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            This will get documents based on each input document. The output will be the
            aggregate of all returned documents for each input document. The return value
            is expected to be a <c>IEnumerable&lt;IDocument&gt;</c>.
            </summary>
            <param name="documents">A delegate that should return
            a <c>IEnumerable&lt;IDocument&gt;</c> containing the documents to
            output for each input document.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Documents.#ctor(System.Int32)">
            <summary>
            Generates a specified number of new empty documents.
            </summary>
            <param name="count">The number of new documents to output.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Documents.#ctor(System.String[])">
            <summary>
            Generates new documents with the specified content.
            </summary>
            <param name="content">The content for each output document.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Documents.#ctor(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}}[])">
            <summary>
            Generates new documents with the specified metadata.
            </summary>
            <param name="metadata">The metadata for each output document.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Documents.#ctor(System.Tuple{System.String,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}}}[])">
            <summary>
            Generates new documents with the specified content and metadata.
            </summary>
            <param name="contentAndMetadata">The content and metadata for each output document.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Documents.Where(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Only documents that satisfy the predicate will be output.
            </summary>
            <param name="predicate">A delegate that should return a <c>bool</c>.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Documents.FromPipelines(System.String[])">
            <summary>
            Gets documents from additional pipeline(s). The final sequence of documents will
            be in the order they appear from all specified pipelines. If the empty constructor
            is used that outputs documents from all pipelines, this will override that behavior
            and only output the specified pipelines. Likewise, if another constructor was used
            that relies on a <see cref="T:Wyam.Common.Configuration.ContextConfig"/> or <see cref="T:Wyam.Common.Configuration.DocumentConfig"/> then
            using this method will throw <see cref="T:System.InvalidOperationException"/>.
            </summary>
            <param name="pipelines">The additional pipelines to get documents from.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Documents.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.ForEach">
            <summary>
            Executes the input documents one at a time against the specified child modules.
            </summary>
            <remarks>
            Normally, documents are executed in a breadth-first traversal where all documents
            are executed against a module before continuing with the next module. This module
            allows you to conduct a depth-first traversal instead by executing each document
            one at a time against the child modules before continuing with the next document.
            It can be especially helpful when trying to control memory usage for large
            documents such as images because it lets you move the documents through the
            pipeline one at a time. The aggregate outputs from each sequence of child modules
            executed against each document will be output.
            </remarks>
            <example>
            <code>
            Pipelines.Add("ImageProcessing",
               // ReadFiles will create N new documents with a Stream
                // (but nothing will be read into memory yet)
                ReadFiles(@"images\*"),
                // Each document will be individually sent through the
                // sequence of ForEach child pipelines
                ForEach(
                    // This will load the *current* document into memory
                    // and perform image manipulations on it
                    ImageProcessor()
                        //...
                        ,
                    // and this will save the stream to disk, replacing it with
                    // a file stream, thus freeing up memory for the next file
                    WriteFiles()
                )
            );
            </code>
            </example>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.ForEach.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            Specifies the modules to execute against the input document one at a time.
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.ForEach.#ctor(System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Specifies the modules to execute against the input document one at a time.
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.ForEach.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.FrontMatter">
            <summary>
            Extracts the first part of content for each document and sends it to a child module for processing.
            </summary>
            <remarks>
            This module is typically used in conjunction with the Yaml module to enable putting YAML front
            matter in a file. First, the content of each input document is scanned for a line that consists
            entirely of the delimiter character or (- by default) or the delimiter string. Once found, the
            content before the delimiter is passed to the specified child modules. Any metadata from the child
            module output document(s) is added to the input document. Note that if the child modules result
            in more than one output document, multiple clones of the input document will be made for each one.
            The output document content is set to the original content without the front matter.
            </remarks>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.FrontMatter.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            Uses the default delimiter character and passes any front matter to the specified child modules for processing.
            </summary>
            <param name="modules">The modules to execute against the front matter.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.FrontMatter.#ctor(System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Uses the default delimiter character and passes any front matter to the specified child modules for processing.
            </summary>
            <param name="modules">The modules to execute against the front matter.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.FrontMatter.#ctor(System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            Uses the specified delimiter string and passes any front matter to the specified child modules for processing.
            </summary>
            <param name="delimiter">The delimiter to use.</param>
            <param name="modules">The modules to execute against the front matter.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.FrontMatter.#ctor(System.String,System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Uses the specified delimiter string and passes any front matter to the specified child modules for processing.
            </summary>
            <param name="delimiter">The delimiter to use.</param>
            <param name="modules">The modules to execute against the front matter.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.FrontMatter.#ctor(System.Char,Wyam.Common.Modules.IModule[])">
            <summary>
            Uses the specified delimiter character and passes any front matter to the specified child modules for processing.
            </summary>
            <param name="delimiter">The delimiter to use.</param>
            <param name="modules">The modules to execute against the front matter.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.FrontMatter.#ctor(System.Char,System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Uses the specified delimiter character and passes any front matter to the specified child modules for processing.
            </summary>
            <param name="delimiter">The delimiter to use.</param>
            <param name="modules">The modules to execute against the front matter.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.FrontMatter.IgnoreDelimiterOnFirstLine(System.Boolean)">
            <summary>
            Ignores the delimiter if it appears on the first line. This is useful when processing Jekyll style front matter that
            has the delimiter both above and below the front matter content. The default behavior is <c>true</c>.
            </summary>
            <param name="ignore">If set to <c>true</c>, ignore the delimiter if it appears on the first line.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.FrontMatter.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.GroupBy">
            <summary>
            Splits a sequence of documents into groups based on a specified function or metadata key.
            </summary>
            <remarks>
            This module forms groups from the output documents of the specified modules.
            Each input document is cloned for each group and metadata related
            to the groups, including the sequence of documents for each group,
            is added to each clone. For example, if you have 2 input documents
            and the result of grouping is 3 groups, this module will output 6 documents.
            </remarks>
            <metadata cref="F:Wyam.Common.Meta.Keys.GroupDocuments" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.GroupKey" usage="Output" />
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupBy.#ctor(Wyam.Common.Configuration.DocumentConfig,Wyam.Common.Modules.IModule[])">
            <summary>
            Partitions the result of the specified modules into groups with matching keys
            based on the key delegate.
            The input documents to GroupBy are used as
            the initial input documents to the specified modules.
            </summary>
            <param name="key">A delegate that returns the group key.</param>
            <param name="modules">Modules to execute on the input documents prior to grouping.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupBy.#ctor(Wyam.Common.Configuration.DocumentConfig,System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Partitions the result of the specified modules into groups with matching keys
            based on the key delegate.
            The input documents to GroupBy are used as
            the initial input documents to the specified modules.
            </summary>
            <param name="key">A delegate that returns the group key.</param>
            <param name="modules">Modules to execute on the input documents prior to grouping.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupBy.#ctor(System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            Partitions the result of the specified modules into groups with matching keys
            based on the value at the specified metadata key.
            If a document to group does not contain the specified metadata key, it is not included in any output groups.
            The input documents to GroupBy are used as
            the initial input documents to the specified modules.
            </summary>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="modules">Modules to execute on the input documents prior to grouping.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupBy.#ctor(System.String,System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Partitions the result of the specified modules into groups with matching keys
            based on the value at the specified metadata key.
            If a document to group does not contain the specified metadata key, it is not included in any output groups.
            The input documents to GroupBy are used as
            the initial input documents to the specified modules.
            </summary>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="modules">Modules to execute on the input documents prior to grouping.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupBy.Where(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Limits the documents to be grouped to those that satisfy the supplied predicate.
            </summary>
            <param name="predicate">A delegate that should return a <c>bool</c>.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupBy.WithComparer(System.Collections.Generic.IEqualityComparer{System.Object})">
            <summary>
            Specifies an equality comparer to use for the grouping.
            </summary>
            <param name="comparer">The equality comparer to use.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupBy.WithComparer``1(System.Collections.Generic.IEqualityComparer{``0})">
            <summary>
            Specifies a typed equality comparer to use for the grouping. A conversion to the
            comparer type will be attempted for all metadata values. If the conversion fails,
            the value will not be considered equal. Note that this will also have the effect
            of treating different convertible types as being of the same type. For example,
            if you have two group keys, 1 and "1" (in that order), and use a string-based comparison, you will
            only end up with a single group for those documents with a group key of 1 (since the <c>int</c> key came first).
            </summary>
            <param name="comparer">The typed equality comparer to use.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupBy.WithEmptyOutputIfNoGroups(System.Boolean)">
            <summary>
            Specifies that no documents should be output if there are no groups. This is in contrast to the
            default behavior of outputting the unmodified input documents if no groups were found.
            </summary>
            <param name="emptyOutput"><c>true</c> to not output documents when no groups are found.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupBy.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.GroupByMany">
            <summary>
            Splits a sequence of documents into groups based on a specified function or metadata key
            that returns or contains a sequence of group keys.
            </summary>
            <remarks>
            This module forms groups from the output documents of the specified modules.
            If the function or metadata key returns or contains an enumerable, each item in the enumerable
            will become one of the grouping keys. If a document contains multiple group keys, it will
            be included in multiple groups. A good example is a tag engine where each document can contain
            any number of tags and you want to make groups for each tag including all the documents with that tag.
            Each input document is cloned for each group and metadata related
            to the groups, including the sequence of documents for each group,
            is added to each clone. For example, if you have 2 input documents
            and the result of grouping is 3 groups, this module will output 6 documents.
            </remarks>
            <metadata cref="F:Wyam.Common.Meta.Keys.GroupDocuments" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.GroupKey" usage="Output" />
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupByMany.#ctor(Wyam.Common.Configuration.DocumentConfig,Wyam.Common.Modules.IModule[])">
            <summary>
            Partitions the result of the specified modules into groups with matching keys
            based on the key delegate.
            The input documents to GroupBy are used as
            the initial input documents to the specified modules.
            </summary>
            <param name="key">A delegate that returns the group keys.</param>
            <param name="modules">Modules to execute on the input documents prior to grouping.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupByMany.#ctor(Wyam.Common.Configuration.DocumentConfig,System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Partitions the result of the specified modules into groups with matching keys
            based on the key delegate.
            The input documents to GroupBy are used as
            the initial input documents to the specified modules.
            </summary>
            <param name="key">A delegate that returns the group keys.</param>
            <param name="modules">Modules to execute on the input documents prior to grouping.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupByMany.#ctor(System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            Partitions the result of the specified modules into groups with matching keys
            based on the value at the specified metadata key.
            If a document to group does not contain the specified metadata key, it is not included in any output groups.
            The input documents to GroupBy are used as
            the initial input documents to the specified modules.
            </summary>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="modules">Modules to execute on the input documents prior to grouping.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupByMany.#ctor(System.String,System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Partitions the result of the specified modules into groups with matching keys
            based on the value at the specified metadata key.
            If a document to group does not contain the specified metadata key, it is not included in any output groups.
            The input documents to GroupBy are used as
            the initial input documents to the specified modules.
            </summary>
            <param name="keyMetadataKey">The key metadata key.</param>
            <param name="modules">Modules to execute on the input documents prior to grouping.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupByMany.Where(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Limits the documents to be grouped to those that satisfy the supplied predicate.
            </summary>
            <param name="predicate">A delegate that should return a <c>bool</c>.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupByMany.WithComparer(System.Collections.Generic.IEqualityComparer{System.Object})">
            <summary>
            Specifies an equality comparer to use for the grouping.
            </summary>
            <param name="comparer">The equality comparer to use.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupByMany.WithComparer``1(System.Collections.Generic.IEqualityComparer{``0})">
            <summary>
            Specifies a typed equality comparer to use for the grouping. A conversion to the
            comparer type will be attempted for all metadata values. If the conversion fails,
            the value will not be considered equal. Note that this will also have the effect
            of treating different convertible types as being of the same type. For example,
            if you have two group keys, 1 and "1" (in that order), and use a string-based comparison, you will
            only end up with a single group for those documents with a group key of 1 (since the <c>int</c> key came first).
            </summary>
            <param name="comparer">The typed equality comparer to use.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupByMany.WithEmptyOutputIfNoGroups(System.Boolean)">
            <summary>
            Specifies that no documents should be output if there are no groups. This is in contrast to the
            default behavior of outputting the unmodified input documents if no groups were found.
            </summary>
            <param name="emptyOutput"><c>true</c> to not output documents when no groups are found.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.GroupByMany.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.If">
            <summary>
            Evaluates a series of child modules for each input document if a specified condition is met.
            </summary>
            <remarks>
            Any result documents from the child modules will be returned as the result of the
            this module. Any input documents that don't match a predicate will be returned as
            outputs without modification.
            </remarks>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.#ctor(Wyam.Common.Configuration.DocumentConfig,Wyam.Common.Modules.IModule[])">
            <summary>
            Specifies a predicate and a series of child modules to be evaluated if the predicate returns <c>true</c>.
            The predicate will be evaluated against every input document individually.
            </summary>
            <param name="predicate">A predicate delegate that should return a <c>bool</c>.</param>
            <param name="modules">The modules to execute on documents where the predicate is <c>true</c>.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.#ctor(Wyam.Common.Configuration.ContextConfig,Wyam.Common.Modules.IModule[])">
            <summary>
            Specifies a predicate and a series of child modules to be evaluated if the predicate returns <c>true</c>.
            The predicate will be evaluated once for all input documents.
            </summary>
            <param name="predicate">A predicate delegate that should return a <c>bool</c>.</param>
            <param name="modules">The modules to execute on documents if the predicate is <c>true</c>.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.ElseIf(Wyam.Common.Configuration.DocumentConfig,Wyam.Common.Modules.IModule[])">
            <summary>
            Specifies an alternate condition to be tested on documents that did not satisfy
            previous conditions. You can chain together as many <c>ElseIf</c> calls as needed.
            The predicate will be evaluated against every input document individually.
            </summary>
            <param name="predicate">A predicate delegate that should return a <c>bool</c>.</param>
            <param name="modules">The modules to execute on documents where the predicate is <c>true</c>.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.ElseIf(Wyam.Common.Configuration.ContextConfig,Wyam.Common.Modules.IModule[])">
            <summary>
            Specifies an alternate condition to be tested on documents that did not satisfy
            previous conditions. You can chain together as many <c>ElseIf</c> calls as needed.
            The predicate will be evaluated once for all input documents.
            </summary>
            <param name="predicate">A predicate delegate that should return a <c>bool</c>.</param>
            <param name="modules">The modules to execute on documents if the predicate is <c>true</c>.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.Else(Wyam.Common.Modules.IModule[])">
            <summary>
            This should be at the end of your fluent method chain and will evaluate the
            specified child modules on all documents that did not satisfy previous predicates.
            The predicate will be evaluated against every input document individually.
            </summary>
            <param name="modules">The modules to execute on documents where no previous predicate was <c>true</c>.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.WithoutUnmatchedDocuments(System.Boolean)">
            <summary>
            The default behavior of this module is to "fall through" any documents that
            didn't match one of the conditions and add it to the result set. This method
            allows you to change that behavior and prevent unmatched documents from being
            added to the result set.
            </summary>
            <param name="withoutUnmatchedDocuments">Set to <c>true</c> to prevent unmatched documents from being added to the resut set.</param>
            <returns>The current module.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.Modules.Control.If.Count">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.Modules.Control.If.IsReadOnly">
            <inheritdoc />
        </member>
        <member name="P:Wyam.Core.Modules.Control.If.Item(System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.System#Collections#IEnumerable#GetEnumerator">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.GetEnumerator">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.IndexOf(Wyam.Core.Modules.Control.IfCondition)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.Insert(System.Int32,Wyam.Core.Modules.Control.IfCondition)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.RemoveAt(System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.Add(Wyam.Core.Modules.Control.IfCondition)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.Clear">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.Contains(Wyam.Core.Modules.Control.IfCondition)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.CopyTo(Wyam.Core.Modules.Control.IfCondition[],System.Int32)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Modules.Control.If.Remove(Wyam.Core.Modules.Control.IfCondition)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.Merge">
            <summary>
            Replaces the content and merges metadata of each input document with the results of specified modules.
            </summary>
            <remarks>
            Replaces the content and merges the metadata of each input document with the results of the specified modules
            executed against an empty initial document. If more than one output document is generated by the specified modules,
            each input document will be merged with each result document.
            </remarks>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Merge.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            The specified modules are executed against an empty initial document and the results
            are applied to every input document (possibly creating more than one output
            document for each input document).
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Merge.#ctor(System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            The specified modules are executed against an empty initial document and the results
            are applied to every input document (possibly creating more than one output
            document for each input document).
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Merge.ForEachDocument">
            <summary>
            Specifies that the whole sequence of modules should be executed for every input document
            (as opposed to the default behavior of the sequence of modules only being executed once
            with an empty initial document). This method has no effect if no modules are specified.
            </summary>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Merge.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.OrderBy">
            <summary>
            Orders the input documents based on the specified key function.
            </summary>
            <remarks>
            The ordered documents are output as the result of this module.
            </remarks>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.OrderBy.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Orders the input documents using the specified delegate to get the ordering key.
            </summary>
            <param name="key">A delegate that should return the key to use for ordering.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.OrderBy.ThenBy(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Orders the input documents using the specified delegate to get a secondary ordering key.
            You can chain as many ThenBy calls together as needed.
            </summary>
            <param name="key">A delegate that should return the key to use for ordering.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.OrderBy.Descending(System.Boolean)">
            <summary>
            Specifies whether the documents should be output in descending order (the default is ascending order).
            If you use this method after called ThenBy, the descending ordering will apply to the secondary sort.
            </summary>
            <param name="descending">If set to <c>true</c>, the documents are output in descending order.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.OrderBy.WithComparer(System.Collections.Generic.IComparer{System.Object})">
            <summary>
            Specifies a comparer to use for the ordering.
            </summary>
            <param name="comparer">The comparer to use.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.OrderBy.WithComparer``1(System.Collections.Generic.IComparer{``0})">
            <summary>
            Specifies a typed comparer to use for the ordering. A conversion to the
            comparer type will be attempted for all metadata values. If the conversion fails,
            the values will be considered equivalent. Note that this will also have the effect
            of treating different convertible types as being of the same type. For example,
            if you have two keys, 1 and "1", and use a string-based comparison, the
            documents will compare as equal.
            </summary>
            <param name="comparer">The typed comparer to use.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.OrderBy.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.Paginate">
             <summary>
             Splits a sequence of documents into multiple pages.
             </summary>
             <remarks>
             This module forms pages from the output documents of the specified modules.
             Each input document is cloned for each page and metadata related
             to the pages, including the sequence of documents for each page,
             is added to each clone. For example, if you have 2 input documents
             and the result of paging is 3 pages, this module will output 6 documents.
             Note that if there are no documents to paginate, this module will still
             output an empty page without any documents inside the page.
             </remarks>
             <example>
             If your input document is a Razor template for a blog archive, you can use
             Paginate to get pages of 10 blog posts each. If you have 50 blog posts, the
             result of the Paginate module will be 5 copies of your input archive template,
             one for each page. Your configuration file might look something like this:
             <code>
             Pipelines.Add("Posts",
                 ReadFiles("*.md"),
                 Markdown(),
                 WriteFiles("html")
             );
            
             Pipelines.Add("Archive",
                 ReadFiles("archive.cshtml"),
                 Paginate(10,
                     Documents("Posts")
                 ),
                 Razor(),
                 WriteFiles(string.Format("archive-{0}.html", @doc["CurrentPage"]))
             );
             </code>
             </example>
             <metadata cref="F:Wyam.Common.Meta.Keys.PageDocuments" usage="Output" />
             <metadata cref="F:Wyam.Common.Meta.Keys.CurrentPage" usage="Output" />
             <metadata cref="F:Wyam.Common.Meta.Keys.TotalPages" usage="Output" />
             <metadata cref="F:Wyam.Common.Meta.Keys.TotalItems" usage="Output" />
             <metadata cref="F:Wyam.Common.Meta.Keys.HasNextPage" usage="Output" />
             <metadata cref="F:Wyam.Common.Meta.Keys.HasPreviousPage" usage="Output" />
             <metadata cref="F:Wyam.Common.Meta.Keys.NextPage" usage="Output" />
             <metadata cref="F:Wyam.Common.Meta.Keys.PreviousPage" usage="Output" />
             <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Paginate.#ctor(System.Int32,Wyam.Common.Modules.IModule[])">
            <summary>
            Partitions the result of the specified modules into the specified number of pages. The
            input documents to Paginate are used as the initial input documents to the specified modules.
            </summary>
            <param name="pageSize">The number of documents on each page.</param>
            <param name="modules">The modules to execute to get the documents to page.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Paginate.#ctor(System.Int32,System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Partitions the result of the specified modules into the specified number of pages. The
            input documents to Paginate are used as the initial input documents to the specified modules.
            </summary>
            <param name="pageSize">The number of documents on each page.</param>
            <param name="modules">The modules to execute to get the documents to page.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Paginate.Where(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Limits the documents to be paged to those that satisfy the supplied predicate.
            </summary>
            <param name="predicate">A delegate that should return a <c>bool</c>.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Paginate.TakePages(System.Int32)">
            <summary>
            Only outputs a specific number of pages.
            </summary>
            <param name="count">The number of pages to output.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Paginate.SkipPages(System.Int32)">
            <summary>
            Skips a specified number of pages before outputting pages.
            </summary>
            <param name="count">The number of pages to skip.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Paginate.WithPageMetadata(System.String,Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Adds the specified metadata to each page index document. This must be performed
            within the paginate module. If you attempt to process the page index documents
            from the paginate module after execution, it will "disconnect" metadata for
            those documents like <see cref="F:Wyam.Common.Meta.Keys.NextPage"/> since you're effectivly
            creating new documents and the ones those keys refer to will be outdated.
            </summary>
            <param name="key">The key of the metadata to add.</param>
            <param name="metadata">A delegate with the value for the metadata.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Paginate.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.Sidecar">
            <summary>
            Extracts the content of a Sidecar file for each document and sends it to a child module for processing.
            </summary>
            <remarks>
            This module is typically used in conjunction with the Yaml module to enable putting YAML in a Sidecar file.
            First, an attempt is made to find the specified sidecar file for each input document. Once found, the
            content in this file is passed to the specified child module(s). Any metadata from the child
            module output document(s) is added to the input document. Note that if the child module(s) result
            in more than one output document, multiple clones of the input document will be made for each one.
            The output document content is set to the original input document content.
            </remarks>
            <metadata cref="F:Wyam.Common.Meta.Keys.SourceFilePath" usage="Input">
            Used as the default location at which to search for sidecar files for a given document.
            </metadata>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Sidecar.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            Searches for sidecar files at the same path as the input document SourceFilePath with the additional extension .meta.
            If a sidecar file is found, it's content is passed to the specified child modules for processing.
            </summary>
            <param name="modules">The modules to execute against the sidecar file.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Sidecar.#ctor(System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Searches for sidecar files at the same path as the input document SourceFilePath with the additional extension .meta.
            If a sidecar file is found, it's content is passed to the specified child modules for processing.
            </summary>
            <param name="modules">The modules to execute against the sidecar file.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Sidecar.#ctor(System.String,Wyam.Common.Modules.IModule[])">
            <summary>
            Searches for sidecar files at the same path as the input document SourceFilePath with the specified additional extension.
            If a sidecar file is found, it's content is passed to the specified child modules for processing.
            </summary>
            <param name="extension">The extension to search.</param>
            <param name="modules">The modules to execute against the sidecar file.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Sidecar.#ctor(System.String,System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Searches for sidecar files at the same path as the input document SourceFilePath with the specified additional extension.
            If a sidecar file is found, it's content is passed to the specified child modules for processing.
            </summary>
            <param name="extension">The extension to search.</param>
            <param name="modules">The modules to execute against the sidecar file.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Sidecar.#ctor(Wyam.Common.Configuration.DocumentConfig,Wyam.Common.Modules.IModule[])">
            <summary>
            Uses a delegate to describe where to find the sidecar file for each input document.
            If a sidecar file is found, it's content is passed to the specified child modules for processing.
            </summary>
            <param name="sidecarPath">A delegate that returns a <see cref="T:Wyam.Common.IO.FilePath"/> with the desired sidecar path.</param>
            <param name="modules">The modules to execute against the sidecar file.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Sidecar.#ctor(Wyam.Common.Configuration.DocumentConfig,System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Uses a delegate to describe where to find the sidecar file for each input document.
            If a sidecar file is found, it's content is passed to the specified child modules for processing.
            </summary>
            <param name="sidecarPath">A delegate that returns a <see cref="T:Wyam.Common.IO.FilePath"/> with the desired sidecar path.</param>
            <param name="modules">The modules to execute against the sidecar file.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Sidecar.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.Sort">
            <summary>
            Sorts the input documents based on the specified comparison delegate.
            </summary>
            <remarks>
            The sorted documents are output as the result of this module. This is similar
            to the <see cref="T:Wyam.Core.Modules.Control.OrderBy"/> module but gives greater control over the sorting
            process.
            </remarks>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Sort.#ctor(System.Comparison{Wyam.Common.Documents.IDocument})">
            <summary>
            Creates a sort module.
            </summary>
            <param name="sort">The sorting delegate to use.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Sort.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.Switch">
            <summary>
            Executes sequences of modules depending on whether the input document contains a specified value.
            </summary>
            <remarks>
            When creating a Switch module you specify a delegate that will get an object for each document. Cases are then
            defined via fluent methods that compare the returned object for each document against a supplied object (or array).
            If the defined object or any of the objects in the array for the case equal the one for the document, the modules
            in the case are executed. The output of the module is the aggregate output of executing the specified modules against
            documents matching each case. If a document document match a case, it is output against the default case (if defined)
            or output without modification (if no default is defined).
            </remarks>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Switch.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Defines the delegate that will be invoked against each input document to get the case comparison value.
            </summary>
            <param name="value">A delegate that returns an object to compare cases against.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Switch.Case(System.Object,Wyam.Common.Modules.IModule[])">
            <summary>
            Defines a case.
            </summary>
            <param name="value">The value to compare to the one returned by the document delegate. Must be a primitive object or an array of primitive objects.</param>
            <param name="modules">The modules to execute if the case object (or any objects in the array) matches the document object.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Switch.Default(Wyam.Common.Modules.IModule[])">
            <summary>
            Defines modules to execute against documents that don't match a case.
            </summary>
            <param name="modules">The modules to execute against documents that don't match a case.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Switch.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.Take">
            <summary>
            Takes the first X documents from the current pipeline and discards the rest.
            </summary>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Take.#ctor(System.Int32)">
            <summary>
            Takes the first X documents from the current pipeline and discards the rest.
            </summary>
            <param name="x">An integer representing the number of documents to preserve from the current pipeline.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Take.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Control.Where">
            <summary>
            Filters the current sequence of modules using a predicate.
            </summary>
            <category>Control</category>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Where.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Specifies the predicate to use for filtering documents.
            Only input documents for which the predicate returns <c>true</c> will be output.
            </summary>
            <param name="predicate">A predicate delegate that should return a <c>bool</c>.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Control.Where.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Extensibility.Execute">
            <summary>
            Executes custom code that returns documents, modules, or new content.
            </summary>
            <remarks>
            This module is very useful for customizing pipeline execution without having to write an entire module.
            Returning modules from the delegate is also useful for customizing existing modules based on the
            current set of documents. For example, you can use this module to execute the <see cref="T:Wyam.Core.Modules.Contents.Replace"/> module
            with customized search strings based on the results of other pipelines.
            </remarks>
            <category>Extensibility</category>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.Execute.#ctor(Wyam.Common.Configuration.DocumentConfig,System.Boolean)">
            <summary>
            Specifies a delegate that should be invoked once for each input document. If the delegate
            returns a <c>IEnumerable&lt;IDocument&gt;</c> or <see cref="T:Wyam.Common.Documents.IDocument"/>, the document(s) will be the
            output(s) of this module. If the delegate returns a <c>IEnumerable&lt;IModule&gt;</c> or
            <see cref="T:Wyam.Common.Modules.IModule"/>, the module(s) will be executed with each input document as their input
            and the results will be the output of this module. If the delegate returns null,
            this module will just output the input document. If anything else is returned, the input
            document will be output with the string value of the delegate result as it's content.
            </summary>
            <param name="execute">A delegate to invoke that should return a <c>IEnumerable&lt;IDocument&gt;</c>,
            <see cref="T:Wyam.Common.Documents.IDocument"/>, <c>IEnumerable&lt;IModule&gt;</c>, <see cref="T:Wyam.Common.Modules.IModule"/>, object, or null.</param>
            <param name="parallel">The delegate is usually evaluated and each input document is processed in parallel.
            Setting this to <c>false</c> runs evaluates and processes each document in their original input order.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.Execute.#ctor(System.Action{Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext},System.Boolean)">
            <summary>
            Specifies a delegate that should be invoked once for each input document.
            The output from this module will be the input documents.
            </summary>
            <param name="execute">An action to execute on each input document.</param>
            <param name="parallel">The delegate is usually evaluated and each input document is processed in parallel.
            Setting this to <c>false</c> runs evaluates and processes each document in their original input order.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.Execute.#ctor(Wyam.Common.Configuration.ContextConfig)">
            <summary>
            Specifies a delegate that should be invoked once for all input documents. If the delegate
            returns a <c>IEnumerable&lt;IDocument&gt;</c> or <see cref="T:Wyam.Common.Documents.IDocument"/>, the document(s) will be the
            output(s) of this module. If the delegate returns a <c>IEnumerable&lt;IModule&gt;</c> or
            <see cref="T:Wyam.Common.Modules.IModule"/>, the module(s) will be executed with the input documents as their input
            and the results will be the output of this module. If the delegate returns null,
            this module will just output the input documents. If anything else is returned, an exception will be thrown.
            </summary>
            <param name="execute">A delegate to invoke that should return a <c>IEnumerable&lt;IDocument&gt;</c>,
            <see cref="T:Wyam.Common.Documents.IDocument"/>, <c>IEnumerable&lt;IModule&gt;</c>, <see cref="T:Wyam.Common.Modules.IModule"/>, or null.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.Execute.#ctor(System.Action{Wyam.Common.Execution.IExecutionContext})">
            <summary>
            Specifies a delegate that should be invoked once for all input documents.
            The output from this module will be the input documents.
            </summary>
            <param name="execute">An action to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.Execute.#ctor(System.Func{System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext,System.Object,System.Object})">
            <summary>
            Specifies a delegate that should be invoked for all input documents. If the delegate
            returns a <c>IEnumerable&lt;IDocument&gt;</c> or <see cref="T:Wyam.Common.Documents.IDocument"/>, the document(s) will be the
            output(s) of this module. If the delegate returns null or anything else, this module will just output the input documents.
            The third parameter of the delegate is primarly to aid overload resolution between this and the other constructors.
            The value <c>null</c> will be passed for now, though it might be used for something else in a future version.
            </summary>
            <param name="execute">A delegate to invoke that should return a <c>IEnumerable&lt;IDocument&gt;</c>, <see cref="T:Wyam.Common.Documents.IDocument"/>, or null.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.Execute.Wyam#Common#Modules#IModule#Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Extensibility.ModuleCollection">
             <summary>
             Executes child modules enabling better reuse.
             </summary>
             <remarks>
             All child modules will be executed as if they were inline. This enables you to specify
             a sequence of modules outside of a pipeline and then reuse that sequence of modules
             in multiple pipelines. Note that this module is also handy for wrapping a single module
             that has a complex configuration if you expect to use it in multiple places.
             </remarks>
             <example>
             <code>
             ModuleCollection common = ModuleCollection(ModuleA(), ModuleB(), ModuleC());
            
             Piplines.Add("A",
                 ModuleX(),
                 ModuleY(),
                 common,
                 ModuleZ()
             );
            
             Piplines.Add("B",
                 ModuleX(),
                 common,
                 ModuleZ()
             );
             </code>
             </example>
             <category>Extensibility</category>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.ModuleCollection.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            Creates a module collection with the specified child modules.
            Any <c>null</c> items in the sequence of modules will be discarded.
            </summary>
            <param name="modules">The child modules.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.ModuleCollection.#ctor(System.Collections.Generic.IEnumerable{Wyam.Common.Modules.IModule})">
            <summary>
            Creates a module collection with the specified child modules.
            Any <c>null</c> items in the sequence of modules will be discarded.
            </summary>
            <param name="modules">The child modules.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.ModuleCollection.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Extensibility.Trace">
            <summary>
            Outputs trace messages during execution.
            </summary>
            <remarks>
            This module has no effect on documents and the input documents are passed through to output documents.
            </remarks>
            <category>Extensibility</category>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.Trace.#ctor(System.Object)">
            <summary>
            Outputs the string value of the specified object to trace.
            </summary>
            <param name="content">The content to trace.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.Trace.#ctor(Wyam.Common.Configuration.ContextConfig)">
            <summary>
            Outputs the string value of the returned object to trace. This allows
            you to trace different content depending on the execution context.
            </summary>
            <param name="content">A delegate that returns the content to trace.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.Trace.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Outputs the string value of the returned object to trace. This allows
            you to trace different content for each document depending on the input document.
            </summary>
            <param name="content">A delegate that returns the content to trace.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.Trace.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            The specified modules are executed against an empty initial document and the
            resulting document content is output to trace.
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.Trace.EventType(System.Diagnostics.TraceEventType)">
            <summary>
            Sets the event type to trace.
            </summary>
            <param name="traceEventType">The event type to trace.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Extensibility.Trace.Execute(System.Object,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.IO.CopyFiles">
            <summary>
            Copies the content of files from one path on to another path.
            </summary>
            <remarks>
            For each output document, several metadata values are set with information about the file.
            By default, files are copied from the input folder (or a subfolder) to the same relative
            location in the output folder, but this doesn't have to be the case. The output of this module are documents
            with metadata representing the files copied by the module. Note that the input documents are not output by this
            module.
            </remarks>
            <metadata cref="F:Wyam.Common.Meta.Keys.SourceFilePath" usage="Output">The full path (including file name) of the source file.</metadata>
            <metadata cref="F:Wyam.Common.Meta.Keys.DestinationFilePath" usage="Output">The full path (including file name) of the destination file.</metadata>
            <category>Input/Output</category>
        </member>
        <member name="M:Wyam.Core.Modules.IO.CopyFiles.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Copies all files that match the specified globbing patterns and/or absolute paths. This allows you to specify different
            patterns and/or paths depending on the input document.
            When this constructor is used, the module is evaluated once for every input document, which may result in copying the same file
            more than once (and may also result in IO conflicts since copying is typically done in parallel). It is recommended you only
            specify a function-based source path if there will be no overlap between the path returned from each input document.
            </summary>
            <param name="patterns">A delegate that returns one or more globbing patterns and/or absolute paths.</param>
        </member>
        <member name="M:Wyam.Core.Modules.IO.CopyFiles.#ctor(System.String[])">
            <summary>
            Copies all files that match the specified globbing patterns and/or absolute paths. When this constructor is used, the module is
            evaluated only once against empty input document. This makes it possible to string multiple CopyFiles modules together in one pipeline.
            Keep in mind that the result of the whole pipeline in this case will be documents representing the files copied only by the last CopyFiles
            module in the pipeline (since the output documents of the previous CopyFiles modules will have been consumed by the last one).
            </summary>
            <param name="patterns">The globbing patterns and/or absolute paths to read.</param>
        </member>
        <member name="M:Wyam.Core.Modules.IO.CopyFiles.Where(System.Func{Wyam.Common.IO.IFile,System.Boolean})">
            <summary>
            Specifies a predicate that must be satisfied for the file to be copied.
            </summary>
            <param name="predicate">A predicate that returns <c>true</c> if the file should be copied.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.CopyFiles.To(System.Func{Wyam.Common.IO.IFile,Wyam.Common.IO.FilePath})">
            <summary>
            Specifies an alternate destination path for each file (by default files are copied to their
            same relative path in the output directory). The output of the function should be the full
            file path (including file name) of the destination file. If the delegate returns
            <c>null</c> for a particular file, that file will not be copied.
            </summary>
            <param name="destinationPath">A delegate that specifies an alternate destination.
            The parameter contains the source <see cref="T:Wyam.Common.IO.IFile"/>.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.CopyFiles.To(System.Func{Wyam.Common.IO.IFile,Wyam.Common.IO.IFile,Wyam.Common.IO.FilePath})">
            <summary>
            Specifies an alternate destination path for each file (by default files are copied to their
            same relative path in the output directory). The output of the function should be the full
            file path (including file name) of the destination file. If the delegate returns
            <c>null</c> for a particular file, that file will not be copied. This overload allows you to
            view the <see cref="T:Wyam.Common.IO.IFile"/> where the module would normally have copied the file to and then
            manipulate it (or not) as appropriate.
            </summary>
            <param name="destinationPath">A delegate that specifies an alternate destination.
            The first parameter contains the source <see cref="T:Wyam.Common.IO.IFile"/> and the second contains
            an <see cref="T:Wyam.Common.IO.IFile"/> representing the calculated destination.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.CopyFiles.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.IO.Download">
            <summary>
            Downloads from HTTP and outputs the results as new documents.
            </summary>
            <remarks>
            The original input documents are ignored and are not part of the output
            of this module. If you want to retain the original input documents, consider using the
            <see cref="T:Wyam.Core.Modules.Control.ConcatBranch"/> module.
            </remarks>
            <metadata cref="F:Wyam.Common.Meta.Keys.SourceUri" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.SourceHeaders" usage="Output" />
            <category>Input/Output</category>
        </member>
        <member name="M:Wyam.Core.Modules.IO.Download.#ctor(System.String[])">
            <summary>
            Downloads the specified URIs with a default request header.
            </summary>
            <param name="uris">The URIs to download.</param>
        </member>
        <member name="M:Wyam.Core.Modules.IO.Download.#ctor(System.String,Wyam.Core.Modules.IO.RequestHeaders)">
            <summary>
            Downloads the specified URI with the specified request header.
            </summary>
            <param name="uri">The URI to download.</param>
            <param name="headers">The request header to use.</param>
        </member>
        <member name="M:Wyam.Core.Modules.IO.Download.WithUris(System.String[])">
            <summary>
            Downloads the specified URIs with a default request header.
            </summary>
            <param name="uris">The URIs to download.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.Download.WithUri(System.String,Wyam.Core.Modules.IO.RequestHeaders)">
            <summary>
            Downloads the specified URI with the specified request header.
            </summary>
            <param name="uri">The URI to download.</param>
            <param name="headers">The request header to use.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.Download.WithRequests(Wyam.Core.Modules.IO.DownloadRequest[])">
            <summary>
            Downloads the specified requests.
            </summary>
            <param name="requests">The requests to download.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.Download.CacheResponses(System.Boolean)">
            <summary>
            Indicates whether the downloaded response should be cached between regenerations.
            </summary>
            <param name="cacheResponses">If set to <c>true</c>, the response is cached (the default is <c>false</c>).</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.Download.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.IO.DownloadRequest">
            <summary>
            A download request for use with the <see cref="T:Wyam.Core.Modules.IO.Download"/> module.
            </summary>
        </member>
        <member name="P:Wyam.Core.Modules.IO.DownloadRequest.Uri">
            <summary>
            The URI to download from.
            </summary>
        </member>
        <member name="P:Wyam.Core.Modules.IO.DownloadRequest.Headers">
            <summary>
            Request headers.
            </summary>
        </member>
        <member name="P:Wyam.Core.Modules.IO.DownloadRequest.QueryString">
            <summary>
            The query string parameters. These will be combined with any that already exist in <see cref="P:Wyam.Core.Modules.IO.DownloadRequest.Uri"/>.
            </summary>
        </member>
        <member name="P:Wyam.Core.Modules.IO.DownloadRequest.Method">
            <summary>
            The method to use.
            </summary>
        </member>
        <member name="P:Wyam.Core.Modules.IO.DownloadRequest.Content">
            <summary>
            The content of the request (has no effect for some methods like GET).
            </summary>
        </member>
        <member name="P:Wyam.Core.Modules.IO.DownloadRequest.Credentials">
            <summary>
            The network credentials to use for the request.
            </summary>
        </member>
        <member name="M:Wyam.Core.Modules.IO.DownloadRequest.#ctor(System.String)">
            <summary>
            Creates a new download request.
            </summary>
            <param name="uri">The URI to download from.</param>
        </member>
        <member name="M:Wyam.Core.Modules.IO.DownloadRequest.#ctor(System.Uri)">
            <summary>
            Creates a new download request.
            </summary>
            <param name="uri">The URI to download from.</param>
        </member>
        <member name="M:Wyam.Core.Modules.IO.DownloadRequest.WithHeaders(Wyam.Core.Modules.IO.RequestHeaders)">
            <summary>
            Sets the request headers.
            </summary>
            <param name="headers">The request headers to set.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.DownloadRequest.WithQueryString(System.String,System.String)">
            <summary>
            Sets a query string value.
            </summary>
            <param name="name">The name of the query string parameter.</param>
            <param name="value">The value of the query string parameter.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.DownloadRequest.WithMethod(System.Net.Http.HttpMethod)">
            <summary>
            Sets the request method.
            </summary>
            <param name="method">The method to set.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.DownloadRequest.WithContent(System.Net.Http.HttpContent)">
            <summary>
            Sets the content of the request (only applicable to some request methods).
            </summary>
            <param name="content">The content to set.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.DownloadRequest.WithContent(System.String)">
            <summary>
            Sets the string content of the request (only applicable to some request methods).
            </summary>
            <param name="content">The content to set.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.DownloadRequest.WithCredentials(System.Net.NetworkCredential)">
            <summary>
            Sets the credentials to use for the request.
            </summary>
            <param name="credentials">The credentials to use.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.DownloadRequest.WithCredentials(System.String,System.String)">
            <summary>
            Sets the credentials to use for the request.
            </summary>
            <param name="userName">The username to use.</param>
            <param name="password">The password to use.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="T:Wyam.Core.Modules.IO.Include">
            <summary>
            Processes include statements to include files from the file system.
            </summary>
            <remarks>
            <para>
            This module will look for include statements in the content of each document and
            will replace them with the content of the requested file from the file system.
            Include statements take the form <c>^"folder/file.ext"</c>. The given path will be
            converted to a <see cref="T:Wyam.Common.IO.FilePath"/> and can be absolute or relative. If relative,
            it should be relative to the document source. You can escape the include syntax by
            prefixing the <c>^</c> with a forward slash <c>\</c>.
            </para>
            <para>
            Since Wyam version 2.2.0, you can also use <see cref="T:Wyam.Core.Shortcodes.IO.Include"/> shortcode
            </para>
            </remarks>
            <category>Input/Output</category>
        </member>
        <member name="M:Wyam.Core.Modules.IO.Include.WithRecursion(System.Boolean)">
            <summary>
            Specifies whether the include processing should be recursive. If <c>true</c> (which
            is the default), then include statements will also be processed in the content of
            included files recursively.
            </summary>
            <param name="recursion"><c>true</c> if included content should be recursively processed.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.Include.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.IO.ReadApplicationInput">
            <summary>
            Reads text provided to the application on startup.
            </summary>
            <remarks>
            This modules creates a single document from text provided to Wyam on startup. In most cases, this will be text or file contents
            "piped" to the Wyam.exe via the command line from a file or prior chained executable. Also known as "Standard Input" or "STDIN".
            </remarks>
            <example>
            An example of piping the output of a prior executable to Wyam.
            <code>
            AnotherProgram.exe | Wyam.exe
            </code>
            </example>
            <example>
            An example of redirecting the contents of a file to Wyam.
            <code>
            Wyam.exe &lt; my_initial_document.txt
            </code>
            </example>
            <example>
            This would read the application input, and write it to a file called "stdin.html"
            <code>
            Pipelines.Add("StandardInputDoc",
               ReadApplicationInput(),
               Meta("WritePath", "stdin.html"),
               WriteFiles()
            );
            </code>
            </example>
            <category>Input/Output</category>
        </member>
        <member name="M:Wyam.Core.Modules.IO.ReadApplicationInput.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.IO.ReadFiles">
            <summary>
            Reads the content of files from the file system into the content of new documents.
            </summary>
            <remarks>
            For each output document, several metadata values are set with information about the file. This module will
            be executed once and input documents will be ignored if search patterns are specified. Otherwise, if a delegate
            is specified, the module will be executed once per input document and the resulting output documents will be
            aggregated. In either case, the input documents will not be returned as output of this module. If you want to add
            additional files to a current pipeline, you should enclose your ReadFiles modules with <see cref="T:Wyam.Core.Modules.Control.Concat"/>.
            </remarks>
            <metadata cref="F:Wyam.Common.Meta.Keys.SourceFileRoot" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.SourceFileBase" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.SourceFileExt" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.SourceFileName" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.SourceFileDir" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.SourceFilePath" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.SourceFilePathBase" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.RelativeFilePath" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.RelativeFilePathBase" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.RelativeFileDir" usage="Output" />
            <category>Input/Output</category>
        </member>
        <member name="M:Wyam.Core.Modules.IO.ReadFiles.#ctor(Wyam.Common.Configuration.ContextConfig)">
            <summary>
            Reads all files that match the specified globbing patterns and/or absolute paths. This allows you to
            specify different patterns and/or paths depending on the context.
            </summary>
            <param name="patterns">A delegate that returns one or more globbing patterns and/or absolute paths.</param>
        </member>
        <member name="M:Wyam.Core.Modules.IO.ReadFiles.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Reads all files that match the specified globbing patterns and/or absolute paths. This allows you to
            specify different patterns and/or paths depending on the input.
            </summary>
            <param name="patterns">A delegate that returns one or more globbing patterns and/or absolute paths.</param>
        </member>
        <member name="M:Wyam.Core.Modules.IO.ReadFiles.#ctor(System.String[])">
            <summary>
            Reads all files that match the specified globbing patterns and/or absolute paths.
            </summary>
            <param name="patterns">The globbing patterns and/or absolute paths to read.</param>
        </member>
        <member name="M:Wyam.Core.Modules.IO.ReadFiles.Where(System.Func{Wyam.Common.IO.IFile,System.Boolean})">
            <summary>
            Specifies a predicate that must be satisfied for the file to be read.
            </summary>
            <param name="predicate">A predicate that returns <c>true</c> if the file should be read.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.ReadFiles.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.IO.RequestHeaders">
            <summary>
            The request headers to use with the <see cref="T:Wyam.Core.Modules.IO.Download"/> module.
            </summary>
        </member>
        <member name="M:Wyam.Core.Modules.IO.RequestHeaders.#ctor">
            <summary>
            Creates a new empty set of request headers.
            </summary>
        </member>
        <member name="M:Wyam.Core.Modules.IO.RequestHeaders.#ctor(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}})">
            <summary>
            Creates the specified request headers.
            </summary>
            <param name="headers">The request headers to create.</param>
        </member>
        <member name="M:Wyam.Core.Modules.IO.RequestHeaders.Add(System.String,System.String)">
            <summary>
            Adds a new request header.
            </summary>
            <param name="name">The name of the request header to add.</param>
            <param name="value">The value of the request header to add.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.RequestHeaders.Add(System.String,System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Adds a new request header with multiple values.
            </summary>
            <param name="name">The name of the request header to add.</param>
            <param name="value">The value of the request header to add.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.RequestHeaders.Remove(System.String)">
            <summary>
            Removes a request header.
            </summary>
            <param name="name">The name of the request header to remove.</param>
            <returns>The current instance.</returns>
        </member>
        <member name="T:Wyam.Core.Modules.IO.UnwrittenFiles">
            <summary>
            Outputs only those documents that have not yet been written to the file system.
            </summary>
            <remarks>
            The constructors and file resolution logic follows the same semantics as <see cref="T:Wyam.Core.Modules.IO.WriteFiles"/>.
            This module is useful for eliminating documents from the pipeline on subsequent runs depending
            on if they've already been written to disk. For example, you might want to put this module
            right after <see cref="T:Wyam.Core.Modules.IO.ReadFiles"/> for a pipeline that does a lot of expensive image processing since
            there's no use in processing images that have already been processed. Note that only the
            file name is checked and that this module cannot determine if the content would have been
            the same had a document not been removed from the pipeline. Also note that <strong>you should only
            use this module if you're sure that no other pipelines rely on the output documents</strong>. Because
            this module removes documents from the pipeline, those documents will never reach the
            end of the pipeline and any other modules or pages that rely on them (for example, an
            image directory) will not be correct.
            </remarks>
            <category>Input/Output</category>
        </member>
        <member name="M:Wyam.Core.Modules.IO.UnwrittenFiles.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Uses a delegate to describe where to write the content of each document.
            The output of the function should be either a full path to the disk
            location (including file name) or a path relative to the output folder.
            </summary>
            <param name="path">A delegate that returns a <c>string</c> with the desired path.</param>
        </member>
        <member name="M:Wyam.Core.Modules.IO.UnwrittenFiles.#ctor(System.String)">
            <summary>
            Writes the document content to disk with the specified extension with the same
            base file name and relative path as the input file. This requires metadata
            for <c>RelativeFilePath</c> to be set (which is done by default by the <see cref="T:Wyam.Core.Modules.IO.ReadFiles"/> module).
            </summary>
            <param name="extension">The extension to use for writing the file.</param>
        </member>
        <member name="M:Wyam.Core.Modules.IO.UnwrittenFiles.#ctor">
            <summary>
            Writes the document content to disk with the same file name and relative path
            as the input file. This requires metadata for <c>RelativeFilePath</c> to be set
            (which is done by default by the <see cref="T:Wyam.Core.Modules.IO.ReadFiles"/> module).
            </summary>
        </member>
        <member name="M:Wyam.Core.Modules.IO.UnwrittenFiles.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.IO.WriteFiles">
            <summary>
            Writes the content of each input document to the file system.
            </summary>
            <remarks>
            If the metadata keys <c>WriteFileName</c> (which requires <c>RelativeFileDir</c> to be
            set, usually by the ReadFiles module), <c>WriteExtension</c> (which
            requires <c>RelativeFilePath</c> to be set, usually by the <see cref="T:Wyam.Core.Modules.IO.ReadFiles"/> module)
            or <c>WritePath</c> are set on an input document, that value will be used instead
            of what's specified in the module. For example, if you have a bunch
            of Razor .cshtml files that need to be rendered to .html files but one of them
            should be output as a .xml file instead, define the <c>WriteExtension</c> metadata value
            in the front matter of the page.
            </remarks>
            <metadata cref="F:Wyam.Common.Meta.Keys.RelativeFilePath" usage="Input">
            Used in combination with <see cref="F:Wyam.Common.Meta.Keys.WriteExtension"/> to determine an
            alternate location to write the file.
            </metadata>
            <metadata cref="F:Wyam.Common.Meta.Keys.RelativeFileDir" usage="Input">
            Used in combination with <see cref="F:Wyam.Common.Meta.Keys.WriteFileName"/> to determine an
            alternate location to write the file.
            </metadata>
            <metadata cref="F:Wyam.Common.Meta.Keys.WriteExtension" usage="Input" />
            <metadata cref="F:Wyam.Common.Meta.Keys.WriteFileName" usage="Input" />
            <metadata cref="F:Wyam.Common.Meta.Keys.WritePath" usage="Input" />
            <metadata cref="F:Wyam.Common.Meta.Keys.WritePath" usage="Output">
            The write path is output if the module is in metadata-only mode so that following
            executions of the <see cref="T:Wyam.Core.Modules.IO.WriteFiles"/> module will write the document to the
            calculated output path.
            </metadata>
            <metadata cref="F:Wyam.Common.Meta.Keys.RelativeFilePath" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.RelativeFilePathBase" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.RelativeFileDir" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.DestinationFileBase" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.DestinationFileExt" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.DestinationFileName" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.DestinationFileDir" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.DestinationFilePath" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.DestinationFilePathBase" usage="Output" />
            <category>Input/Output</category>
        </member>
        <member name="M:Wyam.Core.Modules.IO.WriteFiles.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Uses a delegate to describe where to write the content of each document.
            The output of the function should be either a full path to the disk
            location (including file name) or a path relative to the output folder.
            </summary>
            <param name="path">A delegate that returns a <see cref="T:Wyam.Common.IO.FilePath"/> with the desired path.</param>
        </member>
        <member name="M:Wyam.Core.Modules.IO.WriteFiles.#ctor(System.String)">
            <summary>
            Writes the document content to disk with the specified extension with the same
            base file name and relative path as the input file. This requires metadata
            for <c>RelativeFilePath</c> to be set (which is done by default by the <see cref="T:Wyam.Core.Modules.IO.ReadFiles"/> module).
            </summary>
            <param name="extension">The extension to use for writing the file.</param>
        </member>
        <member name="M:Wyam.Core.Modules.IO.WriteFiles.#ctor">
            <summary>
            Writes the document content to disk with the same file name and relative path
            as the input file. This requires metadata for <c>RelativeFilePath</c> to be set,
            which is done by the <see cref="T:Wyam.Core.Modules.IO.ReadFiles"/> module or can be set manually.
            </summary>
        </member>
        <member name="M:Wyam.Core.Modules.IO.WriteFiles.OnlyMetadata(System.Boolean)">
            <summary>
            Indicates that only metadata should be added to the document and a file should not
            actually be written to the file system. This is useful for preprocessing documents
            so they appear in a pipeline with the correct write metadata, while actually
            writing them later with a second <see cref="T:Wyam.Core.Modules.IO.WriteFiles"/> module invocation.
            Only the following metadata values are written when this flag is turned on:
            <c>WritePath</c>, <c>RelativeFilePath</c>, <c>RelativeFilePathBase</c>,
            and <c>RelativeFileDir</c>. The <c>Destination...</c> metadata values are
            not added to the document when only setting metadata..
            </summary>
            <param name="onlyMetadata">If set to <c>true</c>, metadata will be added
            to the input document(s) without actually writing them to the file system.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.WriteFiles.UseWriteMetadata(System.Boolean)">
            <summary>
            By default the metadata values for <c>WritePath</c>, <c>WriteFileName</c>, and <c>WriteExtension</c>
            are checked and used first, even if a delegate is specified in the constructor. This method can be used
            to turn off the default behavior and always rely on the delegate for obtaining the write location.
            </summary>
            <param name="useWriteMetadata">If set to <c>false</c>, metadata of the input document will not be used.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.WriteFiles.IgnoreEmptyContent(System.Boolean)">
            <summary>
            Ignores documents with empty content, which is the default behavior.
            </summary>
            <param name="ignoreEmptyContent">If set to <c>true</c>, documents with empty content will be ignored.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.WriteFiles.Append(System.Boolean)">
            <summary>
            Appends content to each file instead of overwriting them.
            </summary>
            <param name="append">Appends to existing files if set to <c>true</c>.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.WriteFiles.Where(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Specifies a predicate that must be satisfied for the file to be written.
            </summary>
            <param name="predicate">A predicate that returns <c>true</c> if the file should be written.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.WriteFiles.ShouldProcess(Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <summary>
            Checks whether the input document should be processed.
            </summary>
            <param name="input">The input document to check/</param>
            <param name="context">The execution context.</param>
            <returns><c>true</c> if the input document should be processed, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.WriteFiles.GetOutputPath(Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <summary>
            Gets the output path of the input document.
            </summary>
            <param name="input">The input document.</param>
            <param name="context">The execution context.</param>
            <returns>The outout path.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.IO.WriteFiles.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Metadata.CopyMeta">
            <summary>
            Copies the specified meta key to a new meta key, with an optional format argument.
            </summary>
            <category>Metadata</category>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.CopyMeta.#ctor(System.String,System.String,System.String)">
            <summary>
            The specified object in fromKey is copied to toKey. If a format is provided, the fromKey value is processed through string.Format before being copied (if the existing value is a DateTime, the format is passed as the argument to ToString).
            </summary>
            <param name="fromKey">The metadata key to copy from.</param>
            <param name="toKey">The metadata key to copy to.</param>
            <param name="format">The formatting to apply to the new value.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.CopyMeta.WithFormat(System.String)">
            <summary>
            Specifies the format to use when copying the value.
            </summary>
            <param name="format">The format to use.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.CopyMeta.WithFormat(System.Func{System.String,System.String})">
            <summary>
            Specifies the format to use when copying the value.
            </summary>
            <param name="execute">A function to get the format to use.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.CopyMeta.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Metadata.DirectoryMeta">
            <summary>
            Applies metadata from specified input documents to all input documents based on a directory hierarchy.
            </summary>
            <remarks>
            <para>
            This module allows you to specify certain documents that contain common metadata for all other
            documents in the same directory (and optionally nested directories). It assumes that all input documents
            are generated from the file system (for example, from the <see cref="T:Wyam.Core.Modules.IO.ReadFiles"/> module). In other words,
            both the documents that contain the common metadata and the documents to which the common metadata should
            be applied should be passed as inputs to this module.
            </para>
            <para>
            Documents that contain the common metadata are specified by file name using the <c>WithMetadataFile</c> method.
            You can specify more than one metadata file and/or metadata files at different levels in the directory
            hierarchy. If the same metadata key exists across multiple common metadata documents, the following can be
            used to determine which metadata value will get set in the target output documents:
            <list type="bullet">
            <item><description>
            Pre-existing metadata in the target document (common metadata will
            not overwrite existing metadata unless the <c>replace</c> flag is set).
            </description></item>
            <item><description>
            Common metadata documents in the same directory as the target document
            (those registered first have a higher priority).
            </description></item>
            <item><description>
            Common metadata documents in parent directories of the target document (but only if the <c>inherited</c> flag
            is set and those closer to the target document have a higher priority).
            </description></item>
            </list>
            </para>
            <para>
            By default, documents that are identified as containing common metadata will be filtered and won't be
            contained in the sequence of output documents. <c>PreserveMetadataFiles</c> can be used to change this behavior.
            </para>
            </remarks>
            <category>Metadata</category>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.DirectoryMeta.WithPreserveMetadataFiles">
            <summary>
            Preserves the files that hold the common metadata and ensures they are included in the module output. Without this option, theses documents will
            be consumed by this module and will not be present in the module output.
            </summary>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.DirectoryMeta.WithMetadataFile(Wyam.Common.Configuration.DocumentConfig,System.Boolean,System.Boolean)">
            <summary>
            Specifies a file name to use as common metadata using a delegate so that the common metadata document can be specific to the input document.
            </summary>
            <param name="metadataFileName">A delegate that returns a <c>bool</c> indicating if the current document contains the metadata you want to use.</param>
            <param name="inherited">If set to <c>true</c>, metadata from documents with this file name will be inherited by documents in nested directories.</param>
            <param name="replace">If set to <c>true</c>, metadata from this document will replace any existing metadata on the target document.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.DirectoryMeta.WithMetadataFile(Wyam.Common.IO.FilePath,System.Boolean,System.Boolean)">
            <summary>
            Specifies a file name to use as common metadata.
            </summary>
            <param name="metadataFileName">Name of the metadata file.</param>
            <param name="inherited">If set to <c>true</c>, metadata from documents with this file name will be inherited by documents in nested directories.</param>
            <param name="replace">If set to <c>true</c>, metadata from this document will replace any existing metadata on the target document.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.DirectoryMeta.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Metadata.FileName">
            <summary>
            Optimizes a specified metadata key as a filename.
            </summary>
            <remarks>
            This module takes the value of the specified metadata key and optimizes it
            for use as a filename by removing reserved characters, white-listing characters,
            etc.
            </remarks>
            <metadata cref="F:Wyam.Common.Meta.Keys.SourceFileName" usage="Input" />
            <metadata cref="F:Wyam.Common.Meta.Keys.RelativeFileDir" usage="Input" />
            <metadata cref="F:Wyam.Common.Meta.Keys.WriteFileName" usage="Output" />
            <metadata cref="F:Wyam.Common.Meta.Keys.WritePath" usage="Output" />
            <category>Metadata</category>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.FileName.#ctor">
            <summary>
            Sets the metadata key <c>WriteFileName</c> to an optimized version of <c>SourceFileName</c>.
            Also sets the metadata key <c>WritePath</c> to <c>Path.Combine(RelativeFileDir, WriteFileName)</c>.
            </summary>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.FileName.#ctor(System.String)">
            <summary>
            Sets the metadata key <c>WriteFileName</c> to an optimized version of the specified input metadata key.
            Also sets the metadata key <c>WritePath</c> to <c>Path.Combine(RelativeFileDir, WriteFileName)</c>.
            </summary>
            <param name="inputKey">The metadata key to use for the input filename.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.FileName.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Sets the metadata key <c>WriteFileName</c> to an optimized version of the return value of the delegate.
            Also sets the metadata key <c>WritePath</c> to <c>Path.Combine(RelativeFileDir, WriteFileName)</c>.
            </summary>
            <param name="fileName">A delegate that should return a <c>string</c> with the filename to optimize.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.FileName.#ctor(System.String,System.String)">
            <summary>
            Sets the specified metadata key to an optimized version of the specified input metadata key.
            Does not automatically set the <c>WritePath</c> metadata key.
            </summary>
            <param name="inputKey">The metadata key to use for the input filename.</param>
            <param name="outputKey">The metadata key to use for the optimized filename.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.FileName.#ctor(Wyam.Common.Configuration.DocumentConfig,System.String)">
            <summary>
            Sets the specified metadata key to an optimized version of the return value of the delegate.
            Does not automatically set the <c>WritePath</c> metadata key.
            </summary>
            <param name="fileName">A delegate that should return a <c>string</c> with the filename to optimize.</param>
            <param name="outputKey">The metadata key to use for the optimized filename.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.FileName.PreservePath(System.Boolean)">
            <summary>
            Indicates whether to set the metadata key <c>WritePath</c> to <c>Path.Combine(RelativeFileDir, WriteFileName)</c>.
            </summary>
            <param name="preservePath">If set to <c>true</c>, the <c>WritePath</c> metadata key is set.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.FileName.PreservePath(System.String)">
            <summary>
            Indicates whether to set the specified metadata key to <c>Path.Combine(RelativeFileDir, WriteFileName)</c>.
            </summary>
            <param name="outputKey">The metadata key to set.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.FileName.WithAllowedCharacters(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Specifies the characters to allow in the filename.
            </summary>
            <param name="allowedCharacters">The allowed characters.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.FileName.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Metadata.Flatten">
            <summary>
            Flattens a tree structure given child documents are stored in a given metadata key ("Children" by default).
            The flattened documents are returned in no particular order.
            </summary>
            <metadata cref="F:Wyam.Common.Meta.Keys.Children" usage="Input"/>
            <category>Metadata</category>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Flatten.#ctor">
            <summary>
            Creates a new flatten module.
            </summary>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Flatten.#ctor(System.String)">
            <summary>
            Creates a new flatten module with the specified children key.
            </summary>
            <param name="childrenKey">The metadata key that contains the children.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Flatten.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Metadata.Index">
            <summary>
            Adds a one-based index to every document as metadata.
            </summary>
            <metadata cref="F:Wyam.Common.Meta.Keys.Index" usage="Output" />
            <category>Metadata</category>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Index.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Metadata.Meta">
            <summary>
            Adds the specified metadata to each input document.
            </summary>
            <category>Metadata</category>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Meta.#ctor(System.String,System.Object)">
            <summary>
            The specified object is added as metadata for the specified key for every input document.
            </summary>
            <param name="key">The metadata key to set.</param>
            <param name="metadata">The object to add as metadata.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Meta.#ctor(System.String,Wyam.Common.Configuration.ContextConfig)">
            <summary>
            Uses a function to determine an object to be added as metadata for each document.
            This allows you to specify different metadata for each document depending on the context.
            </summary>
            <param name="key">The metadata key to set.</param>
            <param name="metadata">A delegate that returns the object to add as metadata.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Meta.#ctor(System.String,Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Uses a function to determine an object to be added as metadata for each document.
            This allows you to specify different metadata for each document depending on the input.
            </summary>
            <param name="key">The metadata key to set.</param>
            <param name="metadata">A delegate that returns the object to add as metadata.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Meta.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            The specified modules are executed against an empty initial document and all metadata that exist in all of the result documents
            are added as metadata to each input document.
            </summary>
            <param name="modules">The modules to execute.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Meta.ForEachDocument(System.Boolean)">
            <summary>
            Specifies that the whole sequence of modules should be executed for every input document
            (as opposed to the default behavior of the sequence of modules only being executed once
            with an empty initial document). This method has no effect if no modules are specified.
            </summary>
            <param name="forEachDocument"><c>true</c> to execute for every input document.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Meta.IgnoreNull(System.Boolean)">
            <summary>
            Ignores null values and does not add a metadata item for them.
            </summary>
            <param name="ignoreNull"><c>true</c> to ignore null values.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Meta.OnlyIfNonExisting(System.Boolean)">
            <summary>
            Only sets the new metadata value if a value doesn't already exist.
            The default behavior is to set the new value regardless.
            </summary>
            <param name="onlyIfNonExisting"><c>true</c> if the new value should only be set if it doesn't already exist.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Meta.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Metadata.Objects">
            <summary>
            Creates documents from a set of objects. Any input documents will be ignored.
            The objects can be anything, and the collection can be heterogenous.
            Dictionary&lt;string, object&gt; will be handled natively and each key-value pair
            will be added to the output document metdata.
            Anything else will be reflected and turned into a Dictionary&lt;string, object&gt;
            with metadata for each property.
            </summary>
            <category>Metadata</category>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Objects.#ctor(System.Collections.Generic.IEnumerable{System.Object})">
            <summary>
            Creates documents from the specified objects.
            </summary>
            <param name="objects">The objects to create documents for.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Objects.GetItems(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Metadata.Sql">
            <summary>
            Creates documents from the results of a SQL query. Each row is output
            as a new document and every column is used as the metadata (or content) of
            the new document. Input documents are ignored.
            </summary>
            <category>Metadata</category>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Sql.#ctor(System.String,System.String)">
            <summary>
            Creates documents from a SQL query given the specified connection string and query.
            </summary>
            <param name="connectionString">The connection string.</param>
            <param name="sql">The SQL query.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Sql.GetItems(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Sql.GetDictionary(System.Data.DataRow)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Metadata.Title">
            <summary>
            Sets a title metadata key for documents based on their file path or source.
            </summary>
            <remarks>
            This will split the title at special characters, capitalize first letters, remove extensions, etc.
            </remarks>
            <metadata cref="F:Wyam.Common.Meta.Keys.RelativeFilePath" usage="Input" />
            <metadata cref="F:Wyam.Common.Meta.Keys.Title" usage="Output" />
            <category>Metadata</category>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Title.#ctor">
            <summary>
            This will use the existing title metadata key if one exists,
            otherwise it will set a title based on the document source
            or the RelativeFilePath key if no source is available.
            </summary>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Title.#ctor(System.String)">
            <summary>
            This sets the title of all input documents to the specified string.
            </summary>
            <param name="title">The title to set.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Title.#ctor(Wyam.Common.Configuration.ContextConfig)">
            <summary>
            This sets the title of all input documents to a value from the delegate.
            </summary>
            <param name="title">A delegate that must return a string.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Title.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            This sets the title of all input documents to a value from the delegate.
            </summary>
            <param name="title">A delegate that must return a string.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Title.WithKey(System.String)">
            <summary>
            Specifies the key to set for the title. By default this module sets
            a value for the key Title.
            </summary>
            <param name="key">The metadata key to set.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Title.KeepExisting(System.Boolean)">
            <summary>
            Indicates that an existing value in the title key should be kept. The
            default value is <c>true</c>. Setting to <c>false</c> will always
            set the title metadata to the result of this module, even if the
            result is null or empty.
            </summary>
            <param name="keepExisting">Whether to keep the existing title metadata value.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Title.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Title.GetTitle(Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <summary>
            Gets a normalized title given a document.
            </summary>
            <param name="doc">The document.</param>
            <param name="context">The execution context.</param>
            <returns>A normalized title.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Title.GetTitle(Wyam.Common.IO.FilePath)">
            <summary>
            Gets a normalized title given a file path.
            </summary>
            <param name="path">The file path.</param>
            <returns>A normalized title.</returns>
        </member>
        <member name="T:Wyam.Core.Modules.Metadata.Tree">
            <summary>
            Adds metadata to the input documents that describes the position of each one in a tree structure.
            </summary>
            <remarks>
            <para>
            By default, this module is configured to generate a tree that mimics the directory structure of each document's input path
            by looking at it's RelativeFilePath metadata value. Any documents with a file name of "index.*" are automatically
            promoted to the node that represents the parent folder level. For any folder that does not contain an "index.*" file,
            an empty placeholder tree node is used to represent the folder.
            </para>
            <para>
            Note that if you clone documents from the tree, the relationships of the cloned document (parent, child, etc.)
            will not be updated to the new clones. In other words, your new document will still be pointing to the old
            versions of it's parent, children, etc. To update the tree after cloning documents you will need to recreate it
            by rerunning this module on all the newly created documents again.
            </para>
            </remarks>
            <metadata cref="F:Wyam.Common.Meta.Keys.RelativeFilePath" usage="Input">
            Used to calculate the segments of the document in the tree.
            </metadata>
            <metadata cref="F:Wyam.Common.Meta.Keys.Parent" usage="Output"/>
            <metadata cref="F:Wyam.Common.Meta.Keys.Children" usage="Output"/>
            <metadata cref="F:Wyam.Common.Meta.Keys.PreviousSibling" usage="Output"/>
            <metadata cref="F:Wyam.Common.Meta.Keys.NextSibling" usage="Output"/>
            <metadata cref="F:Wyam.Common.Meta.Keys.Next" usage="Output"/>
            <metadata cref="F:Wyam.Common.Meta.Keys.Previous" usage="Output"/>
            <metadata cref="F:Wyam.Common.Meta.Keys.TreePath" usage="Output"/>
            <category>Metadata</category>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Tree.#ctor">
            <summary>
            Creates a new tree module.
            </summary>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Tree.WithPlaceholderFactory(System.Func{System.Object[],Wyam.Common.Meta.MetadataItems,Wyam.Common.Execution.IExecutionContext,Wyam.Common.Documents.IDocument})">
            <summary>
            Allows you to specify a factory function for the creation of placeholder documents which get
            created to represent nodes in the tree for which there was no input document. The factory
            gets passed the current tree path, the set of tree metadata that should be set in the document,
            and the execution context which can be used to create a new document. If the factory function
            returns null, a new document with the tree metadata is created.
            </summary>
            <remarks>
            The default placeholder factory creates a document at the current tree path with a file name of <c>index.html</c>.
            </remarks>
            <param name="factory">The factory function.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Tree.WithSort(System.Comparison{Wyam.Common.Documents.IDocument})">
            <summary>
            This specifies how the children of a given tree node should be sorted. The default behavior is to
            sort based on the string value of the last component of the child node's tree path (I.e., the folder
            or file name). The output document for each tree node is used as the input to the sort delegate.
            </summary>
            <param name="sort">A comparison delegate.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Tree.WithRoots(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Specifies for each document if it is a root of a tree. This results in splitting the generated tree into multiple smaller ones,
            removing the root node from the set of children of it's parent and setting it's parent to <c>null</c>.
            </summary>
            <param name="isRoot">A predicate (must return <c>bool</c>) that specifies if the current document is treated as the root of a new tree.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Tree.WithTreePath(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Defines the structure of the tree. If the delegate returns <c>null</c> the document
            is excluded from the tree.
            </summary>
            <param name="treePath">A delegate that must return a sequence of objects.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Tree.WithMetadataNames(System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
            <summary>
            Changes the default metadata keys.
            </summary>
            <param name="parentKey">The metadata key where parent documents should be stored.</param>
            <param name="childrenKey">The metadata key where child documents should be stored.</param>
            <param name="previousSiblingKey">The metadata key where the previous sibling document should be stored.</param>
            <param name="nextSiblingKey">The metadata key where the next sibling document should be stored.</param>
            <param name="previousKey">The metadata key where the previous document should be stored.</param>
            <param name="nextKey">The metadata key where the next document should be stored.</param>
            <param name="treePathKey">The metadata key where the tree path should be stored.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Tree.WithNesting(System.Boolean,System.Boolean)">
            <summary>
            Indicates that the module should only output root nodes (instead of all
            nodes which is the default behavior).
            </summary>
            <param name="nesting"><c>true</c> to enable nesting and only output the root nodes.</param>
            <param name="collapseRoot">
            Indicates that the root of the tree should be collapsed and the module
            should output first-level documents as if they were root documents. This setting
            has no effect if not nesting.
            </param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Tree.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Metadata.ValidateMeta`1">
            <summary>
            Tests metadata for existence, typing, and supplied assertions.
            </summary>
            <typeparam name="T">The type of the metadata value to convert to for validation.</typeparam>
            <remarks>
            This module performs tests on metadata. It can ensure metadata exists, that it can be converted to the correct type, and that is passes
            arbitrary tests (delegates) to ensure validity. Metadata can be specified as optional, in which case, typing and assertion testing
            will only be run if the metadata exists. If any check fails, this module throws an exception with a descriptive error message then
            halts further execution.
            </remarks>
            <example>
            This example will ensure "Title" exists. (It will also perform a type check, but since "object" matches anything, the type check will
            always succeed.)
            <code>
            ValidateMeta&lt;object&gt;("Title")
            </code>
            </example>
            <example>
            This example will ensure that if "Date" exists, it can convert to a valid DateTime.
            <code>
            ValidateMeta&lt;DateTime&gt;("Date")
               .IsOptional()
            </code>
            </example>
            <example>
            This example will ensure "Age" (1) exists, (2) can convert to an integer, (3) and is greater than 0 and less than 121.
            If it fails any assertion, the provided error message will be output. (In this case, those two assertions could be rolled
            into one, but then they would share an error message. Separate assertions allow more specific error messages.) Assertions will
            be checked in order. Any assertion can assume all previous assertions have passed. Error messages will be appended with
            the document Source and Id properties to assist in identifying invalid documents.
            <code>
            ValidateMeta&lt;int&gt;("Age")
               .WithAssertion(a =&gt; a &gt; 0, "You have to be born.")
               .WithAssertion(a =&gt; a &lt;= 120, "You are way, way too old.")
            </code>
            </example>
            <category>Metadata</category>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.ValidateMeta`1.#ctor(System.String)">
            <summary>
            Performs validation checks on metadata.
            </summary>
            <param name="key">The meta key representing the value to test.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.ValidateMeta`1.IsOptional">
            <summary>
            Declares the entire check as optional. Is this is set, and the meta key doesn't exist, no checks will be run.
            </summary>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.ValidateMeta`1.WithAssertion(System.Func{`0,System.Boolean},System.String)">
            <summary>
            Performs validation checks on metadata.
            </summary>
            <param name="execute">The assertion function, of type Func&lt;T, bool&gt; where T is the generic parameter of the ValidateMeta
            declaration. Assertions are strongly-typed and can assume the value has been converted to the correct type. If the function returns
            false, the check failed, an exception will be thrown, and execution will halt.</param>
            <param name="message">The error message to output on failure.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.ValidateMeta`1.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Metadata.Xml">
            <summary>
            Creates new documents from elements within XML. This module will either
            ignore input documents and use specificed XML content or use the content
            from input documents depending on how it's configured. An XPath expression
            can be used to find target XML elements, and the InnerXml of each child element
            of the target elements as well as the values of each attribute
            will be placed into the metadata of the generated documents.
            </summary>
            <category>Metadata</category>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Xml.#ctor">
            <summary>
            Creates new documents from input documents. The child elements of the root element will be used.
            </summary>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Xml.#ctor(System.String)">
            <summary>
            Creates new documents from input documents.
            </summary>
            <param name="itemXPath">The XPath expression to use to find child items. If null, all child elements will be used.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Xml.#ctor(System.String,System.String)">
            <summary>
            Creates new documents from the specified XML data.
            </summary>
            <param name="data">The XML data.</param>
            <param name="itemXPath">The XPath expression to use to find child items. If <c>null</c>, all child elements will be used.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Xml.WithItemXPath(System.String)">
            <summary>
            Sets the XPath expression to use to find child items. If null, all child elements will be used.
            </summary>
            <param name="itemXPath">The XPath expression to use.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Xml.WithMetadataXPath(System.String,System.String)">
            <summary>
            Adds additional XPath patterns to be run on each element and assigned to a metadata key.
            To be safe, these patterns should start with "./" so they scope only to the element.
            The InnerXml of the first matching node will be used as the value of the metadata.
            </summary>
            <param name="key">The metadata key to store the value in.</param>
            <param name="xpath">The XPath expression for the additional metadata.</param>
            <returns>The current module instance.</returns>
        </member>
        <member name="M:Wyam.Core.Modules.Metadata.Xml.GetItems(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Modules.Templates.Xslt">
            <summary>
            Transforms input documents using a supplied XSLT template.
            </summary>
            <remarks>
            This module uses <see cref="T:System.Xml.Xsl.XslCompiledTransform"/> with default settings. This means that the
            XSLT <c>document()</c> function and embedded scripts are disabled. For more information
            see the <a href="https://msdn.microsoft.com/en-us/library/system.xml.xsl.xslcompiledtransform.aspx">MSDN documentation</a>.
            </remarks>
            <category>Templates</category>
        </member>
        <member name="M:Wyam.Core.Modules.Templates.Xslt.#ctor(Wyam.Common.IO.FilePath)">
            <summary>
            Transforms input documents using a specified XSLT file from the file system.
            </summary>
            <param name="xsltPath">The path of the XSLT file to use.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Templates.Xslt.#ctor(Wyam.Common.Configuration.DocumentConfig)">
            <summary>
            Transforms input documents using a specified XSLT file from the file system
            as provided by a delegate. This allows you to use different XSLT files depending
            on the input document.
            </summary>
            <param name="xsltPath">A delegate that should return a <see cref="T:Wyam.Common.IO.FilePath"/> with the XSLT file to use.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Templates.Xslt.#ctor(Wyam.Common.Modules.IModule[])">
            <summary>
            Transforms input documents using the output content from the specified modules. The modules are executed for each input
            document with the current document as the input to the specified modules.
            </summary>
            <param name="modules">Modules that should output a single document containing the XSLT template in it's content.</param>
        </member>
        <member name="M:Wyam.Core.Modules.Templates.Xslt.Execute(System.Collections.Generic.IReadOnlyList{Wyam.Common.Documents.IDocument},Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Shortcodes.Contents.Raw">
            <summary>
            A special shortcode that will output whatever is in it's content.
            </summary>
            <remarks>
            This will not evaluate nested shortcodes and is useful
            for escaping shortcode syntax.
            </remarks>
            <example>
            <code>
            &lt;?# Raw ?>&lt;?# ThisWillBeOutputVerbatim ?>&lt;?#/ Raw ?>
            </code>
            </example>
        </member>
        <member name="M:Wyam.Core.Shortcodes.Contents.Raw.Execute(System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Shortcodes.Html.CodePen">
            <summary>
            Embeds a CodePen pen.
            </summary>
            <remarks>
            You need the path of the pen (essentially everything after the domain in the URL):
            <code>
            https://codepen.io/edanny/pen/JXwgdK
            </code>
            </remarks>
            <example>
            <code>
            &lt;?# CodePen edanny/pen/JXwgdK /?&gt;
            </code>
            </example>
            <parameter>The path of the pen.</parameter>
        </member>
        <member name="T:Wyam.Core.Shortcodes.Html.Embed">
            <summary>
            Calls an oEmbed endpoint and renders the embedded content.
            </summary>
            <remarks>
            See https://oembed.com/ for details on the oEmbed standard and available endpoints.
            </remarks>
            <example>
            <code>
            &lt;?# Embed https://codepen.io/api/oembed https://codepen.io/gingerdude/pen/JXwgdK /?&gt;
            </code>
            </example>
            <parameter name="Endpoint">The oEmbed endpoint.</parameter>
            <parameter name="Url">The embeded URL to fetch an embed for.</parameter>
            <parameter name="Format">An optional format to use ("xml" or "json").</parameter>
        </member>
        <member name="M:Wyam.Core.Shortcodes.Html.Embed.Execute(System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Shortcodes.Html.Figure">
            <summary>
            Generates HTML5 <c>figure</c> elements.
            </summary>
            <remarks>
            The content of this shortcode specifies a caption to output inside a nested <c>figcaption</c> element.
            </remarks>
            <example>
            <para>
            Example usage:
            </para>
            <code>
            &lt;?# Figure Src="/assets/wyam.jpg" ?&gt;
            Wyam Logo
            &lt;?#/ Figure ?&gt;
            </code>
            <para>
            Example output:
            </para>
            <code>
            &lt;figure&gt;
              &lt;img src=&quot;/assets/wyam.jpg&quot; /&gt;
              &lt;figcaption&gt;Wyam Logo&lt;/figcaption&gt;
            &lt;/figure&gt;
            </code>
            </example>
            <parameter name="Src">URL of the image to be displayed.</parameter>
            <parameter name="Link">If the image needs to be hyperlinked, URL of the destination.</parameter>
            <parameter name="Target">Optional <c>target</c> attribute for the URL if <c>Link</c> parameter is set.</parameter>
            <parameter name="Rel">Optional <c>rel</c> attribute for the URL if <c>Link</c> parameter is set.</parameter>
            <parameter name="Alt">Alternate text for the image if the image cannot be displayed.</parameter>
            <parameter name="Class"><c>class</c> attribute to apply to the <c>figure</c> element.</parameter>
            <parameter name="Height"><c>height</c> attribute of the image.</parameter>
            <parameter name="Width"><c>width</c> attribute of the image.</parameter>
        </member>
        <member name="M:Wyam.Core.Shortcodes.Html.Figure.Execute(System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Shortcodes.Html.Giphy">
            <summary>
            Embeds a Giphy gif.
            </summary>
            <remarks>
            You only need the ID of the gif which can be obtained from it's URL:
            <code>
            https://giphy.com/gifs/excited-birthday-yeah-yoJC2GnSClbPOkV0eA
            </code>
            </remarks>
            <example>
            <code>
            &lt;?# Giphy excited-birthday-yeah-yoJC2GnSClbPOkV0eA /?&gt;
            </code>
            </example>
            <parameter>The ID of the gif.</parameter>
        </member>
        <member name="T:Wyam.Core.Shortcodes.Html.Gist">
            <summary>
            Embeds a GitHub gist.
            </summary>
            <example>
            <para>
            Example usage:
            </para>
            <code>
            &lt;?# Gist 10a2f6e0186fa34b8a7b4bd7d436785d /?&gt;
            </code>
            <para>
            Example output:
            </para>
            <code>
            &lt;script src=&quot;//gist.github.com/10a2f6e0186fa34b8a7b4bd7d436785d.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
            </code>
            </example>
            <parameter name="Id">The ID of the gist.</parameter>
            <parameter name="Username">The username that the gist is under (optional).</parameter>
            <parameter name="File">The file within the gist to embed (optional).</parameter>
        </member>
        <member name="M:Wyam.Core.Shortcodes.Html.Gist.Execute(System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Shortcodes.Html.Link">
            <summary>
            Renders a link from the given path, using default settings or specifying overrides as appropriate.
            </summary>
            <example>
            <code>
            &lt;?# Link "/foo/bar" /?&gt;
            </code>
            </example>
            <parameter name="Path">The path to get a link for.</parameter>
            <parameter name="IncludeHost">
            If set to <c>true</c> the host configured in the output settings will
            be included in the link, otherwise the host will be omitted and only the root path will be included (default).
            </parameter>
            <parameter name="Host">The host to use for the link.</parameter>
            <parameter name="Root">The root of the link. The value of this parameter is prepended to the path.</parameter>
            <parameter name="Scheme">The scheme to use for the link (will override the <c>UseHttps</c> parameter).</parameter>
            <parameter name="UseHttps">If set to <c>true</c>, HTTPS will be used as the scheme for the link.</parameter>
            <parameter name="HideIndexPages">If set to <c>true</c>, "index.htm" and "index.html" file names will be hidden.</parameter>
            <parameter name="HideExtensions">If set to <c>true</c>, extensions will be hidden.</parameter>
            <parameter name="Lowercase">If set to <c>true</c>, links will be rendered in all lowercase.</parameter>
        </member>
        <member name="M:Wyam.Core.Shortcodes.Html.Link.Execute(System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Shortcodes.Html.Table">
            <summary>
            Renders an HTML table.
            </summary>
            <remarks>
            The content of the shortcode contains the table with each row on a new line and each
            column separated by new lines. Enclose columns in quotes if they contain a space.
            Note that since the content of a shortcode may get processed by template engines like
            Markdown and the content of this shortcode should not be, you probably want to wrap
            the shortcode content in the special XML processing instruction that will get trimmed
            like <c>&lt;?* ... ?&gt;</c> so it "passes through" any template engines (see example below).
            </remarks>
            <example>
            <para>
            Example usage:
            </para>
            <code>
            &lt;?# Table Class=table HeaderRows=1 ?&gt;
            &lt;?*
            Vehicle "Number Of Wheels"
            Bike 2
            Car 4
            Truck "A Whole Lot"
            ?&gt;
            &lt;?#/ Table ?&gt;
            </code>
            <para>
            Example output:
            </para>
            <code>
            &lt;table class=&quot;table&quot;&gt;
              &lt;thead&gt;
                &lt;tr&gt;
                  &lt;th&gt;Vehicle&lt;/th&gt;
                  &lt;th&gt;Number Of Wheels&lt;/th&gt;
                &lt;/tr&gt;
              &lt;/thead&gt;
              &lt;tbody&gt;
                &lt;tr&gt;
                  &lt;td&gt;Bike&lt;/td&gt;
                  &lt;td&gt;2&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                  &lt;td&gt;Car&lt;/td&gt;
                  &lt;td&gt;4&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                  &lt;td&gt;Truck&lt;/td&gt;
                  &lt;td&gt;A Whole Lot&lt;/td&gt;
                &lt;/tr&gt;
              &lt;/tbody&gt;
            &lt;/table&gt;
            </code>
            </example>
            <parameter name="Class">The <c>class</c> attribute to apply to the <c>table</c> element.</parameter>
            <parameter name="HeaderRows">The number of header rows in the table.</parameter>
            <parameter name="FooterRows">The number of footer rows in the table.</parameter>
            <parameter name="HeaderCols">The number of header columns to the left of the table.</parameter>
            <parameter name="HeaderClass">The <c>class</c> attribute to apply to the <c>thead</c> element.</parameter>
            <parameter name="BodyClass">The <c>class</c> attribute to apply to the <c>tbody</c> element.</parameter>
            <parameter name="FooterClass">The <c>class</c> attribute to apply to the <c>tfoot</c> element.</parameter>
        </member>
        <member name="M:Wyam.Core.Shortcodes.Html.Table.Execute(System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Shortcodes.Html.Twitter">
            <summary>
            Renders a Tweet.
            </summary>
            <example>
            <code>
            &lt;?# Twitter 123456789 /?&gt;
            </code>
            </example>
            <parameter name="Id">The ID of the Tweet. This can be found at the end of the URL when you copy a link to a Tweet.</parameter>
            <parameter name="HideMedia">When set to <c>true</c>, links in a Tweet are not expanded to photo, video, or link previews.</parameter>
            <parameter name="HideThread">When set to <c>true</c>, a collapsed version of the previous Tweet in a conversation thread will not be displayed when the requested Tweet is in reply to another Tweet.</parameter>
            <parameter name="Theme"><c>light</c> or <c>dark</c>. When set to <c>dark</c>, the Tweet is displayed with light text over a dark background.</parameter>
            <parameter name="OmitScript">When set to <c>true</c>, the <c>script</c> element that contains the Twitter embed JavaScript code will not be rendered.</parameter>
        </member>
        <member name="M:Wyam.Core.Shortcodes.Html.Twitter.Execute(System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Shortcodes.Html.YouTube">
            <summary>
            Embeds a YouTube video.
            </summary>
            <remarks>
            You only need the ID of the video which can be obtained from it's URL after the <c>?v=</c>:
            <code>
            https://www.youtube.com/watch?v=u5ayTqlLWQQ
            </code>
            </remarks>
            <example>
            <code>
            &lt;?# YouTube u5ayTqlLWQQ /?&gt;
            </code>
            </example>
            <parameter>The ID of the video.</parameter>
        </member>
        <member name="T:Wyam.Core.Shortcodes.IO.Include">
            <summary>
            Includes a file from the virtual file system.
            </summary>
            <remarks>
            The raw content of the file will be rendered where the shortcode appears.
            If the file does not exist nothing will be rendered.
            </remarks>
            <parameter>The path to the file to include.</parameter>
            <example>
            <para>Example usage to show the contents of test-include.html in the output</para>
            <para>
            <code>
            &lt;?# Include "test-include.html" /?&gt;
            </code>
            </para>
            <para>
            If the included file contains Markdown syntax, you can even include it before the Markdown engine runs with a slight syntax change:
            </para>
            <para>
            <code>
            &lt;?! Include "test-include.md" /?&gt;?
            </code>
            </para>
            </example>
        </member>
        <member name="M:Wyam.Core.Shortcodes.IO.Include.Execute(System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Shortcodes.Metadata.Meta">
            <summary>
            Renders the metadata value with the given key from the current document.
            </summary>
            <remarks>
            The metadata value will be rendered as a string. If no value exists with the
            specified key, nothing will be rendered. In addition to using the shortcode
            by the <c>Meta</c> name like <c>&lt;?# Meta key /?&gt;</c>, this shortcode can also be used
            with a special syntax: <c>&lt;?#= key /?&gt;</c>.
            </remarks>
            <parameter>The key of the metadata value to render.</parameter>
        </member>
        <member name="M:Wyam.Core.Shortcodes.Metadata.Meta.Execute(System.Collections.Generic.KeyValuePair{System.String,System.String}[],System.String,Wyam.Common.Documents.IDocument,Wyam.Common.Execution.IExecutionContext)">
            <inheritdoc />
        </member>
        <member name="T:Wyam.Core.Shortcodes.ShortcodeParser">
            <summary>
            Parses a stream looking for shortcodes. This class is not thread-safe and maintains
            state. A new instance should be created for each stream.
            </summary>
        </member>
        <member name="M:Wyam.Core.Shortcodes.ShortcodeParser.Parse(System.IO.Stream)">
            <summary>
            Identifies shortcode locations in a stream.
            </summary>
            <param name="stream">The stream to parse. This method will not dispose the passed-in stream.</param>
            <returns>All of the shortcode locations in the stream.</returns>
        </member>
        <member name="T:Wyam.Core.Util.ArgumentSplitter">
            <summary>
            Splits a string into quoted arguments delimited by spaces.
            </summary>
            <remarks>
            From http://stackoverflow.com/a/298990/807064
            </remarks>
        </member>
        <member name="M:Wyam.Core.Util.ArgumentSplitter.Split(System.String)">
            <summary>
            Splits a string into quoted arguments delimited by spaces.
            </summary>
            <param name="arguments">The full string to split into arguments.</param>
            <returns>Each quoted argument as delimited in the original string by spaces.</returns>
        </member>
        <member name="T:Wyam.Core.Util.ConvertingComparer`1">
            <summary>
            Adapts a typed equality comparer to untyped metadata by attempting to convert the
            metadata values to the comparer type before running the comparison. If neither type
            can be converted to <typeparamref name="TValue"/>, the comparison returns 0 (equivalent).
            </summary>
            <typeparam name="TValue">The value type to convert to for comparisons.</typeparam>
        </member>
        <member name="T:Wyam.Core.Util.ConvertingEqualityComparer`1">
            <summary>
            Adapts a typed equality comparer to untyped metadata by attempting to convert the
            metadata values to the comparer type before running the comparison. If neither type
            can be converted to <typeparamref name="TValue"/>, the comparison fails.
            </summary>
            <typeparam name="TValue">The value type to convert to for comparisons.</typeparam>
        </member>
    </members>
</doc>
tools\Wyam.deps.json
{
  "runtimeTarget": {
    "name": ".NETCoreApp,Version=v2.1",
    "signature": ""
  },
  "compilationOptions": {},
  "targets": {
    ".NETCoreApp,Version=v2.1": {
      "Wyam/3.0.0": {
        "dependencies": {
          "Microsoft.SourceLink.GitHub": "1.1.1",
          "Roslynator.Analyzers": "4.1.1",
          "SharpScss": "2.0.0",
          "StyleCop.Analyzers": "1.2.0-beta.435",
          "Wyam2.Common": "3.0.0",
          "Wyam2.Configuration": "3.0.0",
          "Wyam2.Core": "3.0.0",
          "Wyam2.Hosting": "3.0.0",
          "System.CommandLine": "4.0.0.0"
        },
        "runtime": {
          "Wyam.dll": {}
        }
      },
      "AdvancedStringBuilder/0.1.0": {
        "runtime": {
          "lib/netstandard2.0/AdvancedStringBuilder.dll": {
            "assemblyVersion": "0.1.0.0",
            "fileVersion": "0.1.0.0"
          }
        }
      },
      "ConcurrentHashSet/1.3.0": {
        "runtime": {
          "lib/netstandard2.0/ConcurrentCollections.dll": {
            "assemblyVersion": "1.3.0.0",
            "fileVersion": "1.3.0.0"
          }
        }
      },
      "Esprima/2.1.2": {
        "dependencies": {
          "System.Memory": "4.5.4"
        },
        "runtime": {
          "lib/netstandard2.0/Esprima.dll": {
            "assemblyVersion": "2.1.2.0",
            "fileVersion": "2.1.2.0"
          }
        }
      },
      "JavaScriptEngineSwitcher.Core/3.3.0": {
        "dependencies": {
          "AdvancedStringBuilder": "0.1.0"
        },
        "runtime": {
          "lib/netstandard2.0/JavaScriptEngineSwitcher.Core.dll": {
            "assemblyVersion": "3.3.0.0",
            "fileVersion": "3.3.0.0"
          }
        },
        "resources": {
          "lib/netstandard2.0/ru-ru/JavaScriptEngineSwitcher.Core.resources.dll": {
            "locale": "ru-ru"
          }
        }
      },
      "JavaScriptEngineSwitcher.Jint/3.18.0-preview": {
        "dependencies": {
          "AdvancedStringBuilder": "0.1.0",
          "JavaScriptEngineSwitcher.Core": "3.3.0",
          "Jint": "3.0.0-beta-2038"
        },
        "runtime": {
          "lib/netstandard2.0/JavaScriptEngineSwitcher.Jint.dll": {
            "assemblyVersion": "3.18.0.0",
            "fileVersion": "3.18.0.0"
          }
        }
      },
      "Jint/3.0.0-beta-2038": {
        "dependencies": {
          "Esprima": "2.1.2"
        },
        "runtime": {
          "lib/netstandard2.0/Jint.dll": {
            "assembly