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