10 changed files with 374 additions and 370 deletions
@ -0,0 +1,3 @@ |
|||
repositories.config text |
|||
* -text |
|||
|
|||
@ -1,19 +1,19 @@ |
|||
<?xml version="1.0"?> |
|||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> |
|||
<metadata> |
|||
<id>FSharp.Formatting</id> |
|||
<version>1.0.15</version> |
|||
<title>FSharp.Formatting</title> |
|||
<authors>Tomas Petricek, Oleg Pestov, Anh-Dung Phan</authors> |
|||
<owners>Tomas Petricek, Oleg Pestov, Anh-Dung Phan</owners> |
|||
<licenseUrl>http://github.com/tpetricek/FSharp.Formatting/blob/master/LICENSE.md</licenseUrl> |
|||
<projectUrl>http://github.com/tpetricek/FSharp.Formatting</projectUrl> |
|||
<iconUrl>https://raw.github.com/tpetricek/FSharp.Formatting/master/docs/misc/logo.png</iconUrl> |
|||
<requireLicenseAcceptance>false</requireLicenseAcceptance> |
|||
<description>Provides an F# implementation of Markdown parser and F# code formatter that can used to tokenize F# code and obtain information about tokens including tool tips with type information. The package comes with a sample that implements literate programming for F#.</description> |
|||
<releaseNotes>Added latex support, tables and better formatting with line numbers</releaseNotes> |
|||
<copyright>Copyright 2013</copyright> |
|||
<language /> |
|||
<tags>F# fsharp formatting markdown code fssnip literate programming</tags> |
|||
</metadata> |
|||
<?xml version="1.0"?> |
|||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> |
|||
<metadata> |
|||
<id>FSharp.Formatting</id> |
|||
<version>1.0.15</version> |
|||
<title>FSharp.Formatting</title> |
|||
<authors>Tomas Petricek, Oleg Pestov, Anh-Dung Phan</authors> |
|||
<owners>Tomas Petricek, Oleg Pestov, Anh-Dung Phan</owners> |
|||
<licenseUrl>http://github.com/tpetricek/FSharp.Formatting/blob/master/LICENSE.md</licenseUrl> |
|||
<projectUrl>http://github.com/tpetricek/FSharp.Formatting</projectUrl> |
|||
<iconUrl>https://raw.github.com/tpetricek/FSharp.Formatting/master/docs/misc/logo.png</iconUrl> |
|||
<requireLicenseAcceptance>false</requireLicenseAcceptance> |
|||
<description>Provides an F# implementation of Markdown parser and F# code formatter that can used to tokenize F# code and obtain information about tokens including tool tips with type information. The package comes with a sample that implements literate programming for F#.</description> |
|||
<releaseNotes>Added latex support, tables and better formatting with line numbers</releaseNotes> |
|||
<copyright>Copyright 2013</copyright> |
|||
<language /> |
|||
<tags>F# fsharp formatting markdown code fssnip literate programming</tags> |
|||
</metadata> |
|||
</package> |
|||
@ -1,160 +1,160 @@ |
|||
// -------------------------------------------------------------------------------------- |
|||
// F# Markdown (StringParsing.fs) |
|||
// (c) Tomas Petricek, 2012, Available under Apache 2.0 license. |
|||
// -------------------------------------------------------------------------------------- |
|||
|
|||
module FSharp.Patterns |
|||
|
|||
open System |
|||
open FSharp.Collections |
|||
|
|||
// -------------------------------------------------------------------------------------- |
|||
// Active patterns that simplify parsing of strings and lists of strings (lines) |
|||
// -------------------------------------------------------------------------------------- |
|||
|
|||
module String = |
|||
/// Matches when a string is a whitespace or null |
|||
let (|WhiteSpace|_|) s = |
|||
if String.IsNullOrWhiteSpace(s) then Some() else None |
|||
|
|||
/// Matches when a string does starts with non-whitespace |
|||
let (|Unindented|_|) (s:string) = |
|||
if not (String.IsNullOrWhiteSpace(s)) && s.TrimStart() = s then Some() else None |
|||
|
|||
/// Returns a string trimmed from both start and end |
|||
let (|TrimBoth|) (text:string) = text.Trim() |
|||
/// Returns a string trimmed from the end |
|||
let (|TrimEnd|) (text:string) = text.TrimEnd() |
|||
/// Returns a string trimmed from the start |
|||
let (|TrimStart|) (text:string) = text.TrimStart() |
|||
|
|||
/// Retrusn a string trimmed from the end using characters given as a parameter |
|||
let (|TrimEndUsing|) chars (text:string) = text.TrimEnd(Array.ofSeq chars) |
|||
|
|||
/// Returns a string trimmed from the start together with |
|||
/// the number of skipped whitespace characters |
|||
let (|TrimStartAndCount|) (text:string) = |
|||
let trimmed = text.TrimStart() |
|||
text.Length - trimmed.Length, trimmed |
|||
|
|||
/// Matches when a string starts with any of the specified sub-strings |
|||
let (|StartsWithAny|_|) (starts:seq<string>) (text:string) = |
|||
if starts |> Seq.exists (text.StartsWith) then Some() else None |
|||
/// Matches when a string starts with the specified sub-string |
|||
let (|StartsWith|_|) (start:string) (text:string) = |
|||
if text.StartsWith(start) then Some(text.Substring(start.Length)) else None |
|||
/// Matches when a string starts with the specified sub-string |
|||
/// The matched string is trimmed from all whitespace. |
|||
let (|StartsWithTrim|_|) (start:string) (text:string) = |
|||
if text.StartsWith(start) then Some(text.Substring(start.Length).Trim()) else None |
|||
|
|||
/// Matches when a string starts with the given value and ends |
|||
/// with a given value (and returns the rest of it) |
|||
let (|StartsAndEndsWith|_|) (starts, ends) (s:string) = |
|||
if s.StartsWith(starts) && s.EndsWith(ends) && |
|||
s.Length >= starts.Length + ends.Length then |
|||
Some(s.Substring(starts.Length, s.Length - starts.Length - ends.Length)) |
|||
else None |
|||
|
|||
/// Matches when a string starts with the given value and ends |
|||
/// with a given value (and returns trimmed body) |
|||
let (|StartsAndEndsWithTrim|_|) args = function |
|||
| StartsAndEndsWith args (TrimBoth res) -> Some res |
|||
| _ -> None |
|||
|
|||
/// Matches when a string starts with a non-zero number of complete |
|||
/// repetitions of the specified parameter (and returns the number |
|||
/// of repetitions, together with the rest of the string) |
|||
/// |
|||
/// let (StartsWithRepeated "/\" (2, " abc")) = "/\/\ abc" |
|||
/// |
|||
let (|StartsWithRepeated|_|) (repeated:string) (text:string) = |
|||
let rec loop i = |
|||
if i = text.Length then i |
|||
elif text.[i] <> repeated.[i % repeated.Length] then i |
|||
else loop (i + 1) |
|||
|
|||
let n = loop 0 |
|||
if n = 0 || n % repeated.Length <> 0 then None |
|||
else Some(n/repeated.Length, text.Substring(n, text.Length - n)) |
|||
|
|||
/// Matches when a string starts with a sub-string wrapped using the |
|||
/// opening and closing sub-string specified in the parameter. |
|||
/// For example "[aa]bc" is wrapped in [ and ] pair. Returns the wrapped |
|||
/// text together with the rest. |
|||
let (|StartsWithWrapped|_|) (starts:string, ends:string) (text:string) = |
|||
if text.StartsWith(starts) then |
|||
let id = text.IndexOf(ends, starts.Length) |
|||
if id >= 0 then |
|||
let wrapped = text.Substring(starts.Length, id - starts.Length) |
|||
let rest = text.Substring(id + ends.Length, text.Length - id - ends.Length) |
|||
Some(wrapped, rest) |
|||
else None |
|||
else None |
|||
|
|||
/// Matches when a string consists of some number of |
|||
/// complete repetitions of a specified sub-string. |
|||
let (|EqualsRepeated|_|) repeated = function |
|||
| StartsWithRepeated repeated (n, "") -> Some() |
|||
| _ -> None |
|||
|
|||
module List = |
|||
/// Matches a list if it starts with a sub-list that is delimited |
|||
/// using the specified delimiters. Returns a wrapped list and the rest. |
|||
let inline (|DelimitedWith|_|) startl endl input = |
|||
if List.startsWith startl input then |
|||
match List.partitionUntilEquals endl (List.skip startl.Length input) with |
|||
| Some(pre, post) -> Some(pre, List.skip endl.Length post) |
|||
| None -> None |
|||
else None |
|||
|
|||
/// Matches a list if it starts with a sub-list that is delimited |
|||
/// using the specified delimiter. Returns a wrapped list and the rest. |
|||
let inline (|Delimited|_|) str = (|DelimitedWith|_|) str str |
|||
|
|||
/// Matches a list if it starts with a bracketed list. Nested brackets |
|||
/// are skipped (by counting opening and closing brackets) and can be |
|||
/// escaped using the '\' symbol. |
|||
let (|BracketDelimited|_|) startc endc input = |
|||
let rec loop acc count = function |
|||
| '\\'::x::xs when x = endc -> loop (x::acc) count xs |
|||
| x::xs when x = endc && count = 0 -> Some(List.rev acc, xs) |
|||
| x::xs when x = endc -> loop (x::acc) (count - 1) xs |
|||
| x::xs when x = startc -> loop (x::acc) (count + 1) xs |
|||
| x::xs -> loop (x::acc) count xs |
|||
| [] -> None |
|||
match input with |
|||
| x::xs when x = startc -> loop [] 0 xs |
|||
| _ -> None |
|||
|
|||
/// Retruns a list of characters as a string. |
|||
let (|AsString|) chars = String(Array.ofList chars) |
|||
|
|||
module Lines = |
|||
/// Removes blank lines from the start and the end of a list |
|||
let (|TrimBlank|) lines = |
|||
lines |
|||
|> List.skipWhile String.IsNullOrWhiteSpace |> List.rev |
|||
|> List.skipWhile String.IsNullOrWhiteSpace |> List.rev |
|||
|
|||
/// Matches when there are some lines at the beginning that are |
|||
/// either empty (or whitespace) or start with the specified string. |
|||
/// Returns all such lines from the beginning until a different line. |
|||
let (|TakeStartingWithOrBlank|_|) start input = |
|||
match List.partitionWhile (fun s -> |
|||
String.IsNullOrWhiteSpace s || s.StartsWith(start)) input with |
|||
| matching, rest when matching <> [] -> Some(matching, rest) |
|||
| _ -> None |
|||
|
|||
/// Removes whitespace lines from the beginning of the list |
|||
let (|TrimBlankStart|) = List.skipWhile (String.IsNullOrWhiteSpace) |
|||
|
|||
|
|||
/// Parameterized pattern that assigns the specified value to the |
|||
/// first component of a tuple. Usage: |
|||
/// |
|||
/// match str with |
|||
/// | Let 1 (n, "one") | Let 2 (n, "two") -> n |
|||
/// |
|||
let (|Let|) a b = (a, b) |
|||
|
|||
// -------------------------------------------------------------------------------------- |
|||
// F# Markdown (StringParsing.fs) |
|||
// (c) Tomas Petricek, 2012, Available under Apache 2.0 license. |
|||
// -------------------------------------------------------------------------------------- |
|||
|
|||
module FSharp.Patterns |
|||
|
|||
open System |
|||
open FSharp.Collections |
|||
|
|||
// -------------------------------------------------------------------------------------- |
|||
// Active patterns that simplify parsing of strings and lists of strings (lines) |
|||
// -------------------------------------------------------------------------------------- |
|||
|
|||
module String = |
|||
/// Matches when a string is a whitespace or null |
|||
let (|WhiteSpace|_|) s = |
|||
if String.IsNullOrWhiteSpace(s) then Some() else None |
|||
|
|||
/// Matches when a string does starts with non-whitespace |
|||
let (|Unindented|_|) (s:string) = |
|||
if not (String.IsNullOrWhiteSpace(s)) && s.TrimStart() = s then Some() else None |
|||
|
|||
/// Returns a string trimmed from both start and end |
|||
let (|TrimBoth|) (text:string) = text.Trim() |
|||
/// Returns a string trimmed from the end |
|||
let (|TrimEnd|) (text:string) = text.TrimEnd() |
|||
/// Returns a string trimmed from the start |
|||
let (|TrimStart|) (text:string) = text.TrimStart() |
|||
|
|||
/// Retrusn a string trimmed from the end using characters given as a parameter |
|||
let (|TrimEndUsing|) chars (text:string) = text.TrimEnd(Array.ofSeq chars) |
|||
|
|||
/// Returns a string trimmed from the start together with |
|||
/// the number of skipped whitespace characters |
|||
let (|TrimStartAndCount|) (text:string) = |
|||
let trimmed = text.TrimStart() |
|||
text.Length - trimmed.Length, trimmed |
|||
|
|||
/// Matches when a string starts with any of the specified sub-strings |
|||
let (|StartsWithAny|_|) (starts:seq<string>) (text:string) = |
|||
if starts |> Seq.exists (text.StartsWith) then Some() else None |
|||
/// Matches when a string starts with the specified sub-string |
|||
let (|StartsWith|_|) (start:string) (text:string) = |
|||
if text.StartsWith(start) then Some(text.Substring(start.Length)) else None |
|||
/// Matches when a string starts with the specified sub-string |
|||
/// The matched string is trimmed from all whitespace. |
|||
let (|StartsWithTrim|_|) (start:string) (text:string) = |
|||
if text.StartsWith(start) then Some(text.Substring(start.Length).Trim()) else None |
|||
|
|||
/// Matches when a string starts with the given value and ends |
|||
/// with a given value (and returns the rest of it) |
|||
let (|StartsAndEndsWith|_|) (starts, ends) (s:string) = |
|||
if s.StartsWith(starts) && s.EndsWith(ends) && |
|||
s.Length >= starts.Length + ends.Length then |
|||
Some(s.Substring(starts.Length, s.Length - starts.Length - ends.Length)) |
|||
else None |
|||
|
|||
/// Matches when a string starts with the given value and ends |
|||
/// with a given value (and returns trimmed body) |
|||
let (|StartsAndEndsWithTrim|_|) args = function |
|||
| StartsAndEndsWith args (TrimBoth res) -> Some res |
|||
| _ -> None |
|||
|
|||
/// Matches when a string starts with a non-zero number of complete |
|||
/// repetitions of the specified parameter (and returns the number |
|||
/// of repetitions, together with the rest of the string) |
|||
/// |
|||
/// let (StartsWithRepeated "/\" (2, " abc")) = "/\/\ abc" |
|||
/// |
|||
let (|StartsWithRepeated|_|) (repeated:string) (text:string) = |
|||
let rec loop i = |
|||
if i = text.Length then i |
|||
elif text.[i] <> repeated.[i % repeated.Length] then i |
|||
else loop (i + 1) |
|||
|
|||
let n = loop 0 |
|||
if n = 0 || n % repeated.Length <> 0 then None |
|||
else Some(n/repeated.Length, text.Substring(n, text.Length - n)) |
|||
|
|||
/// Matches when a string starts with a sub-string wrapped using the |
|||
/// opening and closing sub-string specified in the parameter. |
|||
/// For example "[aa]bc" is wrapped in [ and ] pair. Returns the wrapped |
|||
/// text together with the rest. |
|||
let (|StartsWithWrapped|_|) (starts:string, ends:string) (text:string) = |
|||
if text.StartsWith(starts) then |
|||
let id = text.IndexOf(ends, starts.Length) |
|||
if id >= 0 then |
|||
let wrapped = text.Substring(starts.Length, id - starts.Length) |
|||
let rest = text.Substring(id + ends.Length, text.Length - id - ends.Length) |
|||
Some(wrapped, rest) |
|||
else None |
|||
else None |
|||
|
|||
/// Matches when a string consists of some number of |
|||
/// complete repetitions of a specified sub-string. |
|||
let (|EqualsRepeated|_|) repeated = function |
|||
| StartsWithRepeated repeated (n, "") -> Some() |
|||
| _ -> None |
|||
|
|||
module List = |
|||
/// Matches a list if it starts with a sub-list that is delimited |
|||
/// using the specified delimiters. Returns a wrapped list and the rest. |
|||
let inline (|DelimitedWith|_|) startl endl input = |
|||
if List.startsWith startl input then |
|||
match List.partitionUntilEquals endl (List.skip startl.Length input) with |
|||
| Some(pre, post) -> Some(pre, List.skip endl.Length post) |
|||
| None -> None |
|||
else None |
|||
|
|||
/// Matches a list if it starts with a sub-list that is delimited |
|||
/// using the specified delimiter. Returns a wrapped list and the rest. |
|||
let inline (|Delimited|_|) str = (|DelimitedWith|_|) str str |
|||
|
|||
/// Matches a list if it starts with a bracketed list. Nested brackets |
|||
/// are skipped (by counting opening and closing brackets) and can be |
|||
/// escaped using the '\' symbol. |
|||
let (|BracketDelimited|_|) startc endc input = |
|||
let rec loop acc count = function |
|||
| '\\'::x::xs when x = endc -> loop (x::acc) count xs |
|||
| x::xs when x = endc && count = 0 -> Some(List.rev acc, xs) |
|||
| x::xs when x = endc -> loop (x::acc) (count - 1) xs |
|||
| x::xs when x = startc -> loop (x::acc) (count + 1) xs |
|||
| x::xs -> loop (x::acc) count xs |
|||
| [] -> None |
|||
match input with |
|||
| x::xs when x = startc -> loop [] 0 xs |
|||
| _ -> None |
|||
|
|||
/// Retruns a list of characters as a string. |
|||
let (|AsString|) chars = String(Array.ofList chars) |
|||
|
|||
module Lines = |
|||
/// Removes blank lines from the start and the end of a list |
|||
let (|TrimBlank|) lines = |
|||
lines |
|||
|> List.skipWhile String.IsNullOrWhiteSpace |> List.rev |
|||
|> List.skipWhile String.IsNullOrWhiteSpace |> List.rev |
|||
|
|||
/// Matches when there are some lines at the beginning that are |
|||
/// either empty (or whitespace) or start with the specified string. |
|||
/// Returns all such lines from the beginning until a different line. |
|||
let (|TakeStartingWithOrBlank|_|) start input = |
|||
match List.partitionWhile (fun s -> |
|||
String.IsNullOrWhiteSpace s || s.StartsWith(start)) input with |
|||
| matching, rest when matching <> [] -> Some(matching, rest) |
|||
| _ -> None |
|||
|
|||
/// Removes whitespace lines from the beginning of the list |
|||
let (|TrimBlankStart|) = List.skipWhile (String.IsNullOrWhiteSpace) |
|||
|
|||
|
|||
/// Parameterized pattern that assigns the specified value to the |
|||
/// first component of a tuple. Usage: |
|||
/// |
|||
/// match str with |
|||
/// | Let 1 (n, "one") | Let 2 (n, "two") -> n |
|||
/// |
|||
let (|Let|) a b = (a, b) |
|||
|
|||
|
|||
@ -1,47 +1,47 @@ |
|||
var currentTip = null; |
|||
var currentTipElement = null; |
|||
|
|||
function hideTip(evt, name, unique) |
|||
{ |
|||
var el = document.getElementById(name); |
|||
el.style.display = "none"; |
|||
currentTip = null; |
|||
} |
|||
|
|||
function findPos(obj) |
|||
{ |
|||
var curleft = 0; |
|||
var curtop = obj.offsetHeight; |
|||
while (obj) |
|||
{ |
|||
curleft += obj.offsetLeft; |
|||
curtop += obj.offsetTop; |
|||
obj = obj.offsetParent; |
|||
}; |
|||
return [curleft, curtop]; |
|||
} |
|||
|
|||
function hideUsingEsc(e) |
|||
{ |
|||
if (!e) { e = event; } |
|||
hideTip(e, currentTipElement, currentTip); |
|||
} |
|||
|
|||
function showTip(evt, name, unique, owner) |
|||
{ |
|||
document.onkeydown = hideUsingEsc; |
|||
if (currentTip == unique) return; |
|||
currentTip = unique; |
|||
currentTipElement = name; |
|||
|
|||
var pos = findPos(owner ? owner : (evt.srcElement ? evt.srcElement : evt.target)); |
|||
var posx = pos[0]; |
|||
var posy = pos[1]; |
|||
|
|||
var el = document.getElementById(name); |
|||
var parent = (document.documentElement == null) ? document.body : document.documentElement; |
|||
el.style.position = "absolute"; |
|||
el.style.left = posx + "px"; |
|||
el.style.top = posy + "px"; |
|||
el.style.display = "block"; |
|||
var currentTip = null; |
|||
var currentTipElement = null; |
|||
|
|||
function hideTip(evt, name, unique) |
|||
{ |
|||
var el = document.getElementById(name); |
|||
el.style.display = "none"; |
|||
currentTip = null; |
|||
} |
|||
|
|||
function findPos(obj) |
|||
{ |
|||
var curleft = 0; |
|||
var curtop = obj.offsetHeight; |
|||
while (obj) |
|||
{ |
|||
curleft += obj.offsetLeft; |
|||
curtop += obj.offsetTop; |
|||
obj = obj.offsetParent; |
|||
}; |
|||
return [curleft, curtop]; |
|||
} |
|||
|
|||
function hideUsingEsc(e) |
|||
{ |
|||
if (!e) { e = event; } |
|||
hideTip(e, currentTipElement, currentTip); |
|||
} |
|||
|
|||
function showTip(evt, name, unique, owner) |
|||
{ |
|||
document.onkeydown = hideUsingEsc; |
|||
if (currentTip == unique) return; |
|||
currentTip = unique; |
|||
currentTipElement = name; |
|||
|
|||
var pos = findPos(owner ? owner : (evt.srcElement ? evt.srcElement : evt.target)); |
|||
var posx = pos[0]; |
|||
var posy = pos[1]; |
|||
|
|||
var el = document.getElementById(name); |
|||
var parent = (document.documentElement == null) ? document.body : document.documentElement; |
|||
el.style.position = "absolute"; |
|||
el.style.left = posx + "px"; |
|||
el.style.top = posy + "px"; |
|||
el.style.display = "block"; |
|||
} |
|||
@ -1,35 +1,35 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
<head> |
|||
<meta charset="utf-8"> |
|||
<!-- |
|||
The {page-title} parameters will be replaced with the |
|||
document title extracted from the <h1> element or |
|||
file name, if there is no <h1> heading |
|||
--> |
|||
<title>{page-title}</title> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
<script src="http://code.jquery.com/jquery-1.8.0.js"></script> |
|||
<script src="http://code.jquery.com/ui/1.8.23/jquery-ui.js"></script> |
|||
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/js/bootstrap.min.js"></script> |
|||
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap-combined.min.css" rel="stylesheet"> |
|||
<link type="text/css" rel="stylesheet" href="content/style.css" /> |
|||
<script src="content/tips.js" type="text/javascript"></script> |
|||
<!-- HTML5 shim, for IE6-8 support of HTML5 elements --> |
|||
<!--[if lt IE 9]> |
|||
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> |
|||
<![endif]--> |
|||
</head> |
|||
<body> |
|||
<div class="container"> |
|||
<div class="row" style="margin-top:30px"> |
|||
<div class="span1"></div> |
|||
<div class="span10" id="main"> |
|||
{document} |
|||
{tooltips} |
|||
</div> |
|||
<div class="span1"></div> |
|||
</div> |
|||
</div> |
|||
</body> |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
<head> |
|||
<meta charset="utf-8"> |
|||
<!-- |
|||
The {page-title} parameters will be replaced with the |
|||
document title extracted from the <h1> element or |
|||
file name, if there is no <h1> heading |
|||
--> |
|||
<title>{page-title}</title> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
<script src="http://code.jquery.com/jquery-1.8.0.js"></script> |
|||
<script src="http://code.jquery.com/ui/1.8.23/jquery-ui.js"></script> |
|||
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/js/bootstrap.min.js"></script> |
|||
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap-combined.min.css" rel="stylesheet"> |
|||
<link type="text/css" rel="stylesheet" href="content/style.css" /> |
|||
<script src="content/tips.js" type="text/javascript"></script> |
|||
<!-- HTML5 shim, for IE6-8 support of HTML5 elements --> |
|||
<!--[if lt IE 9]> |
|||
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> |
|||
<![endif]--> |
|||
</head> |
|||
<body> |
|||
<div class="container"> |
|||
<div class="row" style="margin-top:30px"> |
|||
<div class="span1"></div> |
|||
<div class="span10" id="main"> |
|||
{document} |
|||
{tooltips} |
|||
</div> |
|||
<div class="span1"></div> |
|||
</div> |
|||
</div> |
|||
</body> |
|||
</html> |
|||
@ -1,62 +1,62 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
<head> |
|||
<meta charset="utf-8"> |
|||
<!-- |
|||
The {page-title} parameters will be replaced with the |
|||
document title extracted from the <h1> element or |
|||
file name, if there is no <h1> heading |
|||
--> |
|||
<title>{page-title}</title> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
<meta name="description" content="{page-description}"> |
|||
<meta name="author" content="{page-author}"> |
|||
<script src="http://code.jquery.com/jquery-1.8.0.js"></script> |
|||
<script src="http://code.jquery.com/ui/1.8.23/jquery-ui.js"></script> |
|||
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/js/bootstrap.min.js"></script> |
|||
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap-combined.min.css" rel="stylesheet"> |
|||
<link type="text/css" rel="stylesheet" href="content/style.css" /> |
|||
<script src="content/tips.js" type="text/javascript"></script> |
|||
<!-- HTML5 shim, for IE6-8 support of HTML5 elements --> |
|||
<!--[if lt IE 9]> |
|||
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> |
|||
<![endif]--> |
|||
</head> |
|||
<body> |
|||
<div class="container"> |
|||
<div class="masthead"> |
|||
<ul class="nav nav-pills pull-right"> |
|||
<li><a href="http://fsharp.org">fsharp.org</a></li> |
|||
<li><a href="{github-link}">github page</a></li> |
|||
</ul> |
|||
<h3 class="muted">{project-name}</h3> |
|||
</div> |
|||
<hr /> |
|||
<div class="row"> |
|||
<div class="span9" id="main"> |
|||
{document} |
|||
{tooltips} |
|||
</div> |
|||
<div class="span3"> |
|||
|
|||
<ul class="nav nav-list" id="menu"> |
|||
<li class="nav-header">{project-name}</li> |
|||
<li><a href="../index.html">Home page</a></li> |
|||
<!-- |
|||
|
|||
Here you can add links to other pages of the documentation |
|||
The 'divider' element creates a separator and additional |
|||
'nav-header' can be used to add sub-headings in the menu: |
|||
|
|||
* <li class="divider"></li> |
|||
* <li><a href="...">...</a></li> |
|||
* <li class="nav-header">Sub-heading</li> |
|||
|
|||
--> |
|||
</ul> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<a href="{github-link}"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" alt="Fork me on GitHub"></a> |
|||
</body> |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
<head> |
|||
<meta charset="utf-8"> |
|||
<!-- |
|||
The {page-title} parameters will be replaced with the |
|||
document title extracted from the <h1> element or |
|||
file name, if there is no <h1> heading |
|||
--> |
|||
<title>{page-title}</title> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
<meta name="description" content="{page-description}"> |
|||
<meta name="author" content="{page-author}"> |
|||
<script src="http://code.jquery.com/jquery-1.8.0.js"></script> |
|||
<script src="http://code.jquery.com/ui/1.8.23/jquery-ui.js"></script> |
|||
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/js/bootstrap.min.js"></script> |
|||
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap-combined.min.css" rel="stylesheet"> |
|||
<link type="text/css" rel="stylesheet" href="content/style.css" /> |
|||
<script src="content/tips.js" type="text/javascript"></script> |
|||
<!-- HTML5 shim, for IE6-8 support of HTML5 elements --> |
|||
<!--[if lt IE 9]> |
|||
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> |
|||
<![endif]--> |
|||
</head> |
|||
<body> |
|||
<div class="container"> |
|||
<div class="masthead"> |
|||
<ul class="nav nav-pills pull-right"> |
|||
<li><a href="http://fsharp.org">fsharp.org</a></li> |
|||
<li><a href="{github-link}">github page</a></li> |
|||
</ul> |
|||
<h3 class="muted">{project-name}</h3> |
|||
</div> |
|||
<hr /> |
|||
<div class="row"> |
|||
<div class="span9" id="main"> |
|||
{document} |
|||
{tooltips} |
|||
</div> |
|||
<div class="span3"> |
|||
|
|||
<ul class="nav nav-list" id="menu"> |
|||
<li class="nav-header">{project-name}</li> |
|||
<li><a href="../index.html">Home page</a></li> |
|||
<!-- |
|||
|
|||
Here you can add links to other pages of the documentation |
|||
The 'divider' element creates a separator and additional |
|||
'nav-header' can be used to add sub-headings in the menu: |
|||
|
|||
* <li class="divider"></li> |
|||
* <li><a href="...">...</a></li> |
|||
* <li class="nav-header">Sub-heading</li> |
|||
|
|||
--> |
|||
</ul> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<a href="{github-link}"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" alt="Fork me on GitHub"></a> |
|||
</body> |
|||
</html> |
|||
@ -1,22 +1,22 @@ |
|||
<?xml version="1.0"?> |
|||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> |
|||
<metadata> |
|||
<id>FsUnit</id> |
|||
<version>1.2.1.0</version> |
|||
<title>FsUnit</title> |
|||
<authors>Ray Vernagus and Daniel Mohl</authors> |
|||
<owners>Ray Vernagus and Daniel Mohl</owners> |
|||
<licenseUrl>http://fsunit.codeplex.com/license</licenseUrl> |
|||
<projectUrl>http://fsunit.codeplex.com/</projectUrl> |
|||
<requireLicenseAcceptance>false</requireLicenseAcceptance> |
|||
<description>FsUnit is a set of extensions that add special testing syntax to NUnit.</description> |
|||
<summary>The goals of FsUnit are to make unit-testing feel more functional while leverage existing testing frameworks.</summary> |
|||
<releaseNotes /> |
|||
<copyright /> |
|||
<language>en-US</language> |
|||
<tags>F# fsharp NUnit FsUnit</tags> |
|||
<dependencies> |
|||
<dependency id="NUnit" version="2.6.2" /> |
|||
</dependencies> |
|||
</metadata> |
|||
<?xml version="1.0"?> |
|||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> |
|||
<metadata> |
|||
<id>FsUnit</id> |
|||
<version>1.2.1.0</version> |
|||
<title>FsUnit</title> |
|||
<authors>Ray Vernagus and Daniel Mohl</authors> |
|||
<owners>Ray Vernagus and Daniel Mohl</owners> |
|||
<licenseUrl>http://fsunit.codeplex.com/license</licenseUrl> |
|||
<projectUrl>http://fsunit.codeplex.com/</projectUrl> |
|||
<requireLicenseAcceptance>false</requireLicenseAcceptance> |
|||
<description>FsUnit is a set of extensions that add special testing syntax to NUnit.</description> |
|||
<summary>The goals of FsUnit are to make unit-testing feel more functional while leverage existing testing frameworks.</summary> |
|||
<releaseNotes /> |
|||
<copyright /> |
|||
<language>en-US</language> |
|||
<tags>F# fsharp NUnit FsUnit</tags> |
|||
<dependencies> |
|||
<dependency id="NUnit" version="2.6.2" /> |
|||
</dependencies> |
|||
</metadata> |
|||
</package> |
|||
@ -1,27 +1,27 @@ |
|||
<?xml version="1.0"?> |
|||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> |
|||
<metadata> |
|||
<id>NUnit</id> |
|||
<version>2.6.3</version> |
|||
<title>NUnit</title> |
|||
<authors>Charlie Poole</authors> |
|||
<owners>Charlie Poole</owners> |
|||
<licenseUrl>http://nunit.org/nuget/license.html</licenseUrl> |
|||
<projectUrl>http://nunit.org/</projectUrl> |
|||
<iconUrl>http://nunit.org/nuget/nunit_32x32.png</iconUrl> |
|||
<requireLicenseAcceptance>false</requireLicenseAcceptance> |
|||
<description>NUnit features a fluent assert syntax, parameterized, generic and theory tests and is user-extensible. A number of runners, both from the NUnit project and by third parties, are able to execute NUnit tests. |
|||
|
|||
Version 2.6 is the seventh major release of this well-known and well-tested programming tool. |
|||
|
|||
This package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner.</description> |
|||
<summary>NUnit is a unit-testing framework for all .Net languages with a strong TDD focus.</summary> |
|||
<releaseNotes>Version 2.6 is the seventh major release of NUnit. |
|||
|
|||
Unlike earlier versions, this package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner. |
|||
|
|||
The nunit.mocks assembly is now provided by the NUnit.Mocks package. The pnunit.framework assembly is provided by the pNUnit package.</releaseNotes> |
|||
<language>en-US</language> |
|||
<tags>nunit test testing tdd framework fluent assert theory plugin addin</tags> |
|||
</metadata> |
|||
<?xml version="1.0"?> |
|||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> |
|||
<metadata> |
|||
<id>NUnit</id> |
|||
<version>2.6.3</version> |
|||
<title>NUnit</title> |
|||
<authors>Charlie Poole</authors> |
|||
<owners>Charlie Poole</owners> |
|||
<licenseUrl>http://nunit.org/nuget/license.html</licenseUrl> |
|||
<projectUrl>http://nunit.org/</projectUrl> |
|||
<iconUrl>http://nunit.org/nuget/nunit_32x32.png</iconUrl> |
|||
<requireLicenseAcceptance>false</requireLicenseAcceptance> |
|||
<description>NUnit features a fluent assert syntax, parameterized, generic and theory tests and is user-extensible. A number of runners, both from the NUnit project and by third parties, are able to execute NUnit tests. |
|||
|
|||
Version 2.6 is the seventh major release of this well-known and well-tested programming tool. |
|||
|
|||
This package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner.</description> |
|||
<summary>NUnit is a unit-testing framework for all .Net languages with a strong TDD focus.</summary> |
|||
<releaseNotes>Version 2.6 is the seventh major release of NUnit. |
|||
|
|||
Unlike earlier versions, this package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner. |
|||
|
|||
The nunit.mocks assembly is now provided by the NUnit.Mocks package. The pnunit.framework assembly is provided by the pNUnit package.</releaseNotes> |
|||
<language>en-US</language> |
|||
<tags>nunit test testing tdd framework fluent assert theory plugin addin</tags> |
|||
</metadata> |
|||
</package> |
|||
Loading…
Reference in new issue