本文整理汇总了C#中Monodoc.HelpSource类的典型用法代码示例。如果您正苦于以下问题:C# HelpSource类的具体用法?C# HelpSource怎么用?C# HelpSource使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
HelpSource类属于Monodoc命名空间,在下文中一共展示了HelpSource类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetHtml
public static string GetHtml (string url, HelpSource helpSource, out Node match)
{
string htmlContent = null;
match = null;
if (helpSource != null)
htmlContent = AppDelegate.Root.RenderUrl (url, generator, out match, helpSource);
if (htmlContent == null) {
// the displayed url have a lower case type code (e.g. t: instead of T:) which confuse monodoc
if (url.Length > 2 && url[1] == ':')
url = char.ToUpperInvariant (url[0]) + url.Substring (1);
// It may also be url encoded so decode it
url = Uri.UnescapeDataString (url);
htmlContent = AppDelegate.Root.RenderUrl (url, generator, out match, helpSource);
if (htmlContent != null && match != null && match.Tree != null)
helpSource = match.Tree.HelpSource;
}
if (htmlContent == null)
return null;
var html = new StringWriter ();
html.Write ("<html>\n<head><title>{0}</title>", url);
if (helpSource != null) {
if (HtmlGenerator.InlineCss != null)
html.Write (" <style type=\"text/css\">{0}</style>\n", HtmlGenerator.InlineCss);
/*if (helpSource.InlineJavaScript != null)
html.Write ("<script type=\"text/JavaScript\">{0}</script>\n", helpSource.InlineJavaScript);*/
}
html.Write ("</head><body>");
html.Write (htmlContent);
html.Write ("</body></html>\n");
return html.ToString ();
}
示例2: Tree
/// <summary>
/// Load from file constructor
/// </summary>
public Tree (HelpSource hs, string filename)
{
HelpSource = hs;
Encoding utf8 = new UTF8Encoding (false, true);
if (!File.Exists (filename)){
throw new FileNotFoundException ();
}
InputStream = File.OpenRead (filename);
InputReader = new BinaryReader (InputStream, utf8);
byte [] sig = InputReader.ReadBytes (4);
if (!GoodSig (sig))
throw new Exception ("Invalid file format");
InputStream.Position = 4;
// Try to read version information
if (InputReader.ReadInt32 () == -(int)'v')
VersionNumber = InputReader.ReadInt64 ();
else
InputStream.Position -= 4;
var position = InputReader.ReadInt32 ();
rootNode = new Node (this, position);
InflateNode (rootNode);
}
示例3: GetHtml
public static string GetHtml (string url, HelpSource helpSource, out Node match)
{
string htmlContent = null;
match = null;
if (helpSource != null)
htmlContent = helpSource.GetText (url, out match);
if (htmlContent == null){
htmlContent = AppDelegate.Root.RenderUrl (url, out match);
if (htmlContent != null && match != null && match.tree != null){
helpSource = match.tree.HelpSource;
}
}
if (htmlContent == null)
return null;
var html = new StringWriter ();
html.Write ("<html>\n<head><title>{0}</title>", url);
if (helpSource != null){
if (helpSource.InlineCss != null)
html.Write (" <style type=\"text/css\">{0}</style>\n", helpSource.InlineCss);
if (helpSource.InlineJavaScript != null)
html.Write ("<script type=\"text/JavaScript\">{0}</script>\n", helpSource.InlineJavaScript);
}
html.Write ("</head><body>");
html.Write (htmlContent);
html.Write ("</body></html>\n");
return html.ToString ();
}
示例4: Tree
/// <summary>
/// Load from file constructor
/// </summary>
public Tree (HelpSource hs, string filename)
#if LEGACY_MODE
: base (null, null)
#endif
{
HelpSource = hs;
Encoding utf8 = new UTF8Encoding (false, true);
if (!File.Exists (filename)){
throw new FileNotFoundException ();
}
InputStream = File.OpenRead (filename);
InputReader = new BinaryReader (InputStream, utf8);
byte [] sig = InputReader.ReadBytes (4);
if (!GoodSig (sig))
throw new Exception ("Invalid file format");
InputStream.Position = 4;
// Try to read old version information
if (InputReader.ReadInt32 () == VersionNumberKey)
VersionNumber = InputReader.ReadInt64 ();
else {
// We try to see if there is a version number at the end of the file
InputStream.Seek (-(4 + 8), SeekOrigin.End); // VersionNumberKey + long
try {
if (InputReader.ReadInt32 () == VersionNumberKey)
VersionNumber = InputReader.ReadInt64 ();
} catch {}
// We set the stream back at the beginning of the node definition list
InputStream.Position = 4;
}
var position = InputReader.ReadInt32 ();
#if !LEGACY_MODE
rootNode = new Node (this, position);
#else
Address = position;
#endif
InflateNode (RootNode);
}
示例5: Tree
/// <summary>
/// Load from file constructor
/// </summary>
public Tree (HelpSource hs, string filename) : base (null, null)
{
Encoding utf8 = new UTF8Encoding (false, true);
if (!File.Exists (filename)){
throw new FileNotFoundException ();
}
InputStream = File.OpenRead (filename);
InputReader = new BinaryReader (InputStream, utf8);
byte [] sig = InputReader.ReadBytes (4);
if (!GoodSig (sig))
throw new Exception ("Invalid file format");
InputStream.Position = 4;
position = InputReader.ReadInt32 ();
LoadNode ();
HelpSource = hs;
}
示例6: GetHtml
public static string GetHtml (string url, HelpSource helpSource, out Node match)
{
Console.WriteLine ("Calling URL {0} with HelpSource {1}", url, helpSource == null ? "(null)" : helpSource.Name);
string htmlContent = null;
match = null;
if (helpSource != null)
htmlContent = helpSource.GetText (url, out match);
if (htmlContent == null){
// the displayed url have a lower case type code (e.g. t: instead of T:) which confuse monodoc
if (url.Length > 2 && url[1] == ':')
url = char.ToUpperInvariant (url[0]) + url.Substring (1);
// It may also be url encoded so decode it
url = Uri.UnescapeDataString (url);
htmlContent = Program.Root.RenderUrl (url, out match);
if (htmlContent != null && match != null && match.tree != null){
helpSource = match.tree.HelpSource;
}
}
if (htmlContent == null)
return null;
var html = new StringWriter ();
html.Write ("<html>\n<head><title>{0}</title>", url);
if (helpSource != null){
if (helpSource.InlineCss != null)
html.Write (" <style type=\"text/css\">{0}</style>\n", helpSource.InlineCss);
if (helpSource.InlineJavaScript != null)
html.Write ("<script type=\"text/JavaScript\">{0}</script>\n", helpSource.InlineJavaScript);
}
html.Write ("</head><body>");
html.Write (htmlContent);
html.Write ("</body></html>\n");
return html.ToString ();
}
示例7: CloseTree
//
// Called at shutdown time after the tree has been populated to perform
// any fixups or final tasks.
//
public abstract void CloseTree (HelpSource hs, Tree tree);
示例8: Run
public override void Run (IEnumerable<string> args)
{
var formats = new Dictionary<string, List<string>> ();
string prefix = "tree";
var formatOptions = CreateFormatOptions (this, formats);
var options = new OptionSet () {
formatOptions [0],
{ "o|out=",
"Provides the output file prefix; the files {PREFIX}.zip and " +
"{PREFIX}.tree will be created.\n" +
"If not specified, `tree' is the default PREFIX.",
v => prefix = v },
formatOptions [1],
};
List<string> extra = Parse (options, args, "assemble",
"[OPTIONS]+ DIRECTORIES",
"Assemble documentation within DIRECTORIES for use within the monodoc browser.");
if (extra == null)
return;
List<Provider> list = new List<Provider> ();
EcmaProvider ecma = null;
bool sort = false;
foreach (string format in formats.Keys) {
switch (format) {
case "ecma":
if (ecma == null) {
ecma = new EcmaProvider ();
list.Add (ecma);
sort = true;
}
foreach (string dir in formats [format])
ecma.AddDirectory (dir);
break;
case "xhtml":
case "hb":
list.AddRange (formats [format].Select (d => (Provider) new XhtmlProvider (d)));
break;
case "man":
list.Add (new ManProvider (formats [format].ToArray ()));
break;
case "simple":
list.AddRange (formats [format].Select (d => (Provider) new SimpleProvider (d)));
break;
case "error":
list.AddRange (formats [format].Select (d => (Provider) new ErrorProvider (d)));
break;
case "ecmaspec":
list.AddRange (formats [format].Select (d => (Provider) new EcmaSpecProvider (d)));
break;
case "addins":
list.AddRange (formats [format].Select (d => (Provider) new AddinsProvider (d)));
break;
}
}
HelpSource hs = new HelpSource (prefix, true);
hs.TraceLevel = TraceLevel;
foreach (Provider p in list) {
p.PopulateTree (hs.Tree);
}
if (sort && hs.Tree != null)
hs.Tree.Sort ();
//
// Flushes the EcmaProvider
//
foreach (Provider p in list)
p.CloseTree (hs, hs.Tree);
hs.Save ();
}
示例9: CloseTree
//
// Packs a file with the summary data
//
public override void CloseTree (HelpSource hs, Tree tree)
{
foreach (DictionaryEntry de in class_summaries){
XmlDocument doc = new XmlDocument ();
string ns = (string) de.Key;
ArrayList list = (ArrayList) de.Value;
list.Sort();
XmlElement elements = doc.CreateElement ("elements");
doc.AppendChild (elements);
if (namespace_summaries [ns] != null)
elements.AppendChild (doc.ImportNode ((XmlNode)namespace_summaries [ns],true));
else
elements.AppendChild (doc.CreateElement("summary"));
if (namespace_remarks [ns] != null)
elements.AppendChild (doc.ImportNode ((XmlNode)namespace_remarks [ns],true));
else
elements.AppendChild (doc.CreateElement("remarks"));
hs.Message (TraceLevel.Info, "Have {0} elements in the {1}", list.Count, ns);
foreach (TypeInfo p in list){
XmlElement e = null;
switch (p.type_kind){
case "Class":
e = doc.CreateElement ("class");
break;
case "Enumeration":
e = doc.CreateElement ("enum");
break;
case "Structure":
e = doc.CreateElement ("struct");
break;
case "Delegate":
e = doc.CreateElement ("delegate");
break;
case "Interface":
e = doc.CreateElement ("interface");
break;
}
e.SetAttribute ("name", p.type_name);
e.SetAttribute ("fullname", p.type_full);
e.SetAttribute ("assembly", p.type_assembly);
XmlNode copy = doc.ImportNode (p.type_doc, true);
e.AppendChild (copy);
elements.AppendChild (e);
}
hs.PackXml ("xml.summary." + ns, doc,(string) namespace_realpath[ns]);
}
XmlDocument nsSummary = new XmlDocument ();
XmlElement root = nsSummary.CreateElement ("elements");
nsSummary.AppendChild (root);
foreach (DictionaryEntry de in namespace_summaries) {
XmlNode n = (XmlNode)de.Value;
XmlElement summary = nsSummary.CreateElement ("namespace");
summary.SetAttribute ("ns", (string)de.Key);
root.AppendChild (summary);
if (n != null)
summary.AppendChild (nsSummary.ImportNode (n,true));
else
summary.AppendChild (nsSummary.CreateElement("summary"));
}
tree.HelpSource.PackXml ("mastersummary.xml", nsSummary, null);
AddExtensionMethods (tree);
AddImageFiles (hs, tree);
}
示例10: CloseTree
public override void CloseTree (HelpSource hs, Tree tree)
{
Hashtable entries = config.Compile ();
MemoryStream ms = new MemoryStream ();
XmlSerializer writer = new XmlSerializer (typeof (ErrorDocumentation));
foreach (DictionaryEntry de in entries) {
ErrorDocumentation d = (ErrorDocumentation)de.Value;
string s = (string)de.Key;
tree.LookupNode (s, "error:" + s);
writer.Serialize (ms, d);
ms.Position = 0;
hs.PackStream (ms, s);
ms.SetLength (0);
}
tree.Sort ();
}
示例11: Run
public override void Run (IEnumerable<string> args)
{
bool replaceNTypes = false;
var formats = new Dictionary<string, List<string>> ();
string prefix = "tree";
var formatOptions = CreateFormatOptions (this, formats);
var options = new OptionSet () {
formatOptions [0],
{ "o|out=",
"Provides the output file prefix; the files {PREFIX}.zip and " +
"{PREFIX}.tree will be created.\n" +
"If not specified, `tree' is the default PREFIX.",
v => prefix = v },
formatOptions [1],
{"dropns=","The namespace that has been dropped from this version of the assembly.", v => droppedNamespace = v },
{"ntypes","Replace references to native types with their original types.", v => replaceNTypes=true },
};
List<string> extra = Parse (options, args, "assemble",
"[OPTIONS]+ DIRECTORIES",
"Assemble documentation within DIRECTORIES for use within the monodoc browser.");
if (extra == null)
return;
List<Provider> list = new List<Provider> ();
EcmaProvider ecma = null;
bool sort = false;
foreach (string format in formats.Keys) {
switch (format) {
case "ecma":
if (ecma == null) {
ecma = new EcmaProvider ();
list.Add (ecma);
sort = true;
}
ecma.FileSource = new MDocFileSource(droppedNamespace, string.IsNullOrWhiteSpace(droppedNamespace) ? ApiStyle.Unified : ApiStyle.Classic) {
ReplaceNativeTypes = replaceNTypes
};
foreach (string dir in formats [format])
ecma.AddDirectory (dir);
break;
case "xhtml":
case "hb":
list.AddRange (formats [format].Select (d => (Provider) new XhtmlProvider (d)));
break;
case "man":
list.Add (new ManProvider (formats [format].ToArray ()));
break;
case "error":
list.AddRange (formats [format].Select (d => (Provider) new ErrorProvider (d)));
break;
case "ecmaspec":
list.AddRange (formats [format].Select (d => (Provider) new EcmaSpecProvider (d)));
break;
case "addins":
list.AddRange (formats [format].Select (d => (Provider) new AddinsProvider (d)));
break;
}
}
HelpSource hs = new HelpSource (prefix, true);
hs.TraceLevel = TraceLevel;
foreach (Provider p in list) {
p.PopulateTree (hs.Tree);
}
if (sort && hs.Tree != null)
hs.Tree.RootNode.Sort ();
//
// Flushes the EcmaProvider
//
foreach (Provider p in list)
p.CloseTree (hs, hs.Tree);
hs.Save ();
}
示例12: LoadUrl
void LoadUrl (string url, bool syncTreeView = false, HelpSource source = null, bool addToHistory = true)
{
if (url == currentUrl)
return;
if (url.StartsWith ("#")) {
Console.WriteLine ("FIXME: Anchor jump");
return;
}
// In case user click on an external link e.g. [Android documentation] link at bottom of MonoDroid docs
if (url.StartsWith ("http://") || url.StartsWith ("https://")) {
UrlLauncher.Launch (url);
return;
}
var ts = Interlocked.Increment (ref loadUrlTimestamp);
Task.Factory.StartNew (() => {
Node node;
var res = DocTools.GetHtml (url, source, out node);
return new { Node = node, Html = res };
}).ContinueWith (t => {
var node = t.Result.Node;
var res = t.Result.Html;
if (res != null) {
BeginInvoke (new Action (() => {
if (ts < loadUrlTimestamp)
return;
Text = currentUrl = node == null ? url : node.PublicUrl;
if (addToHistory)
history.AppendHistory (new LinkPageVisit (this, currentUrl));
LoadHtml (res);
this.match = node;
if (syncTreeView) {
if (tabContainer.SelectedIndex == 0 && match != null) {
if (ShowNodeInTree (match))
docTree.SelectedNode = nodeToTreeNodeMap[match];
} else {
tabContainer.SelectedIndex = 0;
}
}
// Bookmark spinner management
var bookmarkIndex = Program.BookmarkManager.FindIndexOfBookmarkFromUrl (url);
if (bookmarkIndex == -1 || bookmarkIndex < bookmarkSelector.Items.Count)
bookmarkSelector.SelectedIndex = bookmarkIndex;
}));
}
});
}
示例13: Main
public static int Main (string [] args)
{
string output = "tree";
HelpSource hs;
ArrayList list = new ArrayList ();
EcmaProvider ecma = null;
bool sort = false;
int argc = args.Length;
for (int i = 0; i < argc; i++){
string arg = args [i];
switch (arg){
case "-o": case "--out":
if (i < argc)
output = args [++i];
else {
Usage ();
return 1;
}
break;
case "--ecma":
if (i < argc){
if (ecma == null) {
ecma = new EcmaProvider ();
list.Add (ecma);
sort = true;
}
ecma.AddDirectory (args [++i]);
} else {
Usage ();
return 1;
}
break;
case "--xhtml":
case "--hb":
if (i < argc){
Provider populator = new XhtmlProvider (args [++i]);
list.Add (populator);
} else {
Usage ();
return 1;
}
break;
case "--man":
if (i < argc){
int countfiles = args.Length - ++i;
string[] xmlfiles = new String[countfiles];
for (int a = 0;a< countfiles;a++) {
xmlfiles[a] = args [i];
i++;
}
Provider populator = new ManProvider (xmlfiles);
list.Add (populator);
} else {
Usage ();
return 1;
}
break;
case "--simple":
if (i < argc){
Provider populator = new SimpleProvider (args [++i]);
list.Add (populator);
} else {
Usage ();
return 1;
}
break;
case "--error":
if (i < argc){
Provider populator = new ErrorProvider (args [++i]);
list.Add (populator);
} else {
Usage ();
return 1;
}
break;
case "--ecmaspec":
if (i < argc){
Provider populator = new EcmaSpecProvider (args [++i]);
list.Add (populator);
} else {
Usage ();
return 1;
}
break;
case "--addins":
if (i < argc){
Provider populator = new AddinsProvider (args [++i]);
list.Add (populator);
//.........这里部分代码省略.........
示例14: LoadUrl
internal void LoadUrl (string url, bool syncTreeView = false, HelpSource source = null, bool addToHistory = true)
{
if (url.StartsWith ("#")) {
Console.WriteLine ("FIXME: Anchor jump");
return;
}
var ts = Interlocked.Increment (ref loadUrlTimestamp);
Task.Factory.StartNew (() => {
Node node;
var res = DocTools.GetHtml (url, source, out node);
return new { Node = node, Html = res };
}).ContinueWith (t => {
var node = t.Result.Node;
var res = t.Result.Html;
if (res != null){
BeginInvokeOnMainThread (() => {
if (ts < loadUrlTimestamp)
return;
currentUrl = node == null ? url : node.PublicUrl;
if (addToHistory)
history.AppendHistory (new LinkPageVisit (this, currentUrl));
LoadHtml (res);
if (syncTreeView) {
// When navigation occurs after a link on search result is clicked
// we need to show the panel so that ShowNode work as expected
tabSelector.SelectAt (0);
this.match = node;
}
// Bookmark spinner management
if (currentBookmarkIndex != -1) {
bookmarkSelector.SelectItem (currentBookmarkIndex);
currentBookmarkIndex = -1;
} else {
bookmarkSelector.SelectItem (-1);
}
});
}
});
}
示例15: Compile
public Hashtable Compile (HelpSource hs)
{
string [] files = Directory.GetFiles (FilesPath, Match);
Hashtable ret = new Hashtable ();
foreach (string s in files) {
ErrorDocumentation d;
hs.Message (TraceLevel.Info, s);
int errorNum = 0;
try {
errorNum = int.Parse (Path.GetFileName (s).Substring (ErrorNumSubstringStart, ErrorNumSubstringLength));
} catch {
hs.Message (TraceLevel.Info, "Ignoring file {0}", s);
}
string errorName = String.Format (FriendlyFormatString, errorNum);
d = (ErrorDocumentation)ret [errorName];
if (d == null)
ret [errorName] = d = new ErrorDocumentation (errorName);
if (d.Details == null) {
string xmlFile = Path.ChangeExtension (s, "xml");
hs.Message (TraceLevel.Verbose, xmlFile);
if (File.Exists (xmlFile)) {
XmlSerializer cfgRdr = new XmlSerializer (typeof (ErrorDetails));
d.Details = (ErrorDetails)cfgRdr.Deserialize (new XmlTextReader (xmlFile));
}
}
// Encoding is same as used in MCS, so we will be able to do all those files
using (StreamReader reader = new StreamReader (s, Encoding.GetEncoding (28591))) {
d.Examples.Add (reader.ReadToEnd ());
}
}
return ret;
}